summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--AUTHORS7
-rw-r--r--HACKING107
-rw-r--r--Makefile.am14
-rw-r--r--NEWS14
-rw-r--r--TODO.aaron14
-rw-r--r--TODO.dan49
-rw-r--r--TRANSLATORS36
-rw-r--r--acinclude.m42123
-rwxr-xr-xconfig.guess4
-rwxr-xr-xconfig.sub6
-rw-r--r--configure.ac398
-rw-r--r--contrib/.gitignore2
-rw-r--r--contrib/Makefile.am8
-rw-r--r--contrib/PKGBUILD.proto35
-rw-r--r--contrib/PKGBUILD.vim233
-rw-r--r--contrib/README18
-rw-r--r--contrib/bash_completion57
-rw-r--r--contrib/install.proto40
-rwxr-xr-x[-rw-r--r--]contrib/pacdiff0
-rwxr-xr-xcontrib/pacsearch2
-rwxr-xr-xcontrib/re-pacman2
-rw-r--r--contrib/vimproject5
-rwxr-xr-xcontrib/wget-xdelta.sh70
-rw-r--r--contrib/zsh_completion16
-rw-r--r--doc/.gitignore11
-rw-r--r--doc/Doxyfile (renamed from lib/libalpm/Doxyfile)127
-rw-r--r--doc/Makefile.am71
-rw-r--r--doc/PKGBUILD-example.txt20
-rw-r--r--doc/PKGBUILD.5288
-rw-r--r--doc/PKGBUILD.5.txt309
-rw-r--r--doc/asciidoc.conf70
-rw-r--r--doc/footer.txt24
-rw-r--r--doc/libalpm.353
-rw-r--r--doc/libalpm.3.txt39
-rw-r--r--doc/makepkg.8142
-rw-r--r--doc/makepkg.8.txt151
-rw-r--r--doc/makepkg.conf.5146
-rw-r--r--doc/makepkg.conf.5.txt154
-rw-r--r--doc/pacman.8293
-rw-r--r--doc/pacman.8.txt319
-rw-r--r--doc/pacman.conf.5139
-rw-r--r--doc/pacman.conf.5.txt160
-rw-r--r--doc/repo-add.8.txt51
-rw-r--r--etc/.gitignore2
-rw-r--r--etc/Makefile.am36
-rw-r--r--etc/abs/Makefile.am19
-rw-r--r--etc/abs/supfile.community2
-rw-r--r--etc/abs/supfile.core2
-rw-r--r--etc/abs/supfile.extra2
-rw-r--r--etc/abs/supfile.testing2
-rw-r--r--etc/abs/supfile.unstable2
-rw-r--r--etc/makepkg.conf.in48
-rw-r--r--etc/pacman.conf.in19
-rw-r--r--etc/pacman.d/.gitignore8
-rw-r--r--etc/pacman.d/Makefile.am18
-rw-r--r--etc/pacman.d/mirrorlist.in97
-rw-r--r--lib/libalpm/.gitignore2
-rw-r--r--lib/libalpm/Makefile.am28
-rw-r--r--lib/libalpm/add.c1255
-rw-r--r--lib/libalpm/add.h6
-rw-r--r--lib/libalpm/alpm.c1153
-rw-r--r--lib/libalpm/alpm.h220
-rw-r--r--lib/libalpm/alpm_list.c498
-rw-r--r--lib/libalpm/alpm_list.h58
-rw-r--r--lib/libalpm/backup.c18
-rw-r--r--lib/libalpm/backup.h8
-rw-r--r--lib/libalpm/be_files.c291
-rw-r--r--lib/libalpm/cache.c47
-rw-r--r--lib/libalpm/cache.h6
-rw-r--r--lib/libalpm/conflict.c408
-rw-r--r--lib/libalpm/conflict.h19
-rw-r--r--lib/libalpm/db.c594
-rw-r--r--lib/libalpm/db.h25
-rw-r--r--lib/libalpm/delta.c266
-rw-r--r--lib/libalpm/delta.h (renamed from src/pacman/upgrade.c)46
-rw-r--r--lib/libalpm/deps.c858
-rw-r--r--lib/libalpm/deps.h29
-rw-r--r--lib/libalpm/error.c33
-rw-r--r--lib/libalpm/error.h8
-rw-r--r--lib/libalpm/group.c18
-rw-r--r--lib/libalpm/group.h11
-rw-r--r--lib/libalpm/handle.c483
-rw-r--r--lib/libalpm/handle.h75
-rw-r--r--lib/libalpm/log.c82
-rw-r--r--lib/libalpm/log.h12
-rw-r--r--lib/libalpm/md5.c566
-rw-r--r--lib/libalpm/md5.h104
-rw-r--r--lib/libalpm/md5driver.c80
-rw-r--r--lib/libalpm/package.c1299
-rw-r--r--lib/libalpm/package.h40
-rw-r--r--lib/libalpm/po/.gitignore2
-rw-r--r--lib/libalpm/po/POTFILES.in6
-rw-r--r--lib/libalpm/po/de.po1617
-rw-r--r--lib/libalpm/po/en_GB.po1586
-rw-r--r--lib/libalpm/po/es.po1633
-rw-r--r--lib/libalpm/po/fr.po1755
-rw-r--r--lib/libalpm/po/hu.po1606
-rw-r--r--lib/libalpm/po/it.po1616
-rw-r--r--lib/libalpm/po/libalpm.pot1331
-rw-r--r--lib/libalpm/po/pl_PL.po1621
-rw-r--r--lib/libalpm/po/pt_BR.po1492
-rw-r--r--lib/libalpm/po/ru_RU.po1552
-rw-r--r--lib/libalpm/provide.c58
-rw-r--r--lib/libalpm/provide.h32
-rw-r--r--lib/libalpm/remove.c211
-rw-r--r--lib/libalpm/remove.h6
-rw-r--r--lib/libalpm/server.c252
-rw-r--r--lib/libalpm/server.h18
-rw-r--r--lib/libalpm/sha1.c419
-rw-r--r--lib/libalpm/sha1.h72
-rw-r--r--lib/libalpm/sync.c1297
-rw-r--r--lib/libalpm/sync.h14
-rw-r--r--lib/libalpm/trans.c481
-rw-r--r--lib/libalpm/trans.h19
-rw-r--r--lib/libalpm/util.c670
-rw-r--r--lib/libalpm/util.h77
-rw-r--r--lib/libalpm/versioncmp.c295
-rw-r--r--lib/libalpm/versioncmp.h33
-rw-r--r--ltmain.sh233
-rw-r--r--pactest/.gitignore3
-rw-r--r--pactest/Makefile.am2
-rw-r--r--pactest/TODO2
-rwxr-xr-xpactest/pmdb.py32
-rwxr-xr-xpactest/pmenv.py6
-rwxr-xr-xpactest/pmpkg.py26
-rwxr-xr-xpactest/pmrule.py49
-rwxr-xr-xpactest/pmtest.py9
-rw-r--r--pactest/tests/add030.py18
-rw-r--r--pactest/tests/add031.py18
-rw-r--r--pactest/tests/add032.py18
-rw-r--r--pactest/tests/add043.py15
-rw-r--r--pactest/tests/add044.py15
-rw-r--r--pactest/tests/add045.py15
-rw-r--r--pactest/tests/depconflict100.py15
-rw-r--r--pactest/tests/depconflict110.py13
-rw-r--r--pactest/tests/depconflict111.py13
-rw-r--r--pactest/tests/depconflict120.py19
-rw-r--r--pactest/tests/deptest001.py20
-rw-r--r--pactest/tests/fileconflict001.py20
-rw-r--r--pactest/tests/fileconflict002.py16
-rw-r--r--pactest/tests/mode001.py12
-rw-r--r--pactest/tests/pacman001.py5
-rw-r--r--pactest/tests/pacman002.py5
-rw-r--r--pactest/tests/pacman003.py5
-rw-r--r--pactest/tests/pacman004.py5
-rw-r--r--pactest/tests/query001.py2
-rw-r--r--pactest/tests/query002.py23
-rw-r--r--pactest/tests/query003.py10
-rw-r--r--pactest/tests/query004.py10
-rw-r--r--pactest/tests/remove040.py2
-rw-r--r--pactest/tests/remove041.py21
-rw-r--r--pactest/tests/remove042.py17
-rw-r--r--pactest/tests/remove043.py18
-rw-r--r--pactest/tests/remove044.py16
-rw-r--r--pactest/tests/remove045.py30
-rw-r--r--pactest/tests/remove046.py10
-rw-r--r--pactest/tests/remove047.py25
-rw-r--r--pactest/tests/remove048.py10
-rw-r--r--pactest/tests/requiredby001.py20
-rw-r--r--pactest/tests/requiredby002.py16
-rw-r--r--pactest/tests/requiredby003.py16
-rw-r--r--pactest/tests/requiredby004.py20
-rw-r--r--pactest/tests/requiredby005.py21
-rw-r--r--pactest/tests/requiredby006.py21
-rw-r--r--pactest/tests/scriptlet001.py5
-rw-r--r--pactest/tests/scriptlet002.py21
-rw-r--r--pactest/tests/symlink001.py20
-rw-r--r--pactest/tests/sync011.py20
-rw-r--r--pactest/tests/sync012.py20
-rw-r--r--pactest/tests/sync030.py19
-rw-r--r--pactest/tests/sync044.py20
-rw-r--r--pactest/tests/sync060.py15
-rw-r--r--pactest/tests/sync1002.py19
-rw-r--r--pactest/tests/sync1003.py26
-rw-r--r--pactest/tests/sync1004.py18
-rw-r--r--pactest/tests/sync1005.py14
-rw-r--r--pactest/tests/sync1006.py14
-rw-r--r--pactest/tests/sync1100.py23
-rw-r--r--pactest/tests/sync1101.py11
-rw-r--r--pactest/tests/sync1102.py12
-rw-r--r--pactest/tests/sync1103.py11
-rw-r--r--pactest/tests/sync138.py22
-rw-r--r--pactest/tests/sync300.py15
-rw-r--r--pactest/tests/sync301.py25
-rw-r--r--pactest/tests/sync400.py25
-rw-r--r--pactest/tests/sync401.py21
-rw-r--r--pactest/tests/sync402.py21
-rw-r--r--pactest/tests/sync403.py21
-rw-r--r--pactest/tests/sync500.py10
-rw-r--r--pactest/tests/sync900.py28
-rw-r--r--pactest/tests/sync901.py28
-rw-r--r--pactest/tests/sync990.py7
-rw-r--r--pactest/tests/trans001.py20
-rw-r--r--pactest/tests/type001.py17
-rw-r--r--pactest/tests/upgrade010.py1
-rw-r--r--pactest/tests/upgrade020.py1
-rw-r--r--pactest/tests/upgrade021.py1
-rw-r--r--pactest/tests/upgrade022.py1
-rw-r--r--pactest/tests/upgrade023.py1
-rw-r--r--pactest/tests/upgrade024.py15
-rw-r--r--pactest/tests/upgrade025.py17
-rw-r--r--pactest/tests/upgrade031.py19
-rw-r--r--pactest/tests/upgrade056.py1
-rw-r--r--pactest/tests/upgrade059.py28
-rw-r--r--pactest/tests/upgrade060.py22
-rw-r--r--pactest/tests/upgrade061.py23
-rwxr-xr-xpactest/util.py4
-rw-r--r--po/.gitignore (renamed from src/pacman/po/.gitignore)2
-rw-r--r--po/LINGUAS (renamed from src/pacman/po/LINGUAS)0
-rw-r--r--po/Makefile.in.in (renamed from src/pacman/po/Makefile.in.in)0
-rw-r--r--po/Makevars (renamed from src/pacman/po/Makevars)2
-rw-r--r--po/POTFILES.in22
-rw-r--r--po/de.po2252
-rw-r--r--po/en_GB.po2204
-rw-r--r--po/es.po2265
-rw-r--r--po/fr.po2673
-rw-r--r--po/hu.po2134
-rw-r--r--po/it.po2231
-rw-r--r--po/pacman.pot2039
-rw-r--r--po/pl_PL.po2308
-rw-r--r--po/pt_BR.po2325
-rw-r--r--po/remove-potcdate.sin (renamed from src/pacman/po/remove-potcdate.sin)0
-rw-r--r--po/ru_RU.po2311
-rw-r--r--scripts/.gitignore9
-rw-r--r--scripts/Makefile.am62
-rw-r--r--scripts/abs77
-rw-r--r--scripts/abs.sh.in173
-rwxr-xr-xscripts/gensync128
-rw-r--r--scripts/gensync.sh.in158
-rwxr-xr-xscripts/makepkg1088
-rw-r--r--scripts/makepkg.sh.in1470
-rwxr-xr-xscripts/makeworld172
-rw-r--r--scripts/makeworld.sh.in194
-rwxr-xr-xscripts/pacman-optimize145
-rw-r--r--scripts/pacman-optimize.sh.in164
-rw-r--r--scripts/rankmirrors.py.in (renamed from scripts/rankmirrors)34
-rwxr-xr-xscripts/repo-add288
-rw-r--r--scripts/repo-add.sh.in346
-rwxr-xr-xscripts/repo-remove136
-rw-r--r--scripts/repo-remove.sh.in184
-rwxr-xr-xscripts/updatesync131
-rw-r--r--scripts/updatesync.sh.in157
-rw-r--r--src/pacman/.gitignore2
-rw-r--r--src/pacman/Makefile.am44
-rw-r--r--src/pacman/add.c205
-rw-r--r--src/pacman/add.h30
-rw-r--r--src/pacman/callback.c552
-rw-r--r--src/pacman/callback.h (renamed from src/pacman/trans.h)29
-rw-r--r--src/pacman/conf.c54
-rw-r--r--src/pacman/conf.h50
-rw-r--r--src/pacman/deptest.c35
-rw-r--r--src/pacman/deptest.h30
-rw-r--r--src/pacman/downloadprog.c167
-rw-r--r--src/pacman/downloadprog.h28
-rw-r--r--src/pacman/log.c201
-rw-r--r--src/pacman/log.h55
-rw-r--r--src/pacman/package.c172
-rw-r--r--src/pacman/package.h8
-rw-r--r--src/pacman/pacman.c787
-rw-r--r--src/pacman/pacman.h (renamed from src/pacman/upgrade.h)27
-rw-r--r--src/pacman/po/POTFILES.in16
-rw-r--r--src/pacman/po/de.po1084
-rw-r--r--src/pacman/po/en_GB.po1084
-rw-r--r--src/pacman/po/es.po1124
-rw-r--r--src/pacman/po/fr.po1459
-rw-r--r--src/pacman/po/hu.po1078
-rw-r--r--src/pacman/po/it.po1109
-rw-r--r--src/pacman/po/pacman.pot1031
-rw-r--r--src/pacman/po/pl_PL.po1093
-rw-r--r--src/pacman/po/pt_BR.po1109
-rw-r--r--src/pacman/po/ru_RU.po1090
-rw-r--r--src/pacman/query.c545
-rw-r--r--src/pacman/query.h30
-rw-r--r--src/pacman/remove.c136
-rw-r--r--src/pacman/remove.h30
-rw-r--r--src/pacman/sync.c686
-rw-r--r--src/pacman/sync.h30
-rw-r--r--src/pacman/trans.c383
-rw-r--r--src/pacman/util.c437
-rw-r--r--src/pacman/util.h60
-rw-r--r--src/util/.gitignore3
-rw-r--r--src/util/Makefile.am20
-rw-r--r--src/util/testdb.c154
-rw-r--r--src/util/testpkg.c30
-rw-r--r--src/util/vercmp.c52
-rw-r--r--submitting-patches20
-rw-r--r--valgrind.supp3
288 files changed, 42645 insertions, 37715 deletions
diff --git a/.gitignore b/.gitignore
index 5545617e..9e43c2f7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,9 +8,11 @@ config.h
config.h.in
config.log
config.status
+config.status.lineno
config.rpath
config.sub
configure
+configure.lineno
depcomp
install-sh
libtool
@@ -23,4 +25,6 @@ stamp-h1
root
tags
cscope.out
+cscope.in.out
+cscope.po.out
pacman-*.tar.gz
diff --git a/AUTHORS b/AUTHORS
index df16a8df..943df83f 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -3,11 +3,12 @@ Aurelien Foret <aurelien@archlinux.org>
Aaron Griffin <aaron@archlinux.org>
Dan McGee <dan@archlinux.org>
-Miklós Vajna <vmiklos@frugalware.org>
+Miklós Vajna <vmiklos@frugalware.org>
Christian Hamar <krics@linuxforum.hu>
-
Josh Wheeler <deltalima@gmail.com>
David Kimpe <DNAku@frugalware.org>
-
James Rosten <seinfeld90@gmail.com>
Roman Kyrylych <Roman.Kyrylych@gmail.com>
+Andrew Fyfe <andrew@neptune-one.net>
+Chantry Xavier <shiningxc@gmail.com>
+Nagy Gabor <ngaba@petra.hos.u-szeged.hu>
diff --git a/HACKING b/HACKING
index ea8936db..5ee6d064 100644
--- a/HACKING
+++ b/HACKING
@@ -1,52 +1,69 @@
Contributing to pacman
======================
-Please read 'submitting-patches' and 'translation-help' in the same directory
-as this file.
+In addition to this file, please read `submitting-patches` and
+`translation-help` in the same directory for additional info on contributing.
Coding style
------------
1. All code should be indented with tabs. (Ignore the use of only spaces in
this file) By default, source files contain the following VIM modeline:
- /* vim: set ts=2 sw=2 noet: */
++
+[C]
+code~~~~~~~~~~
+/* vim: set ts=2 sw=2 noet: */
+code~~~~~~~~~~
2. When opening new blocks such as 'while', 'if', or 'for', leave the opening
brace on the same line as the beginning of the codeblock. The closing brace
gets its own line (the only exception being 'else'). Do not use extra
- spaces around the parentheses of the block. ALWAYS use opening/closing
- braces, even if it's just a one-line block.
-
- for(lp = list; lp; lp = lp->next) {
- newlist = _alpm_list_add(newlist, strdup(lp->data));
- }
-
- while(it) {
- ptr = it->next;
- if(fn) {
- fn(it->data);
- } else {
- return(1);
- }
- free(it);
- it = ptr;
- }
+ spaces around the parentheses of the block. ALWAYS use opening and closing
+ braces, even if it's just a one-line block. This reduces future error when
+ blocks are expanded beyond one line.
++
+[C]
+code~~~~~~~~~~
+for(lp = list; lp; lp = lp->next) {
+ newlist = _alpm_list_add(newlist, strdup(lp->data));
+}
+
+while(it) {
+ ptr = it->next;
+ if(fn) {
+ fn(it->data);
+ } else {
+ return(1);
+ }
+ free(it);
+ it = ptr;
+}
+code~~~~~~~~~~
3. When declaring a new function, put the opening and closing braces on their
own line. Also, when declaring a pointer, do not put a space between the
asterisk and the variable name.
-
- pmlist_t *_alpm_list_add(pmlist_t *list, void *data)
- {
- pmlist_t *ptr, *lp;
-
- ptr = list;
- if(ptr == NULL) {
- ...
- }
-
-4. Comments should be ANSI-C89 compliant. That means no "// Comment" style;
- use only "/* Comment */" style.
++
+[C]
+code~~~~~~~~~~
+alpm_list_t *alpm_list_add(alpm_list_t *list, void *data)
+{
+ alpm_list_t *ptr, *lp;
+
+ ptr = list;
+ if(ptr == NULL) {
+ ...
+ }
+ ...
+}
+code~~~~~~~~~~
+
+4. Comments should be ANSI-C89 compliant. That means no `// Comment` style;
+ use only `/* Comment */` style.
+
+ /* This is a comment */
+ NOT
+ // This is a comment
5. Return statements should be written like a function call.
@@ -62,34 +79,58 @@ Coding style
NOT
sizeof(*mylist);
+7. When using strcmp() (or any function that returns 0 on success) in a
+ conditional statement, use != 0 or == 0 and not the negation (!) operator.
+ It reads much cleaner for humans (using a negative to check for success is
+ confusing) and the compiler will treat it correctly anyway.
+
+ if(strcmp(a, b) == 0)
+ NOT
+ if(!strcmp(a, b))
+
+
Other Concerns
--------------
+Header Includes
+~~~~~~~~~~~~~~~
+
Currently our #include usage is in messy shape, but this is no reason to
continue down this messy path. When adding an include to a file, follow this
general pattern, including blank lines:
+[C]
+code~~~~~~~~~~
#include "config.h"
#include <standardheader.h>
#include <another.h>
#include <...>
+code~~~~~~~~~~
Follow this with some more headers, depending on whether the file is in libalpm
or pacman proper. For libalpm:
+[C]
+code~~~~~~~~~~
/* libalpm */
#include "yourfile.h"
#include "alpm_list.h"
#include "anythingelse.h"
+code~~~~~~~~~~
For pacman:
+[C]
+code~~~~~~~~~~
#include <alpm.h>
#include <alpm_list.h>
/* pacman */
#include "yourfile.h"
#include "anythingelse.h"
+code~~~~~~~~~~
-vim: set ts=2 sw=2 et:
+/////
+vim: set ts=2 sw=2 syntax=asciidoc et:
+/////
diff --git a/Makefile.am b/Makefile.am
index 700f32aa..e07321b3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,14 +1,20 @@
-SUBDIRS = lib/libalpm src/util src/pacman scripts doc etc pactest contrib
-
-#DISTCHECK_CONFIGURE_FLAGS = --disable-fakeroot
+SUBDIRS = lib/libalpm src/util src/pacman scripts doc etc po pactest contrib
# Some files automatically included, so they aren't specified below:
# AUTHORS, COPYING, NEWS, README
EXTRA_DIST = HACKING
+# run the pactest test suite
check-local: src/pacman
- python $(top_srcdir)/pactest/pactest.py --debug=1 \
+ $(PYTHON) $(top_srcdir)/pactest/pactest.py --debug=1 \
--test $(top_srcdir)/pactest/tests/*.py \
-p $(top_builddir)/src/pacman/pacman
rm -rf $(top_builddir)/root
+# create the pacman DB and cache directories upon install
+install-data-local:
+ for dir in "$(DESTDIR)$(localstatedir)/lib/pacman" "$(DESTDIR)$(localstatedir)/cache/pacman/pkg"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+
+# vim:set ts=2 sw=2 noet:
diff --git a/NEWS b/NEWS
index efe58270..342c0e11 100644
--- a/NEWS
+++ b/NEWS
@@ -1,12 +1,16 @@
VERSION DESCRIPTION
-----------------------------------------------------------------------------
-3.0.5 - Add -mtune=generic to default CFLAGS in makepkg.conf
- - Small updates to translations
+3.0.6 - config files updated to reflect current -> core change
+ - fix symlink overwriting issue (#7484)
+ - fix config parsing with tr_TR locale (#7235)
+ - use AC_SYS_LARGEFILE if available (#7578)
+3.0.5 - add -mtune=generic to default CFLAGS in makepkg.conf
+ - small updates to translations
- repo-add: fix conflicts issue for real this time
- - Fix issue with libarchive incorrectly setting permissions
-3.0.4 - Updated translations
+ - fix issue with libarchive incorrectly setting permissions
+3.0.4 - updated translations
- repo-add: fix issue where conflicts were not put in database
-3.0.3 - Updated translations
+3.0.3 - updated translations
- repo-add: fixed a desc file clobbering issue
3.0.2 - fix a bug where pre/post_remove scriptlets were not ran
- ensure ldconfig is ran in all operations
diff --git a/TODO.aaron b/TODO.aaron
index 3d934b2d..b1f78873 100644
--- a/TODO.aaron
+++ b/TODO.aaron
@@ -6,16 +6,6 @@
"replaces" packages to the front end, so the frontend can handle the QUESTION()
stuff in that case
-* Look into other VCSs to use. The main CVS repo will remain, but having a
- distributed system to allow for easy patching/pushing/pulling would be nice
- - monotone and mercurial look like the top contenders in my book, but I need
- to evaluate both a bit more.
-
-* src/pacman:
- There's quite a few single function headers which contain the pacman_*
- functions. We should move these to a single header (pacman.h) to clean up
- the source a bit.
-
* libalpm -> front end communication needs a work-up. Both progress functions
can be combined into one callback, IFF we adjust it to accept a prefix string
for the progress bars, and format it at the lib side. Question functions
@@ -45,10 +35,6 @@
* pacman: fixup doxygen documentation for public interface
-* libalpm: just because a function is in alpm.h doesn't mean it needs to be in
- alpm.c - we should move functions around where they should be. In fact,
- alpm.c might not be needed at all, if things were organized properly.
-
* feature for 3.1: package file hooks *
I've been planning on this one for some time. Here's a simple rundown:
in /etc/pacman.d/hooks:
diff --git a/TODO.dan b/TODO.dan
index 70e08295..a6c33682 100644
--- a/TODO.dan
+++ b/TODO.dan
@@ -4,23 +4,9 @@ TODO.dan
This is my personal TODO list. No guarantees if it is out of date and things no
longer apply. If you want to help out with any of it, send me an email.
-Only vaguely related to pacman:
--------------------------------
-
-Port the libdownload (libfetch) manpage from BSD style to Linux style, or at
-very least change references to BSD.
-
-
Pacman 3.1:
-----------
-Documentation- look into moving man page format to a more portable source
-format to make translation easier to keep up-to-date (something like txt2tags,
-docbook, asciidoc) This will need some research.
-
-Update cache cleaning functionality - keep installed version, choose number to
-keep, etc. Good python script in the forums that we should try to emulate.
-
Downgrade feature - allow users to see cached packages and downgrade to
(previous or any?) available options.
@@ -46,12 +32,6 @@ another FS bug), etc. Remove the -A flag and possibly -D, -T, and -Y (-Y is
killed now in favor of vercmp binary) if they can be done by other actions.
Possible switch of -U --> -I (#5571).
-Rewrite _alpm_sortbydeps to use Topological Sort. Should work using a standard
-topo sort algorithm, once the crazy types can be fixed up a bit. Include a
-cycle check - print a big error message if this happens.
- -- http://en.wikipedia.org/wiki/Topological_sort
- -- http://everything2.com/?node_id=556079
-
Review display and logging functions. There seems to be an abundance of them.
Make it extensible to use color, review what verbose/debug means. Perhaps
separate logging functionality- Pacman has its normal log, and alpm backend
@@ -59,12 +39,6 @@ keeps a very simple log file - listing only adds (including syncs) and removes.
This way a consistency list can be kept of what is currently installed and what
isn't, without all the logging junk from the front end.
-If we stick with autotools, add more defines to configure.in, including
-CACHEDIR, PKGEXT, so these can be specified at configure time for ease of use
-by other distributions which may want to change the defaults. Also, review what
-needs to be in config.h and what does not. There may be excess #depends which
-are hard coded into the sources. (from TODO.autoconf)
-
Profile the code. Find the functions that are being called a lot, and see what
can be done about it. Find out if all these calls are necessary (e.g. excessive
alpm_list_count calls), and maybe think about changing data structures to speed
@@ -72,12 +46,10 @@ operations up (e.g. a 'count' field). NOTE: already found two huge issues with
quick profiling- excessive setlocale calls, and extremely excessive strcmp
calls.
-Localize the date display done in --info output. Also, fix other localized
-issues- use non-printf when necessary, make sure all two line printed messages
-(especially usage instructions) are printed using one print statement. We
-may need to use some wchar_t output on the progress bar as char/byte counts
-differ here. Sizes of packages (e.g. 10,400.23 MB) should all be localized with
-correct seperators.
+Fix other localized issues- use non-printf when necessary. We may need to use
+some wchar_t output on the progress bar as char/byte counts differ here. Sizes
+of packages (e.g. 10,400.23 MB) should all be localized with correct
+seperators.
Rewrite makepkg to use terminal-safe coloring/bolding. tput utility should
allow us to do this. Make universal message functions for systemwide use,
@@ -86,11 +58,6 @@ including all pacman utilites- abs, pacman-optimize, etc.
Bugs/FRs to smash: 6468, 6437, 6430?, 6420, 6404, 6389, 6312?, 6284, 6273?,
6255?, 6208, 5987, 5885, 5571, 4182, 3492, 2810?, 1769, 1588, 1571
-Remove _alpm from function names now that we have SYMHIDDEN and static
-declarations.
-
-Remove alpm.c, put functions where they should be.
-
Update doxygen comments, they may need some work. Try to document all of the
private internal functions too- it helps a ton for people just getting a
start on pacman hacking.
@@ -106,8 +73,6 @@ Update copyrights (2007)
Update pacman website, and add/finish pacman coding style page
-autogen.sh / autoclean.sh - these seem messy. Can we clean this up?
-
Refine makepkg error codes. Each kind of failure could have its own code:
--package already built
--failed integ checks
@@ -119,14 +84,8 @@ to KB, MB, GB.
Revamp the downloadprog function a bit. Seems kind of messy.
-Add localized pkgdesc variables to makepkg.
-
--print-uri option to sync should not require saying yes or no to up to date
-Add testing scripts to pactest for issues we have been working on (especially
-files moving between packages). Also, take a look at cleaning up the output and
-structure of the pactest.py program itself.
-
Build a replacement for this, or at least standardize its use. We shouldn't
always need to pass handle->root around, it is constant. Something like char*
buildpath(file).
diff --git a/TRANSLATORS b/TRANSLATORS
new file mode 100644
index 00000000..914ebc2a
--- /dev/null
+++ b/TRANSLATORS
@@ -0,0 +1,36 @@
+Thanks to all of those who have helped translate pacman, both in the past
+and currently. Here are some of the current translators (past translators
+can be found by looking in the GIT history).
+
+If your language is listed here and you are interested in helping translate,
+contact either the pacman mailing list at pacman-dev@archlinux.org, or one
+of the translators listed above.
+
+If your language is not listed here and you wish it was, let the pacman mailing
+list know you are interested in making a translation. We will be happy to add
+your language to the mix.
+
+German (de):
+ Pierre Schmitz <pierre@archlinux.de>
+British English (en_GB):
+ Jeff Bailes <thepizzaking@gmail.com>
+Spanish (es):
+ Juan Pablo González Tognarelli <jotapesan@gmail.com>
+French (fr):
+ solsTiCe d'Hiver <solstice.dhiver@laposte.net>
+Hungarian (hu):
+ Nagy Gabor <ngaba@petra.hos.u-szeged.hu>
+Italian (it):
+ Giovanni 'voidnull' Scafora <linuxmania@gmail.com>
+ Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+ Lorenzo '^zanDarK' Masini <lorenxo86@gmail.com>
+Polish (pl_PL):
+ Mateusz Jędrasik <m.jedrasik@gmail.com>
+Brazilian Portuguese (pt_BR):
+ Douglas Soares de Andrade <douglas@archlinux-br.org>
+ Hugo Doria <hugodoria@archlinux-br.org>
+ Lincoln de Sousa <lincoln@archlinux-br.org>
+ Leandro Inácio <leandro@archlinux-br.org>
+Russian (ru_RU):
+ Vladimir Bayrakovskiy <4rayven@gmail.com>
+
diff --git a/acinclude.m4 b/acinclude.m4
index 0f53cb59..1d66dccd 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -1,5 +1,10 @@
+dnl acinclude.m4 - configure macros used by pacman and libalpm
+dnl The majority of this file is the libtool macros we use, kept here so
+dnl we are not dependent on the host-system version of the macros. There
+dnl are some pacman/libalpm specific macros at the end of the file as well.
+
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007
## Free Software Foundation, Inc.
## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
##
@@ -7,7 +12,7 @@
## unlimited permission to copy and/or distribute it, with or without
## modifications, as long as this notice is preserved.
-# serial 48 AC_PROG_LIBTOOL
+# serial 51 AC_PROG_LIBTOOL
# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
@@ -24,34 +29,6 @@ m4_ifdef([AC_PROVIDE_IFELSE],
# ---------------
AC_DEFUN([AC_PROG_LIBTOOL],
[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
-dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
-dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
- AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [AC_LIBTOOL_CXX],
- [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
- ])])
-dnl And a similar setup for Fortran 77 support
- AC_PROVIDE_IFELSE([AC_PROG_F77],
- [AC_LIBTOOL_F77],
- [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
-])])
-
-dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
-dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
-dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
- AC_PROVIDE_IFELSE([AC_PROG_GCJ],
- [AC_LIBTOOL_GCJ],
- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
- [AC_LIBTOOL_GCJ],
- [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
- [AC_LIBTOOL_GCJ],
- [ifdef([AC_PROG_GCJ],
- [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
- ifdef([A][M_PROG_GCJ],
- [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
- ifdef([LT_AC_PROG_GCJ],
- [define([LT_AC_PROG_GCJ],
- defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
])])# AC_PROG_LIBTOOL
@@ -59,9 +36,6 @@ dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
# ----------------
AC_DEFUN([_AC_PROG_LIBTOOL],
[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
-AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
-AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
# This can be used to rebuild libtool when needed
LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
@@ -170,7 +144,7 @@ test -z "$STRIP" && STRIP=:
test -z "$ac_objext" && ac_objext=o
# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
old_postinstall_cmds='chmod 644 $oldlib'
old_postuninstall_cmds=
@@ -257,8 +231,9 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
# Check for compiler boilerplate output or warnings with
# the simple compiler test code.
AC_DEFUN([_LT_COMPILER_BOILERPLATE],
-[ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_compiler_boilerplate=`cat conftest.err`
$rm conftest*
@@ -270,8 +245,9 @@ $rm conftest*
# Check for linker boilerplate output or warnings with
# the simple link test code.
AC_DEFUN([_LT_LINKER_BOILERPLATE],
-[ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_linker_boilerplate=`cat conftest.err`
$rm conftest*
@@ -287,12 +263,20 @@ $rm conftest*
# If we don't find anything, use the default library path according
# to the aix ld manual.
AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
-[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`; fi],[])
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi],[])
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
])# _LT_AC_SYS_LIBPATH_AIX
@@ -523,13 +507,17 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.o` in
*32-bit*)
case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
@@ -546,6 +534,9 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
;;
*64-bit*)
case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
@@ -617,7 +608,7 @@ AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
AC_CACHE_CHECK([$1], [$2],
[$2=no
ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="$3"
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
@@ -658,11 +649,12 @@ fi
# ------------------------------------------------------------
# Check whether the given compiler option works
AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
-[AC_CACHE_CHECK([$1], [$2],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
[$2=no
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $3"
- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
# The linker can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -776,24 +768,27 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
fi
;;
*)
- # If test is not a shell built-in, we'll probably end up computing a
- # maximum length that is only half of the actual maximum length, but
- # we can't tell.
- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
- while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
= "XX$teststring") >/dev/null 2>&1 &&
- new_result=`expr "X$teststring" : ".*" 2>&1` &&
- lt_cv_sys_max_cmd_len=$new_result &&
- test $i != 17 # 1/2 MB should be enough
- do
- i=`expr $i + 1`
- teststring=$teststring$teststring
- done
- teststring=
- # Add a significant safety factor because C++ compilers can tack on massive
- # amounts of additional arguments before passing them to the linker.
- # It appears as though 1/2 is a usable value.
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
;;
esac
])
@@ -1020,7 +1015,8 @@ fi
# ---------------------------------
# Check to see if options -c and -o are simultaneously supported by compiler
AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
-[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
[_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
[_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
@@ -1028,7 +1024,7 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
mkdir conftest
cd conftest
mkdir out
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="-o out/conftest2.$ac_objext"
# Insert the option either (1) after the last *FLAGS variable, or
@@ -1168,6 +1164,7 @@ else
darwin*)
if test -n "$STRIP" ; then
striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
@@ -1185,7 +1182,8 @@ fi
# -----------------------------
# PORTME Fill in your ld.so characteristics
AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
-[AC_MSG_CHECKING([dynamic linker characteristics])
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
library_names_spec=
libname_spec='lib$name'
soname_spec=
@@ -1199,20 +1197,58 @@ shlibpath_overrides_runpath=unknown
version_type=none
dynamic_linker="$host_os ld.so"
sys_lib_dlsearch_path_spec="/lib /usr/lib"
+m4_if($1,[],[
if test "$GCC" = yes; then
- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then
# if the path contains ";" then we assume it to be the separator
# otherwise default to the standard path separator (i.e. ":") - it is
# assumed that no part of a normal pathname contains ";" but that should
# okay in the real world where ";" in dirpaths is itself problematic.
- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'`
else
- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
fi
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+ if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+ sys_lib_search_path_spec=`echo $lt_search_path_spec`
else
sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
+fi])
need_lib_prefix=unknown
hardcode_into_libs=no
@@ -1369,12 +1405,8 @@ darwin* | rhapsody*)
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
- if test "$GCC" = yes; then
- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
- else
- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
- fi
+ m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
;;
@@ -1391,18 +1423,6 @@ freebsd1*)
dynamic_linker=no
;;
-kfreebsd*-gnu)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- dynamic_linker='GNU ld.so'
- ;;
-
freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
@@ -1440,7 +1460,7 @@ freebsd* | dragonfly*)
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
- freebsd*) # from 4.6 on
+ *) # from 4.6 on, and DragonFly
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
;;
@@ -1503,7 +1523,7 @@ hpux9* | hpux10* | hpux11*)
postinstall_cmds='chmod 555 $lib'
;;
-interix3*)
+interix[[3-9]]*)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -1558,7 +1578,7 @@ linux*oldld* | linux*aout* | linux*coff*)
;;
# This must be Linux ELF.
-linux*)
+linux* | k*bsd*-gnu)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -1574,7 +1594,7 @@ linux*)
# Append ld.so.conf contents to the search path
if test -f /etc/ld.so.conf; then
- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
fi
@@ -1587,18 +1607,6 @@ linux*)
dynamic_linker='GNU/Linux ld.so'
;;
-knetbsd*-gnu)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- dynamic_linker='GNU ld.so'
- ;;
-
netbsd*)
version_type=sunos
need_lib_prefix=no
@@ -1680,6 +1688,10 @@ osf3* | osf4* | osf5*)
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
;;
+rdos*)
+ dynamic_linker=no
+ ;;
+
solaris*)
version_type=linux
need_lib_prefix=no
@@ -1785,7 +1797,8 @@ fi
# _LT_AC_TAGCONFIG
# ----------------
AC_DEFUN([_LT_AC_TAGCONFIG],
-[AC_ARG_WITH([tags],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_ARG_WITH([tags],
[AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
[include additional configurations @<:@automatic@:>@])],
[tagnames="$withval"])
@@ -1831,32 +1844,6 @@ if test -f "$ltmain" && test -n "$tagnames"; then
echo appending configuration tag \"$tagname\" to $ofile
case $tagname in
- CXX)
- if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
- (test "X$CXX" != "Xg++"))) ; then
- AC_LIBTOOL_LANG_CXX_CONFIG
- else
- tagname=""
- fi
- ;;
-
- F77)
- if test -n "$F77" && test "X$F77" != "Xno"; then
- AC_LIBTOOL_LANG_F77_CONFIG
- else
- tagname=""
- fi
- ;;
-
- GCJ)
- if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
- AC_LIBTOOL_LANG_GCJ_CONFIG
- else
- tagname=""
- fi
- ;;
-
RC)
AC_LIBTOOL_LANG_RC_CONFIG
;;
@@ -2046,7 +2033,7 @@ m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
# AC_PATH_TOOL_PREFIX
# -------------------
-# find a file program which can recognise shared library
+# find a file program which can recognize shared library
AC_DEFUN([AC_PATH_TOOL_PREFIX],
[AC_REQUIRE([AC_PROG_EGREP])dnl
AC_MSG_CHECKING([for $1])
@@ -2109,7 +2096,7 @@ fi
# AC_PATH_MAGIC
# -------------
-# find a file program which can recognise a shared library
+# find a file program which can recognize a shared library
AC_DEFUN([AC_PATH_MAGIC],
[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
if test -z "$lt_cv_path_MAGIC_CMD"; then
@@ -2256,7 +2243,7 @@ esac
# how to check for library dependencies
# -- PORTME fill in with the dynamic library characteristics
AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
-[AC_CACHE_CHECK([how to recognise dependent libraries],
+[AC_CACHE_CHECK([how to recognize dependent libraries],
lt_cv_deplibs_check_method,
[lt_cv_file_magic_cmd='$MAGIC_CMD'
lt_cv_file_magic_test_file=
@@ -2295,16 +2282,22 @@ cygwin*)
mingw* | pw32*)
# Base MSYS/MinGW do not provide the 'file' command needed by
- # func_win32_libid shell function, so use a weaker test based on 'objdump'.
- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ if ( file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
;;
darwin* | rhapsody*)
lt_cv_deplibs_check_method=pass_all
;;
-freebsd* | kfreebsd*-gnu | dragonfly*)
+freebsd* | dragonfly*)
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
case $host_cpu in
i*86 )
@@ -2342,7 +2335,7 @@ hpux10.20* | hpux11*)
esac
;;
-interix3*)
+interix[[3-9]]*)
# PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
;;
@@ -2358,7 +2351,7 @@ irix5* | irix6* | nonstopux*)
;;
# This must be Linux ELF.
-linux*)
+linux* | k*bsd*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
@@ -2392,6 +2385,10 @@ osf3* | osf4* | osf5*)
lt_cv_deplibs_check_method=pass_all
;;
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
solaris*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -2444,7 +2441,7 @@ AC_DEFUN([AC_PROG_NM],
lt_cv_path_NM="$NM"
else
lt_nm_to_check="${ac_tool_prefix}nm"
- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
lt_nm_to_check="$lt_nm_to_check nm"
fi
for lt_tmp_nm in $lt_nm_to_check; do
@@ -2568,71 +2565,6 @@ AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
])# AC_LIBLTDL_INSTALLABLE
-# AC_LIBTOOL_CXX
-# --------------
-# enable support for C++ libraries
-AC_DEFUN([AC_LIBTOOL_CXX],
-[AC_REQUIRE([_LT_AC_LANG_CXX])
-])# AC_LIBTOOL_CXX
-
-
-# _LT_AC_LANG_CXX
-# ---------------
-AC_DEFUN([_LT_AC_LANG_CXX],
-[AC_REQUIRE([AC_PROG_CXX])
-AC_REQUIRE([_LT_AC_PROG_CXXCPP])
-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
-])# _LT_AC_LANG_CXX
-
-# _LT_AC_PROG_CXXCPP
-# ------------------
-AC_DEFUN([_LT_AC_PROG_CXXCPP],
-[
-AC_REQUIRE([AC_PROG_CXX])
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
- (test "X$CXX" != "Xg++"))) ; then
- AC_PROG_CXXCPP
-fi
-])# _LT_AC_PROG_CXXCPP
-
-# AC_LIBTOOL_F77
-# --------------
-# enable support for Fortran 77 libraries
-AC_DEFUN([AC_LIBTOOL_F77],
-[AC_REQUIRE([_LT_AC_LANG_F77])
-])# AC_LIBTOOL_F77
-
-
-# _LT_AC_LANG_F77
-# ---------------
-AC_DEFUN([_LT_AC_LANG_F77],
-[AC_REQUIRE([AC_PROG_F77])
-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
-])# _LT_AC_LANG_F77
-
-
-# AC_LIBTOOL_GCJ
-# --------------
-# enable support for GCJ libraries
-AC_DEFUN([AC_LIBTOOL_GCJ],
-[AC_REQUIRE([_LT_AC_LANG_GCJ])
-])# AC_LIBTOOL_GCJ
-
-
-# _LT_AC_LANG_GCJ
-# ---------------
-AC_DEFUN([_LT_AC_LANG_GCJ],
-[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
- [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
- [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
- [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
- [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
-])# _LT_AC_LANG_GCJ
-
-
# AC_LIBTOOL_RC
# -------------
# enable support for Windows resource files
@@ -2660,10 +2592,10 @@ objext=o
_LT_AC_TAGVAR(objext, $1)=$objext
# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
+lt_simple_compile_test_code="int some_variable = 0;"
# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}\n'
+lt_simple_link_test_code='int main(){return(0);}'
_LT_AC_SYS_COMPILER
@@ -2723,1013 +2655,6 @@ CC="$lt_save_CC"
])# AC_LIBTOOL_LANG_C_CONFIG
-# AC_LIBTOOL_LANG_CXX_CONFIG
-# --------------------------
-# Ensure that the configuration vars for the C compiler are
-# suitably defined. Those variables are subsequently used by
-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
-AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
-[AC_LANG_PUSH(C++)
-AC_REQUIRE([AC_PROG_CXX])
-AC_REQUIRE([_LT_AC_PROG_CXXCPP])
-
-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_AC_TAGVAR(allow_undefined_flag, $1)=
-_LT_AC_TAGVAR(always_export_symbols, $1)=no
-_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
-_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_AC_TAGVAR(hardcode_direct, $1)=no
-_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_AC_TAGVAR(hardcode_automatic, $1)=no
-_LT_AC_TAGVAR(module_cmds, $1)=
-_LT_AC_TAGVAR(module_expsym_cmds, $1)=
-_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_AC_TAGVAR(no_undefined_flag, $1)=
-_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Dependencies to place before and after the object being linked:
-_LT_AC_TAGVAR(predep_objects, $1)=
-_LT_AC_TAGVAR(postdep_objects, $1)=
-_LT_AC_TAGVAR(predeps, $1)=
-_LT_AC_TAGVAR(postdeps, $1)=
-_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_LD=$LD
-lt_save_GCC=$GCC
-GCC=$GXX
-lt_save_with_gnu_ld=$with_gnu_ld
-lt_save_path_LD=$lt_cv_path_LD
-if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-else
- $as_unset lt_cv_prog_gnu_ld
-fi
-if test -n "${lt_cv_path_LDCXX+set}"; then
- lt_cv_path_LD=$lt_cv_path_LDCXX
-else
- $as_unset lt_cv_path_LD
-fi
-test -z "${LDCXX+set}" || LD=$LDCXX
-CC=${CXX-"c++"}
-compiler=$CC
-_LT_AC_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-
-# We don't want -fno-exception wen compiling C++ code, so set the
-# no_builtin_flag separately
-if test "$GXX" = yes; then
- _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-else
- _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-fi
-
-if test "$GXX" = yes; then
- # Set up default GNU C++ configuration
-
- AC_PROG_LD
-
- # Check if GNU C++ uses GNU ld as the underlying linker, since the
- # archiving commands below assume that GNU ld is being used.
- if test "$with_gnu_ld" = yes; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
- # If archive_cmds runs LD, not CC, wlarc should be empty
- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
- # investigate it a little bit more. (MM)
- wlarc='${wl}'
-
- # ancient GNU ld didn't support --whole-archive et. al.
- if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
- grep 'no-whole-archive' > /dev/null; then
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- else
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
- fi
- else
- with_gnu_ld=no
- wlarc=
-
- # A generic and very simple default shared library creation
- # command for GNU C++ for the case where it uses the native
- # linker, instead of GNU ld. If possible, this setting should
- # overridden to take advantage of the native linker features on
- # the platform it is being used on.
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
- fi
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
-else
- GXX=no
- with_gnu_ld=no
- wlarc=
-fi
-
-# PORTME: fill in a description of your system's C++ link characteristics
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-_LT_AC_TAGVAR(ld_shlibs, $1)=yes
-case $host_os in
- aix3*)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- aix4* | aix5*)
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
- # have to do anything special.
- aix_use_runtimelinking=no
- exp_sym_flag='-Bexport'
- no_entry_flag=""
- else
- aix_use_runtimelinking=no
-
- # Test if we are trying to use run time linking or normal
- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
- # need to do runtime linking.
- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
- for ld_flag in $LDFLAGS; do
- case $ld_flag in
- *-brtl*)
- aix_use_runtimelinking=yes
- break
- ;;
- esac
- done
- ;;
- esac
-
- exp_sym_flag='-bexport'
- no_entry_flag='-bnoentry'
- fi
-
- # When large executables or shared objects are built, AIX ld can
- # have problems creating the table of contents. If linking a library
- # or program results in "error TOC overflow" add -mminimal-toc to
- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
- _LT_AC_TAGVAR(archive_cmds, $1)=''
- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
- if test "$GXX" = yes; then
- case $host_os in aix4.[[012]]|aix4.[[012]].*)
- # We only want to do this on AIX 4.2 and lower, the check
- # below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" && \
- strings "$collect2name" | grep resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
- else
- # We have old collect2
- _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
- fi
- ;;
- esac
- shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
- fi
- else
- # not using gcc
- if test "$host_cpu" = ia64; then
- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
- # chokes on -Wl,-G. The following line is correct:
- shared_flag='-G'
- else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
- else
- shared_flag='${wl}-bM:SRE'
- fi
- fi
- fi
-
- # It seems that -bexpall does not export symbols beginning with
- # underscore (_), so it is better to generate a list of symbols to export.
- _LT_AC_TAGVAR(always_export_symbols, $1)=yes
- if test "$aix_use_runtimelinking" = yes; then
- # Warning - without using the other runtime loading flags (-brtl),
- # -berok will link without error, but may produce a broken library.
- _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
- # Determine the default libpath from the value encoded in an empty executable.
- _LT_AC_SYS_LIBPATH_AIX
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
- else
- if test "$host_cpu" = ia64; then
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
- _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
- else
- # Determine the default libpath from the value encoded in an empty executable.
- _LT_AC_SYS_LIBPATH_AIX
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
- # -berok will link without error, but may produce a broken library.
- _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
- # Exported symbols can be pulled into shared objects from archives
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
- # This is similar to how AIX traditionally builds its shared libraries.
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
- fi
- fi
- ;;
-
- beos*)
- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
- # support --undefined. This deserves some investigation. FIXME
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- else
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- chorus*)
- case $cc_basename in
- *)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
-
- cygwin* | mingw* | pw32*)
- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
- # as there is no search path for DLLs.
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
- _LT_AC_TAGVAR(always_export_symbols, $1)=no
- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- else
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- darwin* | rhapsody*)
- case $host_os in
- rhapsody* | darwin1.[[012]])
- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
- ;;
- *) # Darwin 1.3 on
- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
- else
- case ${MACOSX_DEPLOYMENT_TARGET} in
- 10.[[012]])
- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
- ;;
- 10.*)
- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
- ;;
- esac
- fi
- ;;
- esac
- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_AC_TAGVAR(hardcode_direct, $1)=no
- _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
- if test "$GXX" = yes ; then
- lt_int_apple_cc_single_mod=no
- output_verbose_link_cmd='echo'
- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
- lt_int_apple_cc_single_mod=yes
- fi
- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- else
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- fi
- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- else
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- fi
- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- else
- case $cc_basename in
- xlc*)
- output_verbose_link_cmd='echo'
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- ;;
- *)
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- fi
- ;;
-
- dgux*)
- case $cc_basename in
- ec++*)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- ghcx*)
- # Green Hills C++ Compiler
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
- freebsd[[12]]*)
- # C++ shared libraries reported to be fairly broken before switch to ELF
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- freebsd-elf*)
- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
- ;;
- freebsd* | kfreebsd*-gnu | dragonfly*)
- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
- # conventions
- _LT_AC_TAGVAR(ld_shlibs, $1)=yes
- ;;
- gnu*)
- ;;
- hpux9*)
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
- # but as the default
- # location of the library.
-
- case $cc_basename in
- CC*)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- aCC*)
- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
- ;;
- *)
- if test "$GXX" = yes; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- else
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
- hpux10*|hpux11*)
- if test $with_gnu_ld = no; then
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
- case $host_cpu in
- hppa*64*|ia64*)
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
- ;;
- *)
- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- ;;
- esac
- fi
- case $host_cpu in
- hppa*64*|ia64*)
- _LT_AC_TAGVAR(hardcode_direct, $1)=no
- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
- *)
- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
- # but as the default
- # location of the library.
- ;;
- esac
-
- case $cc_basename in
- CC*)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- aCC*)
- case $host_cpu in
- hppa*64*)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- ia64*)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- *)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- esac
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
- ;;
- *)
- if test "$GXX" = yes; then
- if test $with_gnu_ld = no; then
- case $host_cpu in
- hppa*64*)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- ia64*)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- *)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- esac
- fi
- else
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
- interix3*)
- _LT_AC_TAGVAR(hardcode_direct, $1)=no
- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
- # Instead, shared libraries are loaded at an image base (0x10000000 by
- # default) and relocated if they conflict, which is a slow very memory
- # consuming and fragmenting process. To avoid this, we pick a random,
- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- ;;
- irix5* | irix6*)
- case $cc_basename in
- CC*)
- # SGI C++
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-
- # Archives containing C++ object files must be created using
- # "CC -ar", where "CC" is the IRIX C++ compiler. This is
- # necessary to make sure instantiated templates are included
- # in the archive.
- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
- ;;
- *)
- if test "$GXX" = yes; then
- if test "$with_gnu_ld" = no; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- else
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
- fi
- fi
- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
- ;;
- esac
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
- ;;
- linux*)
- case $cc_basename in
- KCC*)
- # Kuck and Associates, Inc. (KAI) C++ Compiler
-
- # KCC will only create a shared library if the output file
- # ends with ".so" (or ".sl" for HP-UX), so rename the library
- # to its proper name (with version) after linking.
- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
- # Archives containing C++ object files must be created using
- # "CC -Bstatic", where "CC" is the KAI C++ compiler.
- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
- ;;
- icpc*)
- # Intel C++
- with_gnu_ld=yes
- # version 8.0 and above of icpc choke on multiply defined symbols
- # if we add $predep_objects and $postdep_objects, however 7.1 and
- # earlier do not add the objects themselves.
- case `$CC -V 2>&1` in
- *"Version 7."*)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- ;;
- *) # Version 8.0 or newer
- tmp_idyn=
- case $host_cpu in
- ia64*) tmp_idyn=' -i_dynamic';;
- esac
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- ;;
- esac
- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
- ;;
- pgCC*)
- # Portland Group C++ compiler
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
- ;;
- cxx*)
- # Compaq C++
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
- runpath_var=LD_RUN_PATH
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
- ;;
- esac
- ;;
- lynxos*)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- m88k*)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- mvs*)
- case $cc_basename in
- cxx*)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
- netbsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
- wlarc=
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
- fi
- # Workaround some broken pre-1.5 toolchains
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
- ;;
- openbsd2*)
- # C++ shared libraries are fairly broken
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- openbsd*)
- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- fi
- output_verbose_link_cmd='echo'
- ;;
- osf3*)
- case $cc_basename in
- KCC*)
- # Kuck and Associates, Inc. (KAI) C++ Compiler
-
- # KCC will only create a shared library if the output file
- # ends with ".so" (or ".sl" for HP-UX), so rename the library
- # to its proper name (with version) after linking.
- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Archives containing C++ object files must be created using
- # "CC -Bstatic", where "CC" is the KAI C++ compiler.
- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-
- ;;
- RCC*)
- # Rational C++ 2.4.1
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- cxx*)
- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
- ;;
- *)
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
- else
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
- osf4* | osf5*)
- case $cc_basename in
- KCC*)
- # Kuck and Associates, Inc. (KAI) C++ Compiler
-
- # KCC will only create a shared library if the output file
- # ends with ".so" (or ".sl" for HP-UX), so rename the library
- # to its proper name (with version) after linking.
- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Archives containing C++ object files must be created using
- # the KAI C++ compiler.
- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
- ;;
- RCC*)
- # Rational C++ 2.4.1
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- cxx*)
- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
- echo "-hidden">> $lib.exp~
- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
- $rm $lib.exp'
-
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
- ;;
- *)
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
- else
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
- psos*)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- sunos4*)
- case $cc_basename in
- CC*)
- # Sun C++ 4.x
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- lcc*)
- # Lucid
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
- solaris*)
- case $cc_basename in
- CC*)
- # Sun C++ 4.2, 5.x and Centerline C++
- _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
- _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
- case $host_os in
- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
- *)
- # The C++ compiler is used as linker so we must use $wl
- # flag to pass the commands to the underlying system
- # linker. We must also pass each convience library through
- # to the system linker between allextract/defaultextract.
- # The C++ compiler will combine linker options so we
- # cannot just pass the convience library names through
- # without $wl.
- # Supported since Solaris 2.6 (maybe 2.5.1?)
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
- ;;
- esac
- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
- output_verbose_link_cmd='echo'
-
- # Archives containing C++ object files must be created using
- # "CC -xar", where "CC" is the Sun C++ compiler. This is
- # necessary to make sure instantiated templates are included
- # in the archive.
- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
- ;;
- gcx*)
- # Green Hills C++ Compiler
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
- # The C++ compiler must be used to create the archive.
- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
- ;;
- *)
- # GNU C++ compiler with Solaris linker
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
- if $CC --version | grep -v '^2\.7' > /dev/null; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
- else
- # g++ 2.7 appears to require `-G' NOT `-shared' on this
- # platform.
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
- fi
-
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
- fi
- ;;
- esac
- ;;
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
- runpath_var='LD_RUN_PATH'
-
- case $cc_basename in
- CC*)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- ;;
- sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
- # link with -lc, and that would cause any symbols used from libc to
- # always be unresolved, which means just about no library would
- # ever link correctly. If we're not using GNU ld we use -z text
- # though, which does catch some bad symbols but isn't as heavy-handed
- # as -z defs.
- # For security reasons, it is highly recommended that you always
- # use absolute paths for naming shared libraries, and exclude the
- # DT_RUNPATH tag from executables and libraries. But doing so
- # requires that you compile everything twice, which is a pain.
- # So that behaviour is only enabled if SCOABSPATH is set to a
- # non-empty value in the environment. Most likely only useful for
- # creating official distributions of packages.
- # This is a hack until libtool officially supports absolute path
- # names for shared libraries.
- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
- runpath_var='LD_RUN_PATH'
-
- case $cc_basename in
- CC*)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- ;;
- tandem*)
- case $cc_basename in
- NCC*)
- # NonStop-UX NCC 3.20
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
- vxworks*)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
-esac
-AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
-test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_AC_TAGVAR(GCC, $1)="$GXX"
-_LT_AC_TAGVAR(LD, $1)="$LD"
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-AC_LIBTOOL_POSTDEP_PREDEP($1)
-AC_LIBTOOL_PROG_COMPILER_PIC($1)
-AC_LIBTOOL_PROG_CC_C_O($1)
-AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
-AC_LIBTOOL_PROG_LD_SHLIBS($1)
-AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
-AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-
-AC_LIBTOOL_CONFIG($1)
-
-AC_LANG_POP
-CC=$lt_save_CC
-LDCXX=$LD
-LD=$lt_save_LD
-GCC=$lt_save_GCC
-with_gnu_ldcxx=$with_gnu_ld
-with_gnu_ld=$lt_save_with_gnu_ld
-lt_cv_path_LDCXX=$lt_cv_path_LD
-lt_cv_path_LD=$lt_save_path_LD
-lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-])# AC_LIBTOOL_LANG_CXX_CONFIG
-
# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
# ------------------------------------
# Figure out "hidden" library dependencies from verbose
@@ -3746,31 +2671,6 @@ ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
int a;
void foo (void) { a = 0; }
EOF
-],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
-class Foo
-{
-public:
- Foo (void) { a = 0; }
-private:
- int a;
-};
-EOF
-],[$1],[F77],[cat > conftest.$ac_ext <<EOF
- subroutine foo
- implicit none
- integer*4 a
- a=0
- return
- end
-EOF
-],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
-public class foo {
- private int a;
- public void bar (void) {
- a = 0;
- }
-};
-EOF
])
dnl Parse the compiler output and extract the necessary
dnl objects, libraries and library flags.
@@ -3861,196 +2761,11 @@ fi
$rm -f confest.$objext
-# PORTME: override above test on systems where it is broken
-ifelse([$1],[CXX],
-[case $host_os in
-interix3*)
- # Interix 3.5 installs completely hosed .la files for C++, so rather than
- # hack all around it, let's just trust "g++" to DTRT.
- _LT_AC_TAGVAR(predep_objects,$1)=
- _LT_AC_TAGVAR(postdep_objects,$1)=
- _LT_AC_TAGVAR(postdeps,$1)=
- ;;
-
-solaris*)
- case $cc_basename in
- CC*)
- # Adding this requires a known-good setup of shared libraries for
- # Sun compiler versions before 5.6, else PIC objects from an old
- # archive will be linked into the output, leading to subtle bugs.
- _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
- ;;
- esac
- ;;
-esac
-])
-
case " $_LT_AC_TAGVAR(postdeps, $1) " in
*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
esac
])# AC_LIBTOOL_POSTDEP_PREDEP
-# AC_LIBTOOL_LANG_F77_CONFIG
-# --------------------------
-# Ensure that the configuration vars for the C compiler are
-# suitably defined. Those variables are subsequently used by
-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
-AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
-[AC_REQUIRE([AC_PROG_F77])
-AC_LANG_PUSH(Fortran 77)
-
-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_AC_TAGVAR(allow_undefined_flag, $1)=
-_LT_AC_TAGVAR(always_export_symbols, $1)=no
-_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
-_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_AC_TAGVAR(hardcode_direct, $1)=no
-_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-_LT_AC_TAGVAR(hardcode_automatic, $1)=no
-_LT_AC_TAGVAR(module_cmds, $1)=
-_LT_AC_TAGVAR(module_expsym_cmds, $1)=
-_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_AC_TAGVAR(no_undefined_flag, $1)=
-_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code=" subroutine t\n return\n end\n"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code=" program t\n end\n"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-CC=${F77-"f77"}
-compiler=$CC
-_LT_AC_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-
-AC_MSG_CHECKING([if libtool supports shared libraries])
-AC_MSG_RESULT([$can_build_shared])
-
-AC_MSG_CHECKING([whether to build shared libraries])
-test "$can_build_shared" = "no" && enable_shared=no
-
-# On AIX, shared libraries and static libraries use the same namespace, and
-# are all built from PIC.
-case $host_os in
-aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
-aix4* | aix5*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
- fi
- ;;
-esac
-AC_MSG_RESULT([$enable_shared])
-
-AC_MSG_CHECKING([whether to build static libraries])
-# Make sure either enable_shared or enable_static is yes.
-test "$enable_shared" = yes || enable_static=yes
-AC_MSG_RESULT([$enable_static])
-
-_LT_AC_TAGVAR(GCC, $1)="$G77"
-_LT_AC_TAGVAR(LD, $1)="$LD"
-
-AC_LIBTOOL_PROG_COMPILER_PIC($1)
-AC_LIBTOOL_PROG_CC_C_O($1)
-AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
-AC_LIBTOOL_PROG_LD_SHLIBS($1)
-AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
-AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-
-AC_LIBTOOL_CONFIG($1)
-
-AC_LANG_POP
-CC="$lt_save_CC"
-])# AC_LIBTOOL_LANG_F77_CONFIG
-
-
-# AC_LIBTOOL_LANG_GCJ_CONFIG
-# --------------------------
-# Ensure that the configuration vars for the C compiler are
-# suitably defined. Those variables are subsequently used by
-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
-AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
-[AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}\n"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-CC=${GCJ-"gcj"}
-compiler=$CC
-_LT_AC_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
-AC_LIBTOOL_PROG_COMPILER_PIC($1)
-AC_LIBTOOL_PROG_CC_C_O($1)
-AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
-AC_LIBTOOL_PROG_LD_SHLIBS($1)
-AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
-AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-
-AC_LIBTOOL_CONFIG($1)
-
-AC_LANG_RESTORE
-CC="$lt_save_CC"
-])# AC_LIBTOOL_LANG_GCJ_CONFIG
-
# AC_LIBTOOL_LANG_RC_CONFIG
# -------------------------
@@ -4069,7 +2784,7 @@ objext=o
_LT_AC_TAGVAR(objext, $1)=$objext
# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
# Code to be used in simple link tests
lt_simple_link_test_code="$lt_simple_compile_test_code"
@@ -4158,6 +2873,7 @@ if test -f "$ltmain"; then
_LT_AC_TAGVAR(module_cmds, $1) \
_LT_AC_TAGVAR(module_expsym_cmds, $1) \
_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+ _LT_AC_TAGVAR(fix_srcfile_path, $1) \
_LT_AC_TAGVAR(exclude_expsyms, $1) \
_LT_AC_TAGVAR(include_expsyms, $1); do
@@ -4204,7 +2920,7 @@ ifelse([$1], [],
# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
# Free Software Foundation, Inc.
#
# This file is part of GNU Libtool:
@@ -4529,7 +3245,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+fix_srcfile_path=$lt_fix_srcfile_path
# Set to yes if exported symbols are required.
always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
@@ -4612,6 +3328,7 @@ fi
# ---------------------------------
AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([LT_AC_PROG_SED])
AC_REQUIRE([AC_PROG_NM])
AC_REQUIRE([AC_OBJEXT])
# Check for command to grab the raw symbol name followed by C symbol from nm.
@@ -4648,7 +3365,7 @@ hpux*) # Its linker distinguishes data from code symbols
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
;;
-linux*)
+linux* | k*bsd*-gnu)
if test "$host_cpu" = ia64; then
symcode='[[ABCDGIRSTW]]'
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
@@ -4818,279 +3535,6 @@ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
AC_MSG_CHECKING([for $compiler option to produce PIC])
- ifelse([$1],[CXX],[
- # C++ specific cases for pic, static, wl, etc.
- if test "$GXX" = yes; then
- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
- case $host_os in
- aix*)
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- fi
- ;;
- amigaos*)
- # FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
- ;;
- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
- mingw* | os2* | pw32*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
- ;;
- darwin* | rhapsody*)
- # PIC is the default on this platform
- # Common symbols not allowed in MH_DYLIB files
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
- ;;
- *djgpp*)
- # DJGPP does not support shared libraries at all
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
- ;;
- interix3*)
- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
- # Instead, we relocate shared libraries at runtime.
- ;;
- sysv4*MP*)
- if test -d /usr/nec; then
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
- fi
- ;;
- hpux*)
- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
- # not for PA HP-UX.
- case $host_cpu in
- hppa*64*|ia64*)
- ;;
- *)
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- esac
- ;;
- *)
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- esac
- else
- case $host_os in
- aix4* | aix5*)
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- else
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
- fi
- ;;
- chorus*)
- case $cc_basename in
- cxch68*)
- # Green Hills C++ Compiler
- # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
- ;;
- esac
- ;;
- darwin*)
- # PIC is the default on this platform
- # Common symbols not allowed in MH_DYLIB files
- case $cc_basename in
- xlc*)
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- ;;
- esac
- ;;
- dgux*)
- case $cc_basename in
- ec++*)
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- ;;
- ghcx*)
- # Green Hills C++ Compiler
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- ;;
- *)
- ;;
- esac
- ;;
- freebsd* | kfreebsd*-gnu | dragonfly*)
- # FreeBSD uses GNU C++
- ;;
- hpux9* | hpux10* | hpux11*)
- case $cc_basename in
- CC*)
- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
- if test "$host_cpu" != ia64; then
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
- fi
- ;;
- aCC*)
- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
- case $host_cpu in
- hppa*64*|ia64*)
- # +Z the default
- ;;
- *)
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
- ;;
- esac
- ;;
- *)
- ;;
- esac
- ;;
- interix*)
- # This is c89, which is MS Visual C++ (no shared libs)
- # Anyone wants to do a port?
- ;;
- irix5* | irix6* | nonstopux*)
- case $cc_basename in
- CC*)
- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- # CC pic flag -KPIC is the default.
- ;;
- *)
- ;;
- esac
- ;;
- linux*)
- case $cc_basename in
- KCC*)
- # KAI C++ Compiler
- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- icpc* | ecpc*)
- # Intel C++
- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
- ;;
- pgCC*)
- # Portland Group C++ compiler.
- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- cxx*)
- # Compaq C++
- # Make sure the PIC flag is empty. It appears that all Alpha
- # Linux and Compaq Tru64 Unix objects are PIC.
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
- *)
- ;;
- esac
- ;;
- lynxos*)
- ;;
- m88k*)
- ;;
- mvs*)
- case $cc_basename in
- cxx*)
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
- ;;
- *)
- ;;
- esac
- ;;
- netbsd*)
- ;;
- osf3* | osf4* | osf5*)
- case $cc_basename in
- KCC*)
- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
- ;;
- RCC*)
- # Rational C++ 2.4.1
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- ;;
- cxx*)
- # Digital/Compaq C++
- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- # Make sure the PIC flag is empty. It appears that all Alpha
- # Linux and Compaq Tru64 Unix objects are PIC.
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
- *)
- ;;
- esac
- ;;
- psos*)
- ;;
- solaris*)
- case $cc_basename in
- CC*)
- # Sun C++ 4.2, 5.x and Centerline C++
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
- ;;
- gcx*)
- # Green Hills C++ Compiler
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
- ;;
- *)
- ;;
- esac
- ;;
- sunos4*)
- case $cc_basename in
- CC*)
- # Sun C++ 4.x
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- lcc*)
- # Lucid
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- ;;
- *)
- ;;
- esac
- ;;
- tandem*)
- case $cc_basename in
- NCC*)
- # NonStop-UX NCC 3.20
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- ;;
- *)
- ;;
- esac
- ;;
- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
- case $cc_basename in
- CC*)
- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- esac
- ;;
- vxworks*)
- ;;
- *)
- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
- ;;
- esac
- fi
-],
-[
if test "$GCC" = yes; then
_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
@@ -5111,13 +3555,15 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
;;
- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
# PIC is the default for these OSes.
;;
- mingw* | pw32* | os2*)
+ mingw* | cygwin* | pw32* | os2*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
;;
@@ -5127,7 +3573,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
;;
- interix3*)
+ interix[[3-9]]*)
# Interix 3.x gcc -fpic/-fPIC options generate broken code.
# Instead, we relocate shared libraries at runtime.
;;
@@ -5185,7 +3631,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
esac
;;
- mingw* | pw32* | os2*)
+ mingw* | cygwin* | pw32* | os2*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
@@ -5218,7 +3664,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
;;
- linux*)
+ linux* | k*bsd*-gnu)
case $cc_basename in
icc* | ecc*)
_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
@@ -5237,6 +3683,22 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
# All Alpha code is PIC.
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C 5.9
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ *Sun\ F*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=''
+ ;;
+ esac
+ ;;
esac
;;
@@ -5246,6 +3708,10 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
;;
+ rdos*)
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
solaris*)
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
@@ -5297,7 +3763,6 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
;;
esac
fi
-])
AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
#
@@ -5306,7 +3771,7 @@ AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
_LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
- [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC])], [],
[case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
"" | " "*) ;;
*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
@@ -5320,7 +3785,7 @@ case $host_os in
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
;;
*)
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC])"
;;
esac
@@ -5340,30 +3805,8 @@ AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
# ------------------------------------
# See if the linker supports building shared libraries.
AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
-[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-ifelse([$1],[CXX],[
- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- case $host_os in
- aix4* | aix5*)
- # If we're using GNU nm, then we don't want the "-C" option.
- # -C means demangle to AIX nm, but means don't demangle with GNU nm
- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
- else
- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
- fi
- ;;
- pw32*)
- _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
- ;;
- cygwin* | mingw*)
- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
- ;;
- *)
- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- ;;
- esac
-],[
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
runpath_var=
_LT_AC_TAGVAR(allow_undefined_flag, $1)=
_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
@@ -5496,7 +3939,7 @@ EOF
_LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
_LT_AC_TAGVAR(always_export_symbols, $1)=no
_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
@@ -5514,7 +3957,7 @@ EOF
fi
;;
- interix3*)
+ interix[[3-9]]*)
_LT_AC_TAGVAR(hardcode_direct, $1)=no
_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
@@ -5529,7 +3972,7 @@ EOF
_LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
- linux*)
+ gnu* | linux* | k*bsd*-gnu)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
tmp_addflag=
case $cc_basename,$host_cpu in
@@ -5547,13 +3990,22 @@ EOF
ifc* | ifort*) # Intel Fortran compiler
tmp_addflag=' -nofor_main' ;;
esac
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ *)
+ tmp_sharedflag='-shared' ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
if test $supports_anon_versioning = yes; then
_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
$echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
fi
else
_LT_AC_TAGVAR(ld_shlibs, $1)=no
@@ -5593,7 +4045,7 @@ EOF
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
case `$LD -v 2>&1` in
- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
_LT_AC_TAGVAR(ld_shlibs, $1)=no
cat <<_LT_EOF 1>&2
@@ -5712,7 +4164,7 @@ _LT_EOF
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ :
else
# We have old collect2
_LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
@@ -5805,7 +4257,7 @@ _LT_EOF
# The linker will automatically build a .lib file if we build a DLL.
_LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
# FIXME: Should let the user specify the lib program.
- _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
_LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
;;
@@ -5847,10 +4299,10 @@ _LT_EOF
case $cc_basename in
xlc*)
output_verbose_link_cmd='echo'
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
_LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
# Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
_LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;;
*)
@@ -5890,7 +4342,7 @@ _LT_EOF
;;
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd* | kfreebsd*-gnu | dragonfly*)
+ freebsd* | dragonfly*)
_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
_LT_AC_TAGVAR(hardcode_direct, $1)=yes
@@ -6012,24 +4464,28 @@ _LT_EOF
;;
openbsd*)
- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ if test -f /usr/libexec/ld.so; then
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
else
- case $host_os in
- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- ;;
- *)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- ;;
- esac
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
fi
;;
@@ -6088,17 +4544,16 @@ _LT_EOF
case $host_os in
solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
*)
- # The compiler driver will combine linker options so we
- # cannot just pass the convience library names through
- # without $wl, iff we do not link with $LD.
- # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
# Supported since Solaris 2.6 (maybe 2.5.1?)
- case $wlarc in
- '')
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
- *)
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
- esac ;;
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
esac
_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
;;
@@ -6155,7 +4610,7 @@ _LT_EOF
fi
;;
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
_LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -6207,7 +4662,6 @@ _LT_EOF
;;
esac
fi
-])
AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
@@ -6230,7 +4684,7 @@ x|xyes)
# to ld, don't add -lc before -lgcc.
AC_MSG_CHECKING([whether -lc should be explicitly linked in])
$rm conftest*
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
soname=conftest
@@ -6323,16 +4777,34 @@ AC_DEFUN([AM_PROG_NM], [AC_PROG_NM])
# This is just to silence aclocal about the macro not being used
ifelse([AC_DISABLE_FAST_INSTALL])
-AC_DEFUN([LT_AC_PROG_GCJ],
-[AC_CHECK_TOOL(GCJ, gcj, no)
- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
- AC_SUBST(GCJFLAGS)
-])
-
AC_DEFUN([LT_AC_PROG_RC],
[AC_CHECK_TOOL(RC, windres, no)
])
+
+# Cheap backport of AS_EXECUTABLE_P and required macros
+# from Autoconf 2.59; we should not use $as_executable_p directly.
+
+# _AS_TEST_PREPARE
+# ----------------
+m4_ifndef([_AS_TEST_PREPARE],
+[m4_defun([_AS_TEST_PREPARE],
+[if test -x / >/dev/null 2>&1; then
+ as_executable_p='test -x'
+else
+ as_executable_p='test -f'
+fi
+])])# _AS_TEST_PREPARE
+
+# AS_EXECUTABLE_P
+# ---------------
+# Check whether a file is executable.
+m4_ifndef([AS_EXECUTABLE_P],
+[m4_defun([AS_EXECUTABLE_P],
+[AS_REQUIRE([_AS_TEST_PREPARE])dnl
+$as_executable_p $1[]dnl
+])])# AS_EXECUTABLE_P
+
############################################################
# NOTE: This macro has been submitted for inclusion into #
# GNU Autoconf as AC_PROG_SED. When it is available in #
@@ -6355,12 +4827,13 @@ do
test -z "$as_dir" && as_dir=.
for lt_ac_prog in sed gsed; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then
lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
fi
done
done
done
+IFS=$as_save_IFS
lt_ac_max=0
lt_ac_count=0
# Add /usr/xpg4/bin/sed as it is typically found on Solaris
@@ -6393,5 +4866,87 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
done
])
SED=$lt_cv_path_SED
+AC_SUBST([SED])
AC_MSG_RESULT([$SED])
])
+
+
+dnl Add some custom macros for pacman and libalpm
+
+dnl GCC_STACK_PROTECT_LIB
+dnl adds -lssp to LIBS if it is available
+dnl ssp is usually provided as part of libc, but was previously a separate lib
+dnl It does not hurt to add -lssp even if libc provides SSP - in that case
+dnl libssp will simply be ignored.
+AC_DEFUN([GCC_STACK_PROTECT_LIB],[
+ AC_CACHE_CHECK([whether libssp exists], ssp_cv_lib,
+ [ssp_old_libs="$LIBS"
+ LIBS="$LIBS -lssp"
+ AC_TRY_LINK(,, ssp_cv_lib=yes, ssp_cv_lib=no)
+ LIBS="$ssp_old_libs"
+ ])
+ if test $ssp_cv_lib = yes; then
+ LIBS="$LIBS -lssp"
+ fi
+])
+
+dnl GCC_STACK_PROTECT_CC
+dnl checks -fstack-protector-all with the C compiler, if it exists then updates
+dnl CFLAGS and defines ENABLE_SSP_CC
+AC_DEFUN([GCC_STACK_PROTECT_CC],[
+ AC_LANG_ASSERT(C)
+ if test "X$CC" != "X"; then
+ AC_CACHE_CHECK([whether ${CC} accepts -fstack-protector-all],
+ ssp_cv_cc,
+ [ssp_old_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS -fstack-protector-all"
+ AC_TRY_COMPILE(,, ssp_cv_cc=yes, ssp_cv_cc=no)
+ CFLAGS="$ssp_old_cflags"
+ ])
+ if test $ssp_cv_cc = yes; then
+ CFLAGS="$CFLAGS -fstack-protector-all"
+ AC_DEFINE([ENABLE_SSP_CC], 1, [Define if SSP C support is enabled.])
+ fi
+ fi
+])
+
+dnl GCC_VISIBILITY_CC
+dnl checks -fvisibility=internal with the C compiler, if it exists then
+dnl defines ENABLE_VISIBILITY_CC in both configure script and Makefiles
+AC_DEFUN([GCC_VISIBILITY_CC],[
+ AC_LANG_ASSERT(C)
+ if test "X$CC" != "X"; then
+ AC_CACHE_CHECK([whether ${CC} accepts -fvisibility=internal],
+ visibility_cv_cc,
+ [visibility_old_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS -fvisibility=internal"
+ AC_TRY_COMPILE(,, visibility_cv_cc=yes, visibility_cv_cc=no)
+ CFLAGS="$visibility_old_cflags"
+ ])
+ if test $visibility_cv_cc = yes; then
+ AC_DEFINE([ENABLE_VISIBILITY_CC], 1, [Define if symbol visibility C support is enabled.])
+ fi
+ AM_CONDITIONAL([ENABLE_VISIBILITY_CC], test "x$visibility_cv_cc" = "xyes")
+ fi
+])
+
+dnl GCC_GNU89_INLINE_CC
+dnl checks -fgnu89-inline with the C compiler, if it exists then defines
+dnl ENABLE_GNU89_INLINE_CC in both configure script and Makefiles
+AC_DEFUN([GCC_GNU89_INLINE_CC],[
+ AC_LANG_ASSERT(C)
+ if test "X$CC" != "X"; then
+ AC_CACHE_CHECK([for -fgnu89-inline],
+ gnu89_inline_cv_cc,
+ [ gnu89_inline_old_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS -fgnu89-inline"
+ AC_TRY_COMPILE(,, gnu89_inline_cv_cc=yes, gnu89_inline_cv_cc=no)
+ CFLAGS="$gnu89_inline_old_cflags"
+ ])
+ if test $gnu89_inline_cv_cc = yes; then
+ AC_DEFINE([ENABLE_GNU89_INLINE_CC], 1, [Define if gnu89 inlining semantics should be used.])
+ fi
+ AM_CONDITIONAL([ENABLE_GNU89_INLINE_CC], test "x$gnu89_inline_cv_cc" = "xyes")
+ fi
+])
+
diff --git a/config.guess b/config.guess
index 0f0fe712..951383e3 100755
--- a/config.guess
+++ b/config.guess
@@ -4,7 +4,7 @@
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
# Inc.
-timestamp='2007-03-06'
+timestamp='2007-05-17'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -330,7 +330,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
- i86pc:SunOS:5.*:*)
+ i86pc:SunOS:5.*:* | ix86xen:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:6*:*)
diff --git a/config.sub b/config.sub
index 5defff65..c060f448 100755
--- a/config.sub
+++ b/config.sub
@@ -4,7 +4,7 @@
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
# Inc.
-timestamp='2007-01-18'
+timestamp='2007-04-29'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -683,6 +683,10 @@ case $basic_machine in
basic_machine=i386-pc
os=-mingw32
;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
miniframe)
basic_machine=m68000-convergent
;;
diff --git a/configure.ac b/configure.ac
index ecc13034..9a5f3b3e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,228 +1,362 @@
-ENV_CFLAGS=$CFLAGS
-CFLAGS=""
-
-AC_PREREQ(2.59)
-dnl Update it right before the release since $pkgver_foo are all _post_ release snapshots
-AC_INIT([Pacman package manager], 3.0.6, [pacman-dev@archlinux.org], [pacman])
-AC_LANG([C])
-AC_CONFIG_HEADERS(config.h)
+# -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+# Minimum version of autoconf required
+AC_PREREQ(2.60)
+
+# UPDATING VERSION NUMBERS FOR RELEASES
+#
+# libalpm:
+# current
+# The most recent interface number that this library implements.
+# revision
+# The implementation number of the current interface.
+# age
+# The difference between the newest and oldest interfaces that this library
+# implements. In other words, the library implements all the interface
+# numbers in the range from number current - age to current.
+#
+# 1. Start with version information of `0:0:0' for each libtool library.
+# 2. Update the version information only immediately before a public release of
+# your software. More frequent updates are unnecessary, and only guarantee
+# that the current interface number gets larger faster.
+# 3. If the library source code has changed at all since the last update, then
+# increment revision (`c:r:a' becomes `c:r+1:a').
+# 4. If any interfaces have been added, removed, or changed since the last
+# update, increment current, and set revision to 0.
+# 5. If any interfaces have been added since the last public release, then
+# increment age.
+# 6. If any interfaces have been removed since the last public release, then
+# set age to 0.
+#
+# pacman:
+# Extreme huge major changes:
+# pacman_version_major += 1
+# pacman_version_minor = 0
+# pacman_version_micro = 0
+#
+# Real releases:
+# pacman_version_minor += 1
+# pacman_version_micro = 0
+#
+# Bugfix releases:
+# pacman_version_micro += 1
+#
+# pacman_version_suffix should be similar to one of the following:
+# For beta releases: [beta2]
+# For code under development: [devel]
+# For production releases: []
+
+m4_define([lib_current], [2])
+m4_define([lib_revision], [0])
+m4_define([lib_age], [0])
+
+m4_define([pacman_version_major], [3])
+m4_define([pacman_version_minor], [1])
+m4_define([pacman_version_micro], [0])
+m4_define([pacman_version_suffix], [devel])
+m4_define([pacman_version],
+ [pacman_version_major.pacman_version_minor.pacman_version_micro])
+m4_define([pacman_display_version],
+ pacman_version[]m4_ifdef([pacman_version_suffix],[pacman_version_suffix]))
+
+# Autoconf initialization
+# AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
+AC_INIT([Pacman Package Manager], [pacman_display_version],
+ [pacman-dev@archlinux.org], [pacman])
+AC_CONFIG_SRCDIR([config.h.in])
+AC_CONFIG_HEADERS([config.h])
+
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE
-AM_GNU_GETTEXT([external])
-AM_GNU_GETTEXT_VERSION(0.13.1)
-dnl Define the libalpm version number here
-LIB_MAJOR_VERSION=1
-LIB_MINOR_VERSION=0
-LIB_MICRO_VERSION=0
-LIB_VERSION=$LIB_MAJOR_VERSION.$LIB_MINOR_VERSION.$LIB_MICRO_VERSION
-dnl Needed for libtool to create proper shared lib version.
-dnl This is not completely correct- see
-dnl http://sourceware.org/autobook/autobook/autobook_91.html for details.
-LIB_VERSION_INFO=`expr $LIB_MAJOR_VERSION + $LIB_MINOR_VERSION`:$LIB_MICRO_VERSION:$LIB_MINOR_VERSION
-
-dnl Set subsitution values for version stuff in Makefiles and anywhere else
+LIB_VERSION=`expr lib_current.lib_age`.lib_revision
+LIB_VERSION_INFO="lib_current:lib_revision:lib_age"
+
+# Set subsitution values for version stuff in Makefiles and anywhere else,
+# and put LIB_VERSION in config.h
AC_SUBST(LIB_VERSION)
AC_SUBST(LIB_VERSION_INFO)
-
-dnl Put version number in config.h
AC_DEFINE_UNQUOTED([LIB_VERSION], ["$LIB_VERSION"], [libalpm version number])
-dnl Configuration files
-dnl AC_CONFIG_FILES([etc/makepkg.conf] [etc/pacman.conf])
+# Help line for root directory
+AC_ARG_WITH(root-dir,
+ AC_HELP_STRING([--with-root-dir=path], [set the location of pacman's root operating directory]),
+ [ROOTDIR=$withval], [ROOTDIR=/])
-AC_PROG_CC
-AC_HEADER_STDC
-AC_PROG_INSTALL
-AC_CHECK_FUNCS([strverscmp])
-AM_PROG_LIBTOOL
-AM_CONDITIONAL(LINKSTATIC, test "$enable_static" = "yes")
+# Help line for package extension
+AC_ARG_WITH(pkg-ext,
+ AC_HELP_STRING([--with-pkg-ext=ext], [set the file extension used by packages]),
+ [PKGEXT=$withval], [PKGEXT=.pkg.tar.gz])
+
+# Help line for source package directory
+AC_ARG_WITH(src-ext,
+ AC_HELP_STRING([--with-src-ext=ext], [set the file extension used by source packages]),
+ [SRCEXT=$withval], [SRCEXT=.src.tar.gz])
+
+# Help line for database extension
+AC_ARG_WITH(db-ext,
+ AC_HELP_STRING([--with-db-ext=ext], [set the file extension used by the database]),
+ [DBEXT=$withval], [DBEXT=.db.tar.gz])
-dnl Help line for doxygen
+# Help line for doxygen
AC_ARG_ENABLE(doxygen,
- AC_HELP_STRING([--disable-doxygen], [Build API docs via Doxygen]),
- [wantdoxygen=$enableval], [wantdoxygen=yes])
+ AC_HELP_STRING([--enable-doxygen], [build your own API docs via Doxygen]),
+ [wantdoxygen=$enableval], [wantdoxygen=no])
-dnl Help line for config file
-AC_ARG_WITH(config-file,
- AC_HELP_STRING([--with-config-file=path], [Set the location of pacman's config file]),
- [configfile=$withval], [configfile=/etc/pacman.conf])
+# Help line for asciidoc
+AC_ARG_ENABLE(asciidoc,
+ AC_HELP_STRING([--enable-asciidoc], [build your own manpages with Asciidoc]),
+ [wantasciidoc=$enableval], [wantasciidoc=no])
-dnl Help line for debug
+# Help line for debug
AC_ARG_ENABLE(debug,
- AC_HELP_STRING([--enable-debug], [Enable debugging support]),
- [debug=$enableval], [debug=no])
+ AC_HELP_STRING([--enable-debug], [enable debugging support]),
+ [debug=$enableval], [debug=no])
+
+# Help line for abs
+AC_ARG_ENABLE(abs,
+ AC_HELP_STRING([--disable-abs], [do not include Arch Linux Build System script]),
+ [includeabs=$enableval], [includeabs=yes])
+
+# Help line for pacman.static
+AC_ARG_ENABLE(pacman-static,
+ AC_HELP_STRING([--disable-pacman-static], [do not build static version of pacman]),
+ [pacmanstatic=$enableval], [pacmanstatic=yes])
+
+# Checks for programs.
+AC_PROG_AWK
+AC_PROG_CC_C99
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AC_PROG_RANLIB
+AC_PROG_LIBTOOL
+AC_CHECK_PROGS([PYTHON], [python2.5 python2.4 python], [false])
+
+# find installed gettext
+AM_GNU_GETTEXT([external])
+AM_GNU_GETTEXT_VERSION(0.13.1)
+
+# Check for libarchive
+AC_CHECK_LIB([archive], [archive_read_data], , AC_MSG_ERROR([libarchive is needed to compile pacman!]))
+
+# Check for libdownload
+AC_CHECK_LIB([download], [downloadParseURL], , AC_MSG_ERROR([libdownload is needed to compile pacman!]))
+
+# Checks for header files.
+AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h string.h strings.h sys/ioctl.h sys/statvfs.h sys/time.h syslog.h wchar.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_C_INLINE
+AC_TYPE_MODE_T
+AC_TYPE_OFF_T
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_STRUCT_TM
+AC_TYPE_UID_T
+
+# Checks for library functions.
+AC_FUNC_CLOSEDIR_VOID
+AC_FUNC_FORK
+AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
+AC_FUNC_MKTIME
+AC_TYPE_SIGNAL
+AC_CHECK_FUNCS([realpath regcomp strcasecmp strdup strerror strnlen \
+ strndup strrchr strsep strstr strverscmp uname geteuid])
-dnl Help line for fakeroot
-AC_ARG_ENABLE(fakeroot,
- AC_HELP_STRING([--disable-fakeroot], [Disable fakeroot proof support]),
- [fakeroot=$enableval], [fakeroot=yes])
+# Enable large file support if available
+AC_SYS_LARGEFILE
+
+# Check if we can use symbol visibility support in GCC
+GCC_VISIBILITY_CC
+# Check if we have -fgnu89-inline flag
+GCC_GNU89_INLINE_CC
-dnl Host-dependant flags
+# Host-dependant flags
case "${host}" in
*-*-cygwin*)
- ENV_CFLAGS="$ENV_CFLAGS -DCYGWIN"
+ CFLAGS="$CFLAGS -DCYGWIN"
;;
esac
-dnl Check for architecture
+# Check for architecture, used in default makepkg.conf
+# (Note single space left after CARCHFLAGS)
case "${host}" in
- i686-*)
+ i686-*)
CARCH="i686"
- CARCHFLAGS="i686"
- ARCHSWITCH="march"
+ CARCHFLAGS="-march=i686 "
;;
- x86_64-*)
+ x86_64-*)
CARCH="x86_64"
- CARCHFLAGS="x86-64"
- ARCHSWITCH="march"
+ CARCHFLAGS="-march=x86-64 "
;;
- ia64-*)
+ ia64-*)
CARCH="ia64"
- CARCHFLAGS="ia64"
- ARCHSWITCH="march"
+ CARCHFLAGS="-march=ia64 "
;;
- sparc-*)
+ sparc-*)
CARCH="sparc"
- CARCHFLAGS="v9"
- ARCHSWITCH="mcpu"
+ CARCHFLAGS="-mcpu=v9 "
;;
ppc-* | powerpc-*)
CARCH="ppc"
- CARCHFLAGS="750"
- ARCHSWITCH="mcpu"
+ CARCHFLAGS="-mcpu=750 "
;;
- i386-*)
+ i386-*)
CARCH="i386"
- CARCHFLAGS="i386"
- ARCHSWITCH="march"
+ CARCHFLAGS="-march=i386 "
+ ;;
+ arm-*)
+ CARCH="arm"
+ CARCHFLAGS="-march=armv4 "
;;
*)
- AC_MSG_ERROR([Your architecture is not supported])
+ AC_MSG_WARN([[Your architecture is unknown for makepkg.conf, consider adding it to configure.ac]])
+ CARCH="unknown"
+ CARCHFLAGS=""
;;
esac
-dnl Now do some things common to all architectures
+# Now do some things common to all architectures
CHOST="${host}"
AC_SUBST(CARCH)
AC_SUBST(CARCHFLAGS)
-AC_SUBST(ARCHSWITCH)
AC_SUBST(CHOST)
-dnl Humor lowers blood pressure
-AC_MSG_CHECKING(your blood pressure)
-AC_MSG_RESULT([a bit high, but we can proceed])
-
-dnl Check for doxygen support
-AC_MSG_CHECKING(for doxygen)
+# Check for doxygen support and status
+AC_MSG_CHECKING([for doxygen])
if test "x$wantdoxygen" = "xyes" ; then
- AC_CHECK_PROGS([DOXYGEN], [doxygen])
- if test $DOXYGEN ; then
- AC_MSG_RESULT(yes)
+ AC_CHECK_PROGS([DOXYGEN], [doxygen])
+ if test $DOXYGEN ; then
+ AC_MSG_RESULT([yes])
usedoxygen=yes
- else
- AC_MSG_RESULT(no, doxygen missing)
+ else
+ AC_MSG_RESULT([no, doxygen missing])
usedoxygen=no
- fi
+ fi
else
- AC_MSG_RESULT(no, disabled by configure)
+ AC_MSG_RESULT([no, disabled by configure])
usedoxygen=no
fi
-AM_CONDITIONAL(HAS_DOXYGEN, test "x$usedoxygen" = "xyes")
-
-dnl Check for math
-AC_CHECK_LIB([m], [sqrt], [AC_CHECK_HEADER([math.h], [LIBM='-lm'])])
-if test -z "$LIBM"; then
- AC_MSG_ERROR("math library needed to compile pacman!");
-fi
-
-dnl Check for libarchive
-AC_CHECK_LIB([archive], [archive_read_data], [AC_CHECK_HEADER([archive.h], [LIBARCHIVE='-larchive'])])
-if test -z "$LIBARCHIVE"; then
- AC_MSG_ERROR("libarchive is needed to compile pacman!");
-fi
-
-dnl Check for libdownload
-AC_CHECK_LIB([download], [downloadParseURL], [AC_CHECK_HEADER([download.h], [LIBDOWNLOAD='-ldownload'])])
-if test -z "$LIBDOWNLOAD"; then
- AC_MSG_ERROR("libdownload is needed to compile pacman!");
-fi
-
-# Enable large file support if available
-AC_SYS_LARGEFILE
+AM_CONDITIONAL(USE_DOXYGEN, test "x$usedoxygen" = "xyes")
-dnl Set config location
-AC_MSG_CHECKING(for configuration file name)
-if test -n "$configfile"; then
- AC_DEFINE_UNQUOTED([PACCONF], "$configfile", [Location of pacman conf file])
- AC_MSG_RESULT(["$configfile"])
+# Check for asciidoc support and status
+AC_MSG_CHECKING([for asciidoc])
+if test "x$wantasciidoc" = "xyes" ; then
+ AC_CHECK_PROGS([ASCIIDOC], [asciidoc])
+ if test $ASCIIDOC ; then
+ AC_MSG_RESULT([yes])
+ useasciidoc=yes
+ else
+ AC_MSG_RESULT([no, asciidoc missing])
+ useasciidoc=no
+ fi
else
- AC_MSG_ERROR(["pacman config file (--with-config-file is not set"])
+ AC_MSG_RESULT([no, disabled by configure])
+ useasciidoc=no
fi
+AM_CONDITIONAL(USE_ASCIIDOC, test "x$useasciidoc" = "xyes")
-dnl Enable or disable debug code
+# Enable or disable debug code
AC_MSG_CHECKING(for debug mode request)
if test "x$debug" = "xyes" ; then
+ AC_MSG_RESULT(yes)
AC_DEFINE([PACMAN_DEBUG], , [Enable debug code])
- CFLAGS="$CFLAGS -g -Wall -Werror -fstack-protector -std=c99"
- LDFLAGS="$LDFLAGS -lmcheck"
- AC_MSG_RESULT(yes)
+ # Check for mcheck
+ AC_CHECK_HEADERS([mcheck.h])
+ # Check for -fstack-protector availability
+ GCC_STACK_PROTECT_LIB
+ GCC_STACK_PROTECT_CC
+ CFLAGS="$CFLAGS -Wall -Werror"
else
- CFLAGS="$CFLAGS -Wall -std=c99"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT(no)
+ CFLAGS="$CFLAGS -Wall"
fi
-dnl Enable or disable fakeroot code
-AC_MSG_CHECKING(for fakeroot proof support)
-if test "x$fakeroot" = "xyes" ; then
+# Enable or disable inclusion of abs script
+AC_MSG_CHECKING(for inclusion of abs script)
+if test "x$includeabs" = "xyes" ; then
AC_MSG_RESULT(yes)
+ AC_DEFINE([INCLUDE_ABS], , [Include abs script])
else
- AC_DEFINE([FAKEROOT], , [Disable fakeroot-proof code])
AC_MSG_RESULT(no)
fi
+AM_CONDITIONAL(INCLUDE_ABS, test "x$includeabs" = "xyes")
-dnl Set CFLAGS to both $CFLAGS and ones from env ($ENV_CFLAGS)
-CFLAGS="$CFLAGS $ENV_CFLAGS"
+# Enable or disable inclusion of abs script
+AC_MSG_CHECKING(whether to build pacman.static)
+if test "x$pacmanstatic" = "xyes" ; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([INCLUDE_PACMAN_STATIC], , [Build pacman.static])
+else
+ AC_MSG_RESULT(no)
+fi
+AM_CONDITIONAL(INCLUDE_PACMAN_STATIC, test "x$pacmanstatic" = "xyes")
-dnl ==========================================================================
+# Set root directory
+AC_SUBST(ROOTDIR)
+# Set package file extension
+AC_SUBST(PKGEXT)
+AC_DEFINE_UNQUOTED([PKGEXT], "$PKGEXT", [The file extension used by pacman packages])
+# Set source package file extension
+AC_SUBST(SRCEXT)
+AC_DEFINE_UNQUOTED([SRCEXT], "$SRCEXT", [The file extension used by pacman source packages])
+# Set database file extension
+AC_SUBST(DBEXT)
+AC_DEFINE_UNQUOTED([DBEXT], "$DBEXT", [The file extension used by pacman databases])
-AC_OUTPUT([
+# Configuration files
+AC_CONFIG_FILES([
lib/libalpm/Makefile
lib/libalpm/po/Makefile.in
src/pacman/Makefile
-src/pacman/po/Makefile.in
src/util/Makefile
scripts/Makefile
doc/Makefile
etc/Makefile
-etc/makepkg.conf
-etc/pacman.conf
etc/pacman.d/Makefile
-etc/pacman.d/mirrorlist
etc/abs/Makefile
+po/Makefile.in
pactest/Makefile
contrib/Makefile
Makefile
])
+AC_OUTPUT
echo "
-pacman-$VERSION:
+pacman_display_version:
- prefix : ${prefix}
+ Build information:
source code location : ${srcdir}
+ prefix : ${prefix}
+ sysconfdir : $(eval echo ${sysconfdir})
+ conf file : $(eval echo ${sysconfdir})/pacman.conf
+ localstatedir : $(eval echo ${localstatedir})
+ database dir : $(eval echo ${localstatedir})/lib/pacman/
+ cache dir : $(eval echo ${localstatedir})/cache/pacman/pkg/
compiler : ${CC}
compiler flags : ${CFLAGS}
defines : ${DEFS}
Architecture : ${CARCH}
- Architecture flags : -${ARCHSWITCH}=${CARCHFLAGS}
+ Architecture flags : ${CARCHFLAGS}
Host Type : ${CHOST}
libalpm version : ${LIB_VERSION}
pacman version : ${PACKAGE_VERSION}
- pacman.conf location : ${configfile}
+ Directory and file information:
+ root working directory : ${ROOTDIR}
+ package extension : ${PKGEXT}
+ source pkg extension : ${SRCEXT}
+ database extension : ${DBEXT}
+
+ Compilation options:
Doxygen support : ${usedoxygen}
+ Asciidoc support : ${useasciidoc}
debug support : ${debug}
- fakeroot-proof support : ${fakeroot}
+ include abs : ${includeabs}
+ build pacman.static : ${pacmanstatic}
"
+
+# vim:set ts=2 sw=2 noet:
diff --git a/contrib/.gitignore b/contrib/.gitignore
index 282522db..e69de29b 100644
--- a/contrib/.gitignore
+++ b/contrib/.gitignore
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index f78cdf8c..73d2130a 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -1,8 +1,14 @@
EXTRA_DIST = \
+ PKGBUILD.proto \
+ PKGBUILD.vim \
bash_completion \
- pacsearch \
+ install.proto \
pacdiff \
+ pacsearch \
re-pacman \
+ vimproject \
+ wget-xdelta.sh \
zsh_completion \
README
+# vim:set ts=2 sw=2 noet:
diff --git a/contrib/PKGBUILD.proto b/contrib/PKGBUILD.proto
new file mode 100644
index 00000000..9e4b69a0
--- /dev/null
+++ b/contrib/PKGBUILD.proto
@@ -0,0 +1,35 @@
+# This is an example PKGBUILD file. Use this as a start to creating your own,
+# and remove these comments. For more information, see 'man PKGBUILD'.
+# NOTE: Please fill out the license field for your package! If it is unknown,
+# then please put 'unknown'.
+
+# Contributor: Your Name <youremail@domain.com>
+pkgname=NAME
+pkgver=VERSION
+pkgrel=1
+pkgdesc=""
+arch=()
+url=""
+license=('GPL')
+groups=()
+depends=()
+makedepends=()
+provides=()
+conflicts=()
+replaces=()
+backup=()
+options=()
+install=
+source=($pkgname-$pkgver.tar.gz)
+noextract=()
+md5sums=() #generate with 'makepkg -g'
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="$pkgdir" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/contrib/PKGBUILD.vim b/contrib/PKGBUILD.vim
new file mode 100644
index 00000000..86862e2e
--- /dev/null
+++ b/contrib/PKGBUILD.vim
@@ -0,0 +1,233 @@
+" Vim syntax file
+" Language: PKGBUILD
+" Maintainer: Alessio 'mOLOk' Bolognino <themolok at gmail.com>
+" Last Change: 2007/05/08
+" Version Info: PKGBUILD-0.2 (colorphobic)
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+let b:main_syntax = "sh"
+runtime! syntax/sh.vim
+
+" case on
+syn case match
+
+" pkgname
+" FIXME if '=' is in pkgname/pkgver, it highlights whole string, not just '='
+syn keyword pb_k_pkgname pkgname contained
+syn match pbValidPkgname /\([[:alnum:]]\|+\|-\|_\){,32}/ contained contains=pbIllegalPkgname
+syn match pbIllegalPkgname /[[:upper:]]\|[^[:alnum:]-+_=]\|=.*=\|=['"]\?.\{33,\}['"]\?/ contained
+syn match pbPkgnameGroup /^pkgname=.*/ contains=pbIllegalPkgname,pb_k_pkgname,shDoubleQuote,shSingleQuote
+
+" pkgver
+syn keyword pb_k_pkgver pkgver contained
+syn match pbValidPkgver /\([[:alnum:]]\|\.\|+\|_\)/ contained contains=pbIllegalPkgver
+syn match pbIllegalPkgver /[^[:alnum:]+=\.\_]\|=.*=/ contained
+syn match pbPkgverGroup /^pkgver=.*/ contains=pbIllegalPkgver,pbValidPkgver,pb_k_pkgver,shDoubleQuote,shSingleQuote
+
+" pkgrel
+syn keyword pb_k_pkgrel pkgrel contained
+syn match pbValidPkgrel /[[:digit:]]*/ contained contains=pbIllegalPkgver
+syn match pbIllegalPkgrel /[^[:digit:]=]\|=.*=/ contained
+syn match pbPkgrelGroup /^pkgrel=.*/ contains=pbIllegalPkgrel,pbValidPkgrel,pb_k_pkgrel,shDoubleQuote,shSingleQuote
+
+" pkgdesc
+syn keyword pb_k_desc pkgdesc contained
+" 90 chars: 80 for description, 8 for pkgdesc and 2 for ''
+syn match pbIllegalPkgdesc /.\{90,}\|=['"]\?.*['" ]\+[iI][sS] [aA]/ contained contains=pbPkgdescSign
+syn match pbValidPkgdesc /[^='"]\.\{,80}/ contained contains=pbIllegalPkgdesc
+syn match pbPkgdescGroup /^pkgdesc=.*/ contains=pbIllegalPkgdesc,pb_k_desc,pbValidPkgdesc,shDoubleQuote,shSingleQuote
+syn match pbPkgdescSign /[='"]/ contained
+
+" url
+syn keyword pb_k_url url contained
+syn match pbValidUrl /['"]*\(https\|http\|ftp\)\:\/.*\.\+.*/ contained
+
+syn match pbIllegalUrl /[^=]/ contained contains=pbValidUrl
+syn match pbUrlGroup /^url=.*/ contains=pbValidUrl,pb_k_url,pbIllegalUrl,shDoubleQuote,shSingleQuote
+
+" license
+syn keyword pb_k_license license contained
+syn keyword pbLicense APACHE CDDL EPL FDL GPL LGPL MPL PHP RUBY ZLIB ISC MIT BSD contained
+syn match pbLicenseCustom /custom\(:[[:alnum:]]*\)*/ contained
+syn match pbIllegalLicense /[^='"() ]/ contained contains=pbLicenseCustom,pbLicense
+syn match pbLicenseGroup /^license=.*/ contains=pb_k_license,pbLicenseCustom,pbLicense,pbIllegalLicense,shDoubleQuote,shSingleQuote
+
+" backup
+syn keyword pb_k_backup backup contained
+syn match pbValidBackup /\.\?[[:alpha:]]*\/[[:alnum:]\{\}+._$-]*]*/ contained
+syn match pbBackupGroup /^backup=.*/ contains=pb_k_backup,pbValidBackup,shDoubleQuote,shSingleQuote
+
+" arch
+syn keyword pb_k_arch arch contained
+syn keyword pbArch i686 x86_64 ppc contained
+syn match pbIllegalArch /[^='() ]/ contained contains=pbArch
+syn match pbArchGroup /^arch=.*/ contains=pb_k_arch,pbArch,pbIllegalArch,shDoubleQuote,shSingleQuote
+
+" makedepends
+syn keyword pb_k_makedepends makedepends contained
+syn match pbValidMakedepends /\([[:alnum:]]\|+\|-\|_\)*/ contained
+syn region pbMakedependsGroup start=/^makedepends=(/ end=/)/ contains=pb_k_makedepends,pbValidMakedepends,shDoubleQuote,shSingleQuote
+
+" depends
+syn keyword pb_k_depends depends contained
+syn match pbValidDepends /\([[:alnum:]]\|+\|-\|_\)*/ contained
+syn region pbDependsGroup start=/^depends=(/ end=/)/ contains=pb_k_depends,pbValidDepends,shDoubleQuote,shSingleQuote
+
+" XXX little hack to color conflicts/provides/replaces keyword even without =()
+syn match pbkw /^\(conflicts\|provides\|replaces\)/ contains=pb_k_conflicts,pb_k_provides,pb_k_replaces
+hi def link pbkw keyword
+
+" conflicts
+syn keyword pb_k_conflicts conflicts contained
+syn match pbValidConflicts /\([[:alnum:]]\|+\|-\|_\)*/ contained
+syn region pbConflictsGroup start=/^conflicts=(/ end=/)/ contains=pb_k_conflicts,pbValidConflicts,shDoubleQuote,shSingleQuote
+
+" provides
+syn keyword pb_k_provides provides contained
+syn match pbValidProvides /\([[:alnum:]]\|+\|-\|_\)*/ contained
+syn region pbProvidesGroup start=/^provides=(/ end=/)/ contains=pb_k_provides,pbValidProvides,shDoubleQuote,shSingleQuote
+
+" replaces
+syn keyword pb_k_replaces replaces contained
+syn match pbValidReplaces /\([[:alnum:]]\|+\|-\|_\)*/ contained
+syn region pbReplacesGroup start=/^replaces=(/ end=/)/ contains=pb_k_replaces,pbValidReplaces,shDoubleQuote,shSingleQuote
+
+" install
+" XXX remove install from bashStatement, fix strage bug
+syn clear bashStatement
+syn keyword bashStatement chmod clear complete du egrep expr fgrep find gnufind gnugrep grep less ls mkdir mv rm rmdir rpm sed sleep sort strip tail touch
+
+syn keyword pb_k_install install contained
+syn match pbValidInstall /\([[:alnum:]]\|\$\|+\|-\|_\)*\.install/ contained
+syn match pbIllegalInstall /[^=]/ contained contains=pbValidInstall
+syn match pbInstallGroup /^install=.*/ contains=pb_k_install,pbValidInstall,pbIllegalInstall,shDeref,shDoubleQuote,shSingleQuote
+
+" source:
+" XXX remove source from shStatement, fixstrange bug
+syn clear shStatement
+syn keyword shStatement xxx wait getopts return autoload whence printf true popd nohup enable r trap readonly fc fg kill ulimit umask disown stop pushd read history logout times local exit test pwd time eval integer suspend dirs shopt hash false newgrp bg print jobs continue functions exec help cd break unalias chdir type shift builtin let bind
+
+syn keyword pb_k_source source contained
+syn match pbIllegalSource /\(http\|ftp\|https\).*\.\+\(dl\|download.\?\)\.\(sourceforge\|sf\).net/
+syn region pbSourceGroup start=/^source=(/ end=/)/ contains=pb_k_source,pbIllegalSource,shNumber,shDoubleQuote,shSingleQuote,pbDerefEmulation
+syn match pbDerefEmulation /\$[{]\?[[:alnum:]_]*[}]\?/ contained
+hi def link pbDerefEmulation PreProc
+
+" md5sums
+
+syn keyword pb_k_md5sums md5sums contained
+syn match pbIllegalMd5sums /[^='"()\/ ]/ contained contains=pbValidMd5sums
+syn match pbValidMd5sums /[[:alnum:]]\{32\}/ contained
+syn region pbMd5sumsGroup start=/^md5sums/ end=/)/ contains=pb_k_md5sums,pbMd5Quotes,pbMd5Hash,pbIllegalMd5sums
+syn match pbMd5Quotes /'.*'\|".*"/ contained contains=pbMd5Hash,pbIllegalMd5sums
+syn match pbMd5Hash /[[:alnum:]]\+/ contained contains=pbValidMd5sums
+hi def link pbMd5Quotes Keyword
+hi def link pbMd5Hash Error
+hi def link pbValidMd5sums Number
+
+" sha1sums
+syn keyword pb_k_sha1sums sha1sums contained
+syn match pbIllegalSha1sums /[^='"()\/ ]/ contained contains=pbValidSha1sums
+syn match pbValidSha1sums /[[:alnum:]]\{40\}/ contained
+syn region pbSha1sumsGroup start=/^sha1sums/ end=/)/ contains=pb_k_sha1sums,pbSha1Quotes,pbSha1Hash,pbIllegalSha1sums
+syn match pbSha1Quotes /'.*'\|".*"/ contained contains=pbSha1Hash,pbIllegalSha1sums
+syn match pbSha1Hash /[[:alnum:]]\+/ contained contains=pbValidSha1sums
+hi def link pbSha1Quotes Keyword
+hi def link pbSha1Hash Error
+hi def link pbValidSha1sums Number
+
+" options
+syn keyword pb_k_options options contained
+syn match pbOptions /\(no\)\?\(strip\|docs\|libtool\|emptydirs\|ccache\|distcc\|makeflags\|force\)/ contained
+syn match pbOptionsNeg /\!/ contained
+syn match pbOptionsDeprec /no/ contained
+syn region pbOptionsGroup start=/^options=(/ end=/)/ contains=pb_k_options,pbOptions,pbOptionsNeg,pbOptionsDeprec,pbIllegalOption,shDoubleQuote,shSingleQuote
+syn match pbIllegalOption /[^!"'()= ]/ contained contains=pbOptionsDeprec,pbOptions
+
+" noextract
+syn match pbNoextract /[[:alnum:]+._${}-]\+/ contained
+syn keyword pb_k_noextract noextract contained
+syn region pbNoextractGroup start=/^noextract=(/ end=/)/ contains=pb_k_noextract,pbNoextract,shDoubleQuote,shSingleQuote
+
+" comments
+syn keyword pb_k_maintainer Maintainer Contributor contained
+syn match pbMaintainerGroup /Maintainer.*/ contains=pbMaintainer contained
+
+syn match pbDate /[0-9]\{4}\/[0-9]\{2}\/[0-9]\{2}/ contained
+
+syn cluster pbCommentGroup contains=pbTodo,pb_k_maintainer,pbMaintainerGroup,pbDate
+syn keyword pbTodo contained COMBAK FIXME TODO XXX
+syn match pbComment "^#.*$" contains=@pbCommentGroup
+syn match pbComment "[^0-9]#.*$" contains=@pbCommentGroup
+
+" quotes are handled by sh.vim
+
+hi def link pbComment Comment
+hi def link pbTodo Todo
+
+hi def link pbIllegalPkgname Error
+hi def link pb_k_pkgname pbKeywords
+
+hi def link pbIllegalPkgver Error
+hi def link pb_k_pkgver pbKeywords
+
+hi def link pbIllegalPkgrel Error
+hi def link pb_k_pkgrel pbKeywords
+
+hi def link pbIllegalPkgdesc Error
+hi def link pb_k_desc pbKeywords
+
+hi def link pbIllegalUrl Error
+hi def link pb_k_url pbKeywords
+
+hi def link pb_k_license pbKeywords
+hi def link pbIllegalLicense Error
+
+hi def link pb_k_backup pbKeywords
+
+hi def link pb_k_arch pbKeywords
+hi def link pbIllegalArch Error
+
+hi def link pb_k_makedepends pbKeywords
+hi def link pb_k_depends pbKeywords
+hi def link pb_k_replaces pbKeywords
+hi def link pb_k_conflicts pbKeywords
+hi def link pb_k_provides pbKeywords
+
+hi def link pbIllegalInstall Error
+hi def link pb_k_install pbKeywords
+
+hi def link pb_k_source pbKeywords
+hi def link pbIllegalSource Error
+
+hi def link pb_k_md5sums pbKeywords
+hi def link pbIllegalMd5sums Error
+
+hi def link pb_k_sha1sums pbKeywords
+hi def link pbIllegalSha1sums Error
+
+hi def link pb_k_options pbKeywords
+hi def link pbOptionsDeprec Todo
+hi def link pbIllegalOption Error
+
+hi def link pb_k_noextract pbKeywords
+hi def link pbNoextract Normal
+
+hi def link pb_k_maintainer pbKeywords
+
+hi def link pbKeywords Keyword
+
+hi def link pbDate Special
+
+"syntax include @SHELL syntax/sh.vim
+"syntax region BUILD start=/^build()/ end=/^}/ contains=@SHELL
+"let b:current_syntax = "PKGBUILD"
+
+" vim: ft=vim
diff --git a/contrib/README b/contrib/README
index fa45bc9a..95186aba 100644
--- a/contrib/README
+++ b/contrib/README
@@ -1,16 +1,30 @@
Here is a brief description of the files included in this directory:
+{PKGBUILD,install}.proto - prototype PKGBUILD and install files for creating
+packages using makepkg.
+
+PKGBUILD.vim - a vim/gvim syntax file for PKGBUILDs. Colors known variable
+names, highlights common errors such as invalid characters in pkgname or
+pkgver, etc.
+
bash_completion - a bash completion script for pacman, install in
/etc/bash_completion.d/ for use (but rename to something descriptive!).
zsh_completion - a zsh completion script, install (with a rename) to
/usr/share/zsh/site-functions/.
+pacdiff - a simple pacnew/pacorig/pacsave updater for /etc/.
+
pacsearch - a colorized search combining both -Ss and -Qs output. Installed
packages are easily identified with a *** and local-only packages are also
listed.
-pacdiff - a simple pacnew/pacorig/pacsave updater for /etc/.
-
re-pacman - regenerate a pacman package based on installed files and the pacman
database entries. Useful for reuse, or possible config file extension.
+
+vimproject - a project file for the vim project plugin (some files listed
+may need to be updated).
+
+wget-xdelta.sh - A download script for pacman which allows binary deltas
+generated with makepkg to be used instead of downloading full binary packages.
+This should cut download sizes for some package upgrades significantly.
diff --git a/contrib/bash_completion b/contrib/bash_completion
index a27f4d75..d0851e70 100644
--- a/contrib/bash_completion
+++ b/contrib/bash_completion
@@ -7,18 +7,6 @@
# Distributed under the terms of the GNU General Public License, v2 or later.
#
-## ChangeLog ##
-#
-# * 3.0 (2007-02-18)
-# - Updated to pacman 3.0.0 options
-# * 1.1 (2004-01-17)
-# - Code cleanup
-# - Updated to pacman 2.7.2-2
-# * 2004-02-16 (orelien)
-# - Improved available_{pkgs,groups) functions
-# - Added support for querying groups
-#
-
## initial functions
rem_selected ()
@@ -60,7 +48,7 @@ _available_pkgs ()
local available_pkgs
local enabled_repos
enabled_repos=$( grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' )
- available_pkgs=$( for r in $enabled_repos; do echo /var/lib/pacman/$r/*; done )
+ available_pkgs=$( for r in $enabled_repos; do echo /var/lib/pacman/sync/$r/*; done )
COMPREPLY=( $( compgen -W "$( for i in $available_pkgs; do j=${i##*/}; echo ${j%-*-*}; done )" -- $cur ) )
}
@@ -79,7 +67,7 @@ _available_groups ()
local available_groups
local enabled_repos
enabled_repos=$( grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' )
- available_groups=$( for r in $enabled_repos; do sed '/%GROUPS%/,/^$/{//d; p}' /var/lib/pacman/$r/*/desc | sort -u; done )
+ available_groups=$( for r in $enabled_repos; do sed '/%GROUPS%/,/^$/{//d; p}' /var/lib/pacman/sync/$r/*/desc | sort -u; done )
COMPREPLY=( $( compgen -W "$( for i in $available_groups; do echo ${i%-*-*}; done )" -- $cur ) )
}
@@ -105,8 +93,8 @@ _makepkg ()
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '\
+ -A --ignorearch \
-b --builddeps \
- -B --noccache \
-c --clean \
-C --cleancache \
-d --nodeps \
@@ -115,14 +103,14 @@ _makepkg ()
-g --geninteg \
-h --help \
-i --install \
- -j \
-L --log \
-m --nocolor \
-o --nobuild \
-p \
-r --rmdeps \
-s --syncdeps \
- -S --usesudo \
+ --asroot \
+ --source \
--noconfirm \
--noprogressbar' -- $cur ) )
fi
@@ -158,7 +146,7 @@ _pacman ()
toparse="${a:2}"
case "${arg}" in
- -@(A|U|F|R|S|Q|h|V))
+ -@(A|U|R|S|Q|h|V))
op="${arg/-}"
mod="${mod}${a:2}"
;;
@@ -168,7 +156,6 @@ _pacman ()
add) op="A" ;;
remove) op="R" ;;
upgrade) op="U" ;;
- freshen) op="F" ;;
query) op="Q" ;;
sync) op="S" ;;
help) op="h" ;;
@@ -184,15 +171,19 @@ _pacman ()
print-uris) mod="${mod}p" ;;
search) mod="${mod}s" ;;
sysupgrade) mod="${mod}u" ;;
+ upgrades) mod="${mod}u" ;;
downloadonly) mod="${mod}w" ;;
refresh) mod="${mod}y" ;;
- orphans) mod="${mod}e" ;;
+ changelog) mod="${mod}c" ;;
+ deps) mod="${mod}d" ;;
+ explicit) mod="${mod}e" ;;
+ orphans) mod="${mod}t" ;;
foreign) mod="${mod}m" ;;
owns) mod="${mod}o" ;;
file) mod="${mod}p" ;;
search) mod="${mod}s" ;;
+ upgrades) mod="${mod}u" ;;
cascade) mod="${mod}c" ;;
- nodeps) mod="${mod}d" ;;
dbonly) mod="${mod}k" ;;
nosave) mod="${mod}n" ;;
recursive) mod="${mod}s" ;;
@@ -212,7 +203,6 @@ _pacman ()
if [ $COMP_CWORD -eq 1 ] && [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '\
-A --add \
- -F --freshen \
-h --help \
-Q --query \
-R --remove \
@@ -226,14 +216,15 @@ _pacman ()
if [[ "$cur" == -* ]]; then
case "${op}" in
- A|U|F)
+ A|U)
COMPREPLY=( $( compgen -W '\
+ --asdeps \
-d --nodeps \
-f --force \
-h --help \
--config \
+ --logfile \
--noconfirm \
- --ask \
--noprogressbar \
--noscriptlet \
-v --verbose \
@@ -247,14 +238,13 @@ _pacman ()
COMPREPLY=( $( compgen -W '\
-c --cascade \
-d --nodeps \
- -f --force \
-h --help \
-k --dbonly \
-n --nosave \
-s --recursive \
--config \
+ --logfile \
--noconfirm \
- --ask \
--noprogressbar \
--noscriptlet \
-v --verbose \
@@ -266,6 +256,7 @@ _pacman ()
;;
S)
COMPREPLY=( $( compgen -W '\
+ --asdeps \
-c --clean \
-d --nodeps \
-e --dependsonly \
@@ -279,10 +270,12 @@ _pacman ()
-u --sysupgrade \
-w --downloadonly \
-y --refresh \
+ --needed \
--ignore \
+ --ignoregroup \
--config \
+ --logfile \
--noconfirm \
- --ask \
--noprogressbar \
--noscriptlet \
-v --verbose \
@@ -295,7 +288,8 @@ _pacman ()
Q)
COMPREPLY=( $( compgen -W '\
-c --changelog \
- -e --orphans \
+ -d --deps \
+ -e --explicit \
-g --groups \
-h --help \
-i --info \
@@ -304,9 +298,11 @@ _pacman ()
-o --owns \
-p --file \
-s --search \
+ -t --orphans \
+ -u --upgrades \
--config \
+ --logfile \
--noconfirm \
- --ask \
--noprogressbar \
--noscriptlet \
-v --verbose \
@@ -338,6 +334,9 @@ _pacman ()
elif _instring $mod p; then
COMPREPLY=( $( compgen -d -- "$cur" ) \
$( compgen -f -X '!*.pkg.tar.gz' -- "$cur" ) )
+ elif _instring $mod u; then
+ COMPREPLY=''
+ return 0
else
_installed_pkgs
fi
diff --git a/contrib/install.proto b/contrib/install.proto
new file mode 100644
index 00000000..4bf55280
--- /dev/null
+++ b/contrib/install.proto
@@ -0,0 +1,40 @@
+# This is a default template for a post-install scriptlet. You can
+# remove any functions you don't need (and this header).
+
+# arg 1: the new package version
+pre_install() {
+ /bin/true
+}
+
+# arg 1: the new package version
+post_install() {
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+pre_upgrade() {
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ /bin/true
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
+
+op=$1
+shift
+["$(type -t "$op")" = "function" ] && $op "$@"
+
+# vim:set ts=2 sw=2 et:
diff --git a/contrib/pacdiff b/contrib/pacdiff
index 2ff431bb..2ff431bb 100644..100755
--- a/contrib/pacdiff
+++ b/contrib/pacdiff
diff --git a/contrib/pacsearch b/contrib/pacsearch
index 6eed254d..1e1c0504 100755
--- a/contrib/pacsearch
+++ b/contrib/pacsearch
@@ -72,7 +72,7 @@ done
# Print colorized package list and descriptions to screen
echo -e "$(sed -r \
- -e "s@current/.*@$CLR1&$BASE@" \
+ -e "s@core/.*@$CLR1&$BASE@" \
-e "s@extra/.*@$CLR2&$BASE@" \
-e "s@community/.*@$CLR3&$BASE@" \
-e "s@testing/.*@$CLR4&$BASE@" \
diff --git a/contrib/re-pacman b/contrib/re-pacman
index 350fe865..c53ce87d 100755
--- a/contrib/re-pacman
+++ b/contrib/re-pacman
@@ -48,6 +48,8 @@ make_pkginfo () {
done
}
+LANG="POSIX"
+
if [ $# -ne 1 ]; then
echo "usage: re-pacman <installed package name>"
exit 1
diff --git a/contrib/vimproject b/contrib/vimproject
index 662bf04f..c84b6762 100644
--- a/contrib/vimproject
+++ b/contrib/vimproject
@@ -24,16 +24,13 @@ pacman=~/devel/pacman-lib CD=. flags=S {
handle.c
log.c
md5.c
- md5driver.c
package.c
provide.c
remove.c
server.c
- sha1.c
sync.c
trans.c
util.c
- versioncmp.c
add.h
alpm.h
alpm_list.h
@@ -51,11 +48,9 @@ pacman=~/devel/pacman-lib CD=. flags=S {
provide.h
remove.h
server.h
- sha1.h
sync.h
trans.h
util.h
- versioncmp.h
Makefile.am
Makefile.in
}
diff --git a/contrib/wget-xdelta.sh b/contrib/wget-xdelta.sh
new file mode 100755
index 00000000..4656f4dd
--- /dev/null
+++ b/contrib/wget-xdelta.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+if [ -r "/etc/makepkg.conf" ]; then
+ source /etc/makepkg.conf
+else
+ echo "wget-xdelta: Unable to find makepkg.conf"
+ exit 1
+fi
+
+if [ -r ~/.makepkg.conf ]; then
+ source ~/.makepkg.conf
+fi
+
+out_file=$(basename $1)
+file_url=$2
+
+if ! [[ "$out_file" =~ "pkg.tar.gz" ]]; then
+ # If it's not a package file download as normal and exit.
+ #wget --passive-ftp -c -O "$out_file" "$file_url"
+ exit $?
+fi
+
+
+# Get the package name and version
+[[ "$out_file" =~ "$CARCH" ]] && arch="-$CARCH" || arch=""
+pkg_data=$(echo $out_file | \
+ sed "s|^\(.*\)-\([[:alnum:]_\.]*-[[:alnum:]_\.]*\)${arch}${PKGEXT}.part|\1 \2|")
+pkgname=$(echo $pkg_data | cut -d ' ' -f 1)
+new_version=$(echo $pkg_data | cut -d ' ' -f 2)
+base_url=${file_url%/*}
+
+# Look for the last version
+for file in $(ls -r /var/cache/pacman/pkg/${pkgname}-*-*{,-$CARCH}$PKGEXT 2>/dev/null); do
+ [[ "$file" =~ "$CARCH" ]] && arch="-$CARCH" || arch=""
+ check_version=$(echo $file | \
+ sed "s|^.*/${pkgname}-\([[:alnum:]_\.]*-[[:alnum:]_\.]*\)${arch}$PKGEXT$|\1|" | \
+ grep -v "^/var/cache/pacman/pkg")
+
+ [ "$check_version" = "" ] && continue
+
+ vercmp=$(vercmp "$check_version" "$old_version")
+ if [ "$check_version" != "$new_version" -a $vercmp -gt 0 ]; then
+ old_version=$check_version
+ old_file=$file
+ fi
+done
+
+if [ "$old_version" != "" -a "$old_version" != "$new_version" ]; then
+ # Great, we have a cached file, now calculate a patch name from it
+ delta_name="$pkgname-${old_version}_to_${new_version}-${CARCH}.delta"
+
+ echo "wget-xdelta: Attempting to download delta $delta_name..." >&2
+ if wget --passive-ftp -c "$base_url/$delta_name"; then
+ echo "wget-xdelta: Applying delta..."
+ if xdelta patch "$delta_name" "$old_file" "$out_file"; then
+ echo "wget-xdelta: Delta applied successfully!"
+ rm "$delta_name"
+ exit 0
+ else
+ echo "wget-xdelta: Failed to apply delta!"
+ rm $delta_name
+ fi
+ fi
+ fi
+
+echo "wget-xdelta: Downloading new package..."
+wget --passive-ftp -c -O "$out_file" "$file_url"
+exit $?
+
+# vim:set ts=4 sw=4 noet:
diff --git a/contrib/zsh_completion b/contrib/zsh_completion
index d7e14864..07cd422e 100644
--- a/contrib/zsh_completion
+++ b/contrib/zsh_completion
@@ -7,7 +7,6 @@ typeset -A opt_args
# options for passing to _arguments: main pacman commands
_pacman_opts_commands=(
'-A[Add a package to the system]'
- '-F[Upgrade an installed package]'
'-Q[Query the package database]'
'-R[Remove a package from the system]'
'-S[Synchronize packages]'
@@ -26,7 +25,7 @@ _pacman_opts_common=(
'--noconfirm[Do not ask for confirmation]'
)
-# options for passing to _arguments: options for --add, --freshen and --update commands
+# options for passing to _arguments: options for --add, and --update commands
_pacman_opts_pkgfile=(
'-d[Skip dependency checks]'
'-f[Overwrite conflicting files]'
@@ -76,6 +75,7 @@ _pacman_opts_sync_modifiers=(
'-w[Download packages only]'
'-y[Download fresh package databases]'
'*--ignore[Ignore a package upgrade]:package:_pacman_completions_installed_packages'
+ '*--ignoregroup[Ignore a group upgrade]:package group:_pacman_completions_all_groups'
)
# handles --action subcommand
@@ -85,13 +85,6 @@ _pacman_action_add() {
"$_pacman_opts_pkgfile[@]"
}
-# handles --freshen subcommand
-_pacman_action_freshen() {
- _arguments -s : \
- "$_pacman_opts_common[@]" \
- "$_pacman_opts_pkgfile[@]"
-}
-
# handles --help subcommand
_pacman_action_help() {
_arguments -s : \
@@ -227,9 +220,9 @@ _pacman_completions_all_packages() {
repositories=( $(_call_program repositories cat /etc/pacman.conf | grep "^\[" | sed "s,\(\[\|\]\),,g" | grep -v "^options" | sort -u) )
# these can be specified as either 'package' or 'repository/package'
if [[ "$PREFIX" == "" ]] ; then
- packages=( $(_call_program packages ls /var/lib/pacman/${^repositories} | grep -v "^/" | sed "s,\-[^-]*\-[^-]*$,," | sort -u) )
+ packages=( $(_call_program packages ls /var/lib/pacman/sync/${^repositories} | grep -v "^/" | sed "s,\-[^-]*\-[^-]*$,," | sort -u) )
else
- packages=( $(_call_program packages ls /var/lib/pacman/${^repositories} | grep -v "^/" | grep -e \^$PREFIX | sed "s,\-[^-]*\-[^-]*$,," | sort -u) )
+ packages=( $(_call_program packages ls /var/lib/pacman/sync/${^repositories} | grep -v "^/" | grep -e \^$PREFIX | sed "s,\-[^-]*\-[^-]*$,," | sort -u) )
fi
compadd "$@" -a packages
}
@@ -274,7 +267,6 @@ _pacman_get_command() {
_pacman() {
case $words[2] in
-A*) _pacman_action_add ;;
- -F*) _pacman_action_freshen ;;
-Qg) # ipkg groups
_arguments -s : \
"$_pacman_opts_common[@]" \
diff --git a/doc/.gitignore b/doc/.gitignore
index b6ab6ec3..e10f61a4 100644
--- a/doc/.gitignore
+++ b/doc/.gitignore
@@ -1,4 +1,9 @@
-Makefile
-Makefile.in
-*.html
+PKGBUILD.5
+libalpm.3
+makepkg.8
+makepkg.conf.5
+pacman.8
+pacman.conf.5
+repo-add.8
+*.xml
man3
diff --git a/lib/libalpm/Doxyfile b/doc/Doxyfile
index c0b98ad5..5174c651 100644
--- a/lib/libalpm/Doxyfile
+++ b/doc/Doxyfile
@@ -1,14 +1,14 @@
-# Doxyfile 1.4.5
+# Doxyfile 1.5.2
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
+DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = libalpm
PROJECT_NUMBER =
-OUTPUT_DIRECTORY =
+OUTPUT_DIRECTORY = ./
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
-USE_WINDOWS_ENCODING = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \
@@ -22,9 +22,9 @@ ABBREVIATE_BRIEF = "The $name class" \
a \
an \
the
-ALWAYS_DETAILED_SEC = NO
+ALWAYS_DETAILED_SEC = YES
INLINE_INHERITED_MEMB = NO
-FULL_PATH_NAMES = YES
+FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
@@ -33,11 +33,12 @@ MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
-TAB_SIZE = 8
+TAB_SIZE = 4
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
BUILTIN_STL_SUPPORT = NO
+CPP_CLI_SUPPORT = NO
DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES
#---------------------------------------------------------------------------
@@ -48,10 +49,10 @@ EXTRACT_PRIVATE = NO
EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
-HIDE_UNDOC_MEMBERS = YES
-HIDE_UNDOC_CLASSES = YES
+HIDE_UNDOC_MEMBERS = NO
+HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
-HIDE_IN_BODY_DOCS = NO
+HIDE_IN_BODY_DOCS = YES
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO
@@ -67,7 +68,7 @@ GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
-SHOW_DIRECTORIES = YES
+SHOW_DIRECTORIES = NO
FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
@@ -82,12 +83,14 @@ WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
-INPUT =
-FILE_PATTERNS = *.c
+INPUT = ../lib/libalpm/
+INPUT_ENCODING = UTF-8
+FILE_PATTERNS =
RECURSIVE = NO
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
+EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
@@ -99,50 +102,136 @@ FILTER_SOURCE_FILES = NO
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = NO
+INLINE_SOURCES = NO
+STRIP_CODE_COMMENTS = NO
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION = YES
+REFERENCES_LINK_SOURCE = YES
+USE_HTAGS = NO
+VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO
+COLS_IN_ALPHA_INDEX = 5
+IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = NO
+HTML_OUTPUT = html
+HTML_FILE_EXTENSION = .html
+HTML_HEADER =
+HTML_FOOTER =
+HTML_STYLESHEET =
+HTML_ALIGN_MEMBERS = YES
+GENERATE_HTMLHELP = NO
+CHM_FILE =
+HHC_LOCATION =
+GENERATE_CHI = NO
+BINARY_TOC = NO
+TOC_EXPAND = NO
+DISABLE_INDEX = NO
+ENUM_VALUES_PER_LINE = 4
+GENERATE_TREEVIEW = NO
+TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
+LATEX_OUTPUT = latex
+LATEX_CMD_NAME = latex
+MAKEINDEX_CMD_NAME = makeindex
+COMPACT_LATEX = NO
+PAPER_TYPE = a4wide
+EXTRA_PACKAGES =
+LATEX_HEADER =
+PDF_HYPERLINKS = NO
+USE_PDFLATEX = NO
+LATEX_BATCHMODE = NO
+LATEX_HIDE_INDICES = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
+RTF_OUTPUT = rtf
+COMPACT_RTF = NO
+RTF_HYPERLINKS = NO
+RTF_STYLESHEET_FILE =
+RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = YES
-MAN_OUTPUT = ../../doc
+MAN_OUTPUT = .
MAN_EXTENSION = .3
-MAN_LINKS = YES
+MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
+XML_OUTPUT = xml
+XML_SCHEMA =
+XML_DTD =
+XML_PROGRAMLISTING = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
+PERLMOD_LATEX = NO
+PERLMOD_PRETTY = YES
+PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
-MACRO_EXPANSION = NO
-EXPAND_ONLY_PREDEF = NO
+MACRO_EXPANSION = YES
+EXPAND_ONLY_PREDEF = YES
SEARCH_INCLUDES = YES
-INCLUDE_PATH =
-INCLUDE_FILE_PATTERNS =
-PREDEFINED =
+INCLUDE_PATH = ../..
+INCLUDE_FILE_PATTERNS = *.h
+PREDEFINED = HAVE_CONFIG_H= SYMHIDDEN= SYMEXPORT=
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+TAGFILES =
+GENERATE_TAGFILE =
+ALLEXTERNALS = NO
+EXTERNAL_GROUPS = YES
+PERL_PATH = /usr/bin/perl
+#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
+MSCGEN_PATH =
+HIDE_UNDOC_RELATIONS = YES
+HAVE_DOT = YES
+CLASS_GRAPH = YES
+COLLABORATION_GRAPH = YES
+GROUP_GRAPHS = YES
+UML_LOOK = NO
+TEMPLATE_RELATIONS = NO
+INCLUDE_GRAPH = YES
+INCLUDED_BY_GRAPH = YES
+CALL_GRAPH = NO
+CALLER_GRAPH = NO
+GRAPHICAL_HIERARCHY = YES
+DIRECTORY_GRAPH = YES
+DOT_IMAGE_FORMAT = png
+DOT_PATH =
+DOTFILE_DIRS =
+DOT_GRAPH_MAX_NODES = 50
+DOT_TRANSPARENT = NO
+DOT_MULTI_TARGETS = NO
+GENERATE_LEGEND = YES
+DOT_CLEANUP = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
diff --git a/doc/Makefile.am b/doc/Makefile.am
index f748ee6b..abc761b8 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,17 +1,76 @@
-man_MANS = \
+# We have to do some funny stuff here with the manpages. In order to ensure
+# a dist tarball doesn't get put out there without manpages, we keep those
+# files listed in EXTRA_DIST no matter what. However, we only add them to
+# man_MANS if --enable-asciidoc and/or --enable-doxygen are used.
+
+ASCIIDOC_MANS = \
pacman.8 \
makepkg.8 \
+ repo-add.8 \
PKGBUILD.5 \
makepkg.conf.5 \
pacman.conf.5 \
libalpm.3
-if HAS_DOXYGEN
-man_MANS += $(wildcard man3/*.3)
+DOXYGEN_MANS = $(wildcard man3/*.3)
+
+man_MANS =
+
+if USE_ASCIIDOC
+man_MANS += $(ASCIIDOC_MANS)
endif
+if USE_DOXYGEN
+man_MANS += $(DOXYGEN_MANS)
+endif
+
+EXTRA_DIST = \
+ pacman.8.txt \
+ makepkg.8.txt \
+ repo-add.8.txt \
+ PKGBUILD.5.txt \
+ PKGBUILD-example.txt \
+ makepkg.conf.5.txt \
+ pacman.conf.5.txt \
+ libalpm.3.txt \
+ footer.txt \
+ Doxyfile \
+ $(ASCIIDOC_MANS) \
+ $(DOXYGEN_MANS)
+
+# Files that should be removed, but which Automake does not know.
+MOSTLYCLEANFILES = $(DOXYGEN_MANS) *.xml
-EXTRA_DIST = $(man_MANS)
+if USE_DOXYGEN
+all: doxygen.in
-clean-local:
- $(RM) man3/*.3
+doxygen.in:
+ $(DOXYGEN) $(srcdir)/Doxyfile
+endif
+
+if USE_ASCIIDOC
+ASCIIDOC_OPTS = \
+ -f asciidoc.conf \
+ -a pacman_version="$(PACKAGE_VERSION)" \
+ -a pacman_date="`date +%Y-%m-%d`" \
+ -a sysconfdir=$(sysconfdir)
+A2X_OPTS = \
+ -d manpage \
+ -f manpage \
+ --xsltproc-opts='-param man.endnotes.list.enabled 0' \
+ --xsltproc-opts='-param man.endnotes.are.numbered 0'
+
+$(ASCIIDOC_MANS):
+ a2x $(A2X_OPTS) --asciidoc-opts="$(ASCIIDOC_OPTS)" $@.txt
+
+# These rules are due to the includes and files of the asciidoc text
+$(ASCIIDOC_MANS): footer.txt
+pacman.8: pacman.8.txt
+makepkg.8: makepkg.8.txt
+repo-add.8: repo-add.8.txt
+PKGBUILD.5: PKGBUILD.5.txt PKGBUILD-example.txt
+makepkg.conf.5: makepkg.conf.5.txt
+pacman.conf.5: pacman.conf.5.txt
+libalpm.3: libalpm.3.txt
+endif
+# vim:set ts=2 sw=2 noet:
diff --git a/doc/PKGBUILD-example.txt b/doc/PKGBUILD-example.txt
new file mode 100644
index 00000000..2cc53808
--- /dev/null
+++ b/doc/PKGBUILD-example.txt
@@ -0,0 +1,20 @@
+# Maintainer: judd <jvinet@zeroflux.org>
+
+pkgname=patch
+pkgver=2.5.4
+pkgrel=3
+pkgdesc="A utility to apply patch files to original sources"
+arch=(i686 x86_64)
+url="http://www.gnu.org/software/patch/patch.html"
+license=('GPL')
+groups=('base-devel')
+depends=('glibc' 'ed')
+source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('ee5ae84d115f051d87fcaaef3b4ae782')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make prefix=$startdir/pkg/usr install
+}
diff --git a/doc/PKGBUILD.5 b/doc/PKGBUILD.5
deleted file mode 100644
index 747b9f15..00000000
--- a/doc/PKGBUILD.5
+++ /dev/null
@@ -1,288 +0,0 @@
-." the string declarations are a start to try and make distro independent
-.ds DS Arch Linux
-.ds PB PKGBUILD
-.ds VR 3.0.0
-.TH \*(PB 5 "Feb 07, 2007" "\*(PB version \*(VR" "\*(DS Files"
-.SH NAME
-\*(PB \- \*(DS package build description file
-
-.SH DESCRIPTION
-This manual page is meant to describe general rules about \fB\*(PB\fPs. Once
-a \fB\*(PB\fP is written, the actual package is built using \fBmakepkg\fP and
-installed with \fBpacman\fP.
-
-\fBNOTE:\fP If you have a local copy of the Arch Build System (ABS) tree
-on your computer, you can copy the \*(PB.proto file to your new package
-build directory and edit it from there. To acquire/sync the ABS tree, use
-the \fBabs\fP script included with \fBpacman\fP.
-
-.SH OPTIONS AND DIRECTIVES
-.TP
-.B pkgname
-The name of the package. This has be a unix-friendly name as it will be
-used in the package filename.
-
-.TP
-.B pkgver
-The version of the software as released from the author (e.g. 2.7.1).
-
-.TP
-.B pkgrel
-This is the release number specific to the \*(DSs release. This allows package
-maintainers to make updates to the package's configure flags, for example.
-
-.TP
-.B pkgdesc
-This should be a brief description of the package and its functionality. Try to
-keep the description to one line of text.
-
-.TP
-.B url
-This field contains a URL that is associated with the software being packaged.
-This is typically the project's website.
-
-.TP
-.B license (array)
-This field specifies the license(s) that apply to the package. Commonly-used
-licenses are found in \fI/usr/share/licenses/common\fP. If you see the
-package's license there, simply reference it in the license field (e.g.
-\fBlicense=("GPL")\fP). If the package provides a license not found in
-\fI/usr/share/licenses/common\fP, then you should include the license in the
-package itself and set \fBlicense=("custom")\fP or
-\fBlicense=("custom:LicenseName")\fP. The license should be placed in
-\fI$startdir/pkg/usr/share/licenses/$pkgname\fP when building the package. If
-multiple licenses are applicable for a package, list all of them:
-\fBlicenses=('GPL' 'FDL')\fP.
-
-.TP
-.B install
-Specifies a special install script that is to be included in the package. This
-file should reside in the same directory as the \fB\*(PB\fP, and will be copied
-into the package by \fBmakepkg\fP. It does not need to be included in the
-\fIsource\fP array (e.g. \fBinstall=pkgname.install\fP).
-
-.TP
-.B source \fI(array)\fP
-An array of source files required to build the package. Source files must
-either reside in the same directory as the \fB\*(PB file\fP, or be a
-fully-qualified URL that makepkg will use to download the file. In order to
-make the PKGBUILD as useful as possible, use the \fB$pkgname\fP and
-\fB$pkgver\fP variables if possible when specifying the download location.
-
-.TP
-.B noextract \fI(array)\fP
-An array of filenames corresponding to those from the \fBsource\fP array. Files
-listed here will not be extracted with the rest of the source files. This is
-useful for packages which use compressed data which is downloaded but not
-necessary to uncompress.
-
-.TP
-.B md5sums \fI(array)\fP
-This array contains an MD5 hash for every source file specified in the
-\fBsource\fP array (in the same order). \fBmakepkg\fP will use this to verify
-source file integrity during subsequent builds. To easily generate md5sums, run
-"makepkg -g >> \*(PB". If desired, move the \fBmd5sums\fP line to an
-appropriate location. NOTE: \fBmakepkg\fP supports multiple integrity
-algorithms and their corresponding arrays (i.e. sha1sums for the SHA1
-algorithm); however, official packages use only md5sums for the time being.
-
-.TP
-.B sha1sums, etc.
-Alternative integrity checks that \fBmakepkg\fP supports, as noted in
-\fBmd5sums\fP above.
-
-.TP
-.B groups \fI(array)\fP
-An array of symbolic names that represent groups of packages, allowing
-you to install multiple packages by requesting a single target. For example,
-one could install all KDE packages by installing the 'kde' group.
-
-.TP
-.B arch \fI(array)\fP
-Defines on which architectures the given package is available (e.g.
-\fBarch=('i686' 'x86_64')\fP).
-
-.TP
-.B backup \fI(array)\fP
-A space-delimited array of filenames, \fIwithout\fP preceding slashes, that
-should be backed up if the package is removed or upgraded. This is commonly
-used for packages placing configuration files in /etc. See \fBHANDLING CONFIG
-FILES\fP in the \fBpacman\fP manpage for more information.
-
-.TP
-.B depends \fI(array)\fP
-An array of packages that this package depends on to run. Packages in this list
-should be surrounded with single quotes and contain at least the package name.
-Entries can also include a version requirement of the form
-\fB'name<>version'\fP, where <> is one of three comparisons: \fI>=\fP (greater
-than or equal to), \fI<=\fP (less than or equal to), or \fI=\fP (equal to).
-
-.TP
-.B makedepends \fI(array)\fP
-An array of packages that this package depends on to build, but are not needed
-at runtime. Packages in this list follow the same format as \fBdepends\fP.
-
-.TP
-.B conflicts \fI(array)\fP
-An array of packages that will conflict with this package (i.e. they cannot
-both be installed at the same time). This directive follows the same format as
-\fIdepends\fP, except you cannot specify versions.
-
-.TP
-.B provides \fI(array)\fP
-An array of "virtual provisions" that this package provides. This allows a
-package to provide dependencies other than its own package name. For example,
-the dcron package can provide 'cron', which allows packages to depend on 'cron'
-rather than 'dcron OR fcron'.
-
-.TP
-.B replaces \fI(array)\fP
-An array of packages that this package should replace, and can be used to
-handle renamed/combined packages. For example, if the 'j2re' package is renamed
-to 'jre', this directive allows future upgrades to continue as expected even
-though the package has moved.
-
-.TP
-.B options \fI(array)\fP
-This array allows you to override some of \fBmakepkg\fP's default behavior when
-building packages. To set an option, just include the option name in the
-\fBoptions\fP array. To reverse the default behavior, place an "!" at the front
-of the option. Only specify the options you specifically want to override, the
-rest will be taken from \fBmakepkg.conf\fP. NOTE: 'force' is a special option
-only used in \fB\*(PB\fPs, do not use it unless you know what you are doing.
-.RS
-.TP
-.B strip
-Strip symbols from binaries and libraries. If you frequently use a debugger on
-programs or libraries, it may be helpful to disable this option.
-.TP
-.B docs
-Save doc and info directories. If you wish to delete doc and info directories,
-specify "!docs" in the array.
-.TP
-.B libtool
-Leave libtool (.la) files in packages. Specify "!libtool" to remove them.
-.TP
-.B emptydirs
-Leave empty directories in packages.
-.TP
-.B ccache
-Allow the use of \fBccache\fP during build. More useful in its negative form
-"!ccache" with select packages that have problems building with \fBccache\fP.
-.TP
-.B distcc
-Allow the use of \fBdistcc\fP during build. More useful in its negative form
-"!distcc" with select packages that have problems building with \fBdistcc\fP.
-.TP
-.B makeflags
-Allow the use of user-specific makeflags during build as specified in
-\fBmakepkg.conf\fP. More useful in its negative form "!makeflags" with select
-packages that have problems building with custom makeflags such as "-j2" (or
-higher).
-.TP
-.B force
-Force the package to be upgraded by a \fBpacman\fP system upgrade operation,
-even if the version number would normally not trigger such an upgrade. This is
-useful when the version numbering scheme of a package changes (or is
-alphanumeric).
-.RE
-
-.SH INSTALL/UPGRADE/REMOVE SCRIPTING
-\fBPacman\fP has the ability to store and execute a package-specific script
-when it installs, removes, or upgrades a package. This allows a package to
-configure itself after installation and do the opposite right before it is
-removed.
-
-The exact time the script is run varies with each operation:
-
-.TP
-.B pre_install
-script is run right before files are extracted.
-
-.TP
-.B post_install
-script is run right after files are extracted.
-
-.TP
-.B pre_upgrade
-script is run right before files are extracted.
-
-.TP
-.B post_upgrade
-script is run after files are extracted.
-
-.TP
-.B pre_remove
-script is run right before files are removed.
-
-.TP
-.B post_remove
-script is run right after files are removed.
-
-.P
-To use this feature, create a file such as 'pkgname.install' and put it in
-the same directory as the \fB\*(PB\fP script. Then use the \fBinstall\fP
-directive:
-
-.RS
-.nf
-install=pkgname.install
-.fi
-.RE
-
-The install script does not need to be specified in the \fBsource\fP array.
-A template install file is available in the ABS tree (/var/abs/install.proto).
-
-.SH EXAMPLE
-The following is an example \fB\*(PB\fP for the 'modutils' package. For more
-examples, look through the ABS tree.
-
-.nf
-# Maintainer: John Doe <johndoe@archlinux.org>
-# Contributor: Bill Smith <billsmith@archlinux.org>
-pkgname=modutils
-pkgver=2.4.25
-pkgrel=1
-pkgdesc="Utilities for inserting modules in the linux kernel"
-url="http://www.kernel.org"
-makedepends=('bash' 'mawk')
-depends=('glibc' 'zlib')
-backup=(etc/modules.conf)
-source=(ftp://ftp.kernel.org/pub/linux/utils/kernel/$pkgname/v2.4/$pkgname-$pkgver.tar.bz2
- modules.conf)
-arch=('i686')
-license=('GPL' 'custom') # dual licensed
-md5sums=('2c0cca3ef6330a187c6ef4fe41ecaa4d'
- '35175bee593a7cc7d6205584a94d8625')
-options=(!libtool)
-
-build() {
- cd $startdir/src/$pkgname-$pkgver
- ./configure --prefix=/usr --enable-insmod-static
- make || return 1
- make prefix=$startdir/pkg/usr install
- mv $startdir/pkg/usr/sbin $startdir/pkg
- mkdir -p $startdir/pkg/etc
- cp ../modules.conf $startdir/pkg/etc
-}
-.fi
-
-.SH SEE ALSO
-.BR makepkg (8),
-.BR pacman (8),
-.BR makepkg.conf (5)
-
-See the Arch Linux website at <http://www.archlinux.org> for more current
-information on the distribution and the \fBpacman\fP family of tools, and
-<http://wiki.archlinux.org/index.php/Arch_Packaging_Standards> for
-recommendations on packaging standards.
-
-.SH AUTHORS
-.nf
-Judd Vinet <jvinet@zeroflux.org>
-Aurelien Foret <aurelien@archlinux.org>
-Aaron Griffin <aaron@archlinux.org>
-Dan McGee <dan@archlinux.org>
-.fi
-
-See the 'AUTHORS' file for additional contributors.
diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt
new file mode 100644
index 00000000..d022c9af
--- /dev/null
+++ b/doc/PKGBUILD.5.txt
@@ -0,0 +1,309 @@
+/////
+vim:set ts=4 sw=4 syntax=asciidoc noet:
+/////
+PKGBUILD(5)
+===========
+
+Name
+----
+PKGBUILD - Arch Linux package build description file
+
+
+Synopsis
+--------
+PKGBUILD
+
+
+Description
+-----------
+This manual page is meant to describe general rules about PKGBUILDs. Once a
+PKGBUILD is written, the actual package is built using makepkg and installed
+with pacman.
+
+NOTE: If you have a local copy of the Arch Build System (ABS) tree on your
+computer, you can copy the PKGBUILD.proto file to your new package build
+directory and edit it from there. To acquire/sync the ABS tree, use the abs
+script included with pacman.
+
+
+Options and Directives
+----------------------
+*pkgname*::
+ The name of the package. This has be a unix-friendly name as it will be
+ used in the package filename.
+
+*pkgver*::
+ The version of the software as released from the author (e.g. \'2.7.1').
+
+*pkgrel*::
+ This is the release number specific to the Arch Linux release. This
+ allows package maintainers to make updates to the package's configure
+ flags, for example. A pkgrel of 1 is typically used for each upstream
+ software release and is incremented for intermediate PKGBUILD updates.
+
+*pkgdesc*::
+ This should be a brief description of the package and its functionality.
+ Try to keep the description to one line of text.
+
+*url*::
+ This field contains a URL that is associated with the software being
+ packaged. This is typically the project's website.
+
+*license (array)*::
+ This field specifies the license(s) that apply to the package.
+ Commonly-used licenses are found in '/usr/share/licenses/common'. If you
+ see the package's license there, simply reference it in the license
+ field (e.g. `$$license=('GPL')$$`). If the package provides a license not
+ found in '/usr/share/licenses/common', then you should include the license
+ in the package itself and set `$$license=('custom')$$` or
+ `$$license=('custom:LicenseName')$$`. The license should be placed in
+ '$pkgdir/usr/share/licenses/$pkgname' when building the package. If
+ multiple licenses are applicable for a package, list all of them:
+ `$$license=('GPL' 'FDL')$$`.
+
+*install*::
+ Specifies a special install script that is to be included in the package.
+ This file should reside in the same directory as the PKGBUILD, and will
+ be copied into the package by makepkg. It does not need to be included
+ in the source array (e.g. `$$install=pkgname.install$$`).
+
+*source (array)*::
+ An array of source files required to build the package. Source files
+ must either reside in the same directory as the PKGBUILD file, or be a
+ fully-qualified URL that makepkg will use to download the file. In order
+ to make the PKGBUILD as useful as possible, use the $pkgname and $pkgver
+ variables if possible when specifying the download location. Any files
+ that are compressed will automatically be extracted, unless found in
+ the noextract array listed below.
+
+*noextract (array)*::
+ An array of filenames corresponding to those from the source array. Files
+ listed here will not be extracted with the rest of the source files. This
+ is useful for packages which use compressed data which is downloaded but
+ not necessary to uncompress.
+
+*md5sums (array)*::
+ This array contains an MD5 hash for every source file specified in the
+ source array (in the same order). makepkg will use this to verify source
+ file integrity during subsequent builds. To easily generate md5sums, run
+ ``makepkg -g >> PKGBUILD''. If desired, move the md5sums line to an
+ appropriate location. *NOTE:* makepkg supports multiple integrity
+ algorithms and their corresponding arrays (i.e. sha1sums for the SHA1
+ algorithm); however, official packages use only md5sums for the time
+ being.
+
+*sha1sums, etc.*::
+ Alternative integrity checks that makepkg supports, as noted in md5sums
+ above.
+
+*groups (array)*::
+ An array of symbolic names that represent groups of packages, allowing
+ you to install multiple packages by requesting a single target. For
+ example, one could install all KDE packages by installing the 'kde' group.
+
+*arch (array)*::
+ Defines on which architectures the given package is available (e.g.
+ `$$arch=('i686' 'x86_64')$$`).
+
+*backup (array)*::
+ A space-delimited array of filenames, without preceding slashes, that
+ should be backed up if the package is removed or upgraded. This is
+ commonly used for packages placing configuration files in /etc. See
+ Handling Config Files in manlink:pacman[8] for more information.
+
+*depends (array)*::
+ An array of packages that this package depends on to run. Packages in
+ this list should be surrounded with single quotes and contain at least
+ the package name. Entries can also include a version requirement of the
+ form 'name<>version', where <> is one of three comparisons: >= (greater
+ than or equal to), <= (less than or equal to), or = (equal to).
+
+*makedepends (array)*::
+ An array of packages that this package depends on to build, but are not
+ needed at runtime. Packages in this list follow the same format as
+ depends.
+
+*conflicts (array)*::
+ An array of packages that will conflict with this package (i.e. they
+ cannot both be installed at the same time). This directive follows the
+ same format as depends. Versioned conflicts are also supported.
+
+*provides (array)*::
+ An array of ``virtual provisions'' that this package provides. This allows
+ a package to provide dependencies other than its own package name. For
+ example, the dcron package can provide 'cron', which allows packages to
+ depend on 'cron' rather than 'dcron OR fcron'.
+ Versioned provisions are also possible. For example, dcron can provide
+ 'cron 2.0' to satisfy the 'cron>=2.0' dependency of other packages.
+
+*replaces (array)*::
+ An array of packages that this package should replace, and can be used
+ to handle renamed/combined packages. For example, if the 'j2re' package
+ is renamed to 'jre', this directive allows future upgrades to continue
+ as expected even though the package has moved. Sysupgrade is currently
+ the only pacman operation that utilizes this field, a normal sync will
+ not use its value.
+
+*options (array)*::
+ This array allows you to override some of makepkg's default behavior
+ when building packages. To set an option, just include the option name
+ in the options array. To reverse the default behavior, place an ``!'' at
+ the front of the option. Only specify the options you specifically want
+ to override, the rest will be taken from manlink:makepkg.conf[5].
+ *NOTE:* 'force' is a special option only used in a manlink:PKGBUILD[5],
+ do not use it unless you know what you are doing.
+
+ *strip*;;
+ Strip symbols from binaries and libraries. If you frequently
+ use a debugger on programs or libraries, it may be helpful to
+ disable this option.
+
+ *docs*;;
+ Save doc and info directories. If you wish to delete doc and
+ info directories, specify `!docs` in the array.
+
+ *libtool*;;
+ Leave libtool (.la) files in packages. Specify `!libtool` to
+ remove them.
+
+ *emptydirs*;;
+ Leave empty directories in packages.
+
+ *ccache*;;
+ Allow the use of ccache during build. More useful in its negative
+ form `!ccache` with select packages that have problems building
+ with ccache.
+
+ *distcc*;;
+ Allow the use of distcc during build. More useful in its negative
+ form `!distcc` with select packages that have problems building
+ with distcc.
+
+ *makeflags*;;
+ Allow the use of user-specific makeflags during build as specified
+ in manlink:makepkg.conf[5]. More useful in its negative form
+ `!makeflags` with select packages that have problems building with
+ custom makeflags such as `-j2` (or higher).
+
+ *force*;;
+ Force the package to be upgraded by a pacman system upgrade
+ operation, even if the version number would normally not trigger
+ such an upgrade. This is useful when the version numbering scheme
+ of a package changes (or is alphanumeric).
+
+
+Install/Upgrade/Remove Scripting
+--------------------------------
+Pacman has the ability to store and execute a package-specific script when it
+installs, removes, or upgrades a package. This allows a package to configure
+itself after installation and perform an opposite action upon removal.
+
+The exact time the script is run varies with each operation:
+
+*pre_install*::
+ script is run right before files are extracted.
+
+*post_install*::
+ script is run right after files are extracted.
+
+*pre_upgrade*::
+ script is run right before files are extracted.
+
+*post_upgrade*::
+ script is run after files are extracted.
+
+*pre_remove*::
+ script is run right before files are removed.
+
+*post_remove*::
+ script is run right after files are removed.
+
+To use this feature, create a file such as 'pkgname.install' and put it in the
+same directory as the PKGBUILD script. Then use the install directive:
+
+ install=pkgname.install
+
+The install script does not need to be specified in the source array. A
+template install file is available in the ABS tree (/var/abs/install.proto).
+
+
+Development Directives
+----------------------
+makepkg supports building development versions of packages without having to
+manually update the pkgver in the PKGBUILD. This was formerly done using the
+separate utility 'versionpkg'. In order to utilize this functionality, your
+PKGBUILD must use correct variable names depending on the SCM being fetched
+from.
+
+*CVS*::
+ The generated pkgver will be the date the package is built.
+
+ *_cvsroot*;;
+ The root of the CVS repository.
+
+ *_cvsmod*;;
+ The CVS module to fetch.
+
+*SVN*::
+ The generated pkgver will be the latest SVN revision number.
+
+ *_svntrunk*;;
+ The trunk of the SVN repository.
+
+ *_cvsmod*;;
+ The SVN module to fetch.
+
+*Git*::
+ The generated pkgver will be one formatted by the 'git-describe'
+ command, with '-' characters converted to '_' characters.
+
+ *_gitroot*;;
+ The URL (all protocols supported) to the GIT repository.
+
+ *_gitname*;;
+ GIT tag or branch to use.
+
+*Mercurial*::
+ The generated pkgver will be the hg tip revision number.
+
+ *_hgroot*;;
+ The URL of the mercurial repository.
+
+ *_hgrepo*;;
+ The repository to follow.
+
+*Darcs*::
+ The generated pkgver will be the date the package is built.
+
+ *_darcstrunk*;;
+ URL to the repository trunk.
+
+ *_darcsmod*;;
+ Darcs module to use.
+
+*Bazaar*::
+ The generated pkgver will be the latest Bazaar revision number (revno).
+
+ *_bzrtrunk*;;
+ URL to the bazaar repository.
+
+ *_bzrmod*;;
+ Bazaar module to use.
+
+
+Example
+-------
+The following is an example PKGBUILD for the 'patch' package. For more
+examples, look through the ABS tree.
+
+[sh]
+source~~~~~
+include::PKGBUILD-example.txt[]
+source~~~~~
+
+
+See Also
+--------
+manlink:makepkg[8], manlink:pacman[8], manlink:makepkg.conf[5]
+
+include::footer.txt[]
diff --git a/doc/asciidoc.conf b/doc/asciidoc.conf
new file mode 100644
index 00000000..98308f53
--- /dev/null
+++ b/doc/asciidoc.conf
@@ -0,0 +1,70 @@
+#
+# Inspired by/borrowed from the GIT source tree at Documentation/asciidoc.conf
+#
+
+## manlink: macro
+#
+# Usage: manlink:command[manpage-section]
+#
+# Note, {0} is the manpage section, while {target} is the command.
+#
+# Show man link as: <command>(<section>); if section is defined, else just show
+# the command.
+
+[attributes]
+plus=&#43;
+caret=&#94;
+startsb=&#91;
+endsb=&#93;
+tilde=&#126;
+
+ifdef::backend-docbook[]
+[manlink-inlinemacro]
+{0%{target}}
+{0#<citerefentry>}
+{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>}
+{0#</citerefentry>}
+endif::backend-docbook[]
+
+ifdef::backend-docbook[]
+# "unbreak" docbook-xsl v1.68 for manpages. v1.69 works with or without this.
+[listingblock]
+<example><title>{title}</title>
+<literallayout>
+ifdef::doctype-manpage[]
+&#10;.ft C&#10;
+endif::doctype-manpage[]
+|
+ifdef::doctype-manpage[]
+&#10;.ft&#10;
+endif::doctype-manpage[]
+</literallayout>
+{title#}</example>
+endif::backend-docbook[]
+
+ifdef::doctype-manpage[]
+ifdef::backend-docbook[]
+[header]
+template::[header-declarations]
+<refentry>
+<refentryinfo>
+<date>{pacman_date}</date>
+</refentryinfo>
+<refmeta>
+<refentrytitle>{mantitle}</refentrytitle>
+<manvolnum>{manvolnum}</manvolnum>
+<refmiscinfo class="source">Pacman</refmiscinfo>
+<refmiscinfo class="version">{pacman_version}</refmiscinfo>
+<refmiscinfo class="manual">Pacman Manual</refmiscinfo>
+</refmeta>
+<refnamediv>
+ <refname>{manname}</refname>
+ <refpurpose>{manpurpose}</refpurpose>
+</refnamediv>
+endif::backend-docbook[]
+endif::doctype-manpage[]
+
+ifdef::backend-xhtml11[]
+[manlink-inlinemacro]
+<a href="{target}.{0}.html">{target}{0?({0})}</a>
+endif::backend-xhtml11[]
diff --git a/doc/footer.txt b/doc/footer.txt
new file mode 100644
index 00000000..4d7a9c95
--- /dev/null
+++ b/doc/footer.txt
@@ -0,0 +1,24 @@
+/////
+vim:set ts=4 sw=4 syntax=asciidoc noet:
+/////
+See the Arch Linux website at http://www.archlinux.org[] for more current
+information on the distribution and the pacman family of tools, and
+http://wiki.archlinux.org/index.php/Arch_Packaging_Standards[] for
+recommendations on packaging standards.
+
+
+Bugs
+----
+Bugs? You must be kidding, there are no bugs in this software. But if we
+happen to be wrong, send us an email with as much detail as possible to
+mailto:pacman-dev@archlinux.org[].
+
+
+Authors
+-------
+* Judd Vinet <jvinet@zeroflux.org>
+* Aurelien Foret <aurelien@archlinux.org>
+* Aaron Griffin <aaron@archlinux.org>
+* Dan McGee <dan@archlinux.org>
+
+See the 'AUTHORS' file for additional contributors.
diff --git a/doc/libalpm.3 b/doc/libalpm.3
deleted file mode 100644
index e78e9eca..00000000
--- a/doc/libalpm.3
+++ /dev/null
@@ -1,53 +0,0 @@
-." the string declarations are a start to try and make distro independent
-.ds DS Arch Linux
-.ds PB PKGBUILD
-.ds VR 3.0.0
-.ds LV 1.0.0
-.TH libalpm 3 "Feb 08, 2007" "libalpm version \*(LV" "\*(DS Utilities"
-.SH NAME
- libalpm \- Arch Linux Package Management (ALPM) library
-
-.SH SYNOPSIS
-For ease of access, the libalpm manual has been split up into several sections.
-
-(TODO) Yes, this man page needs a lot of work. Once we get around to doing good
-Doxygen documentation, it will improve. We promise.
-
-.nf
-alpm_databases Database Functions
-alpm_interface Interface Functions
-alpm_list List Functions
-alpm_log Logging Functions
-alpm_misc Miscellaneous Functions
-alpm_packages Package Functions
-alpm_sync Sync Functions
-alpm_trans Transaction Functions
-.fi
-
-.SH CONFIGURATION
-See
-.BR pacman.conf (5)
-for more details on configuring \fBlibalpm\fP using the \fBpacman.conf\fP file.
-
-.SH BUGS
-Bugs? You must be kidding, there are no bugs in this software. But if we happen
-to be wrong, send us an email with as much detail as possible to
-<pacman-dev@archlinux.org>.
-
-.SH SEE ALSO
-.BR pacman (8),
-.BR makepkg (8),
-.BR pacman.conf (5)
-
-See the Arch Linux website at <http://www.archlinux.org> for more current
-information on the distribution and the \fBpacman\fP family of tools.
-
-.SH AUTHORS
-.nf
-Judd Vinet <jvinet@zeroflux.org>
-Aurelien Foret <aurelien@archlinux.org>
-Aaron Griffin <aaron@archlinux.org>
-Dan McGee <dan@archlinux.org>
-.fi
-
-See the 'AUTHORS' file for additional contributors.
diff --git a/doc/libalpm.3.txt b/doc/libalpm.3.txt
new file mode 100644
index 00000000..d8fb58e8
--- /dev/null
+++ b/doc/libalpm.3.txt
@@ -0,0 +1,39 @@
+/////
+vim:set ts=4 sw=4 syntax=asciidoc noet:
+/////
+libalpm(3)
+==========
+
+Name
+----
+libalpm - Arch Linux Package Management (ALPM) library
+
+
+Synopsis
+--------
+For ease of access, the libalpm manual has been split up into several sections.
+
+*TODO:* Yes, this man page needs a lot of work. Once we get around to doing
+good Doxygen documentation, it will improve. We promise.
+
+*alpm_databases*:: Database Functions
+*alpm_interface*:: Interface Functions
+*alpm_list*:: List Functions
+*alpm_log*:: Logging Functions
+*alpm_misc*:: Miscellaneous Functions
+*alpm_packages*:: Package Functions
+*alpm_sync*:: Sync Functions
+*alpm_trans*:: Transaction Functions
+
+
+Configuration
+-------------
+See manlink:pacman.conf[5] for more details on configuring libalpm using the
+'pacman.conf' file.
+
+
+See Also
+--------
+manlink:pacman[8], manlink:makepkg[8], manlink:pacman.conf[5]
+
+include::footer.txt[]
diff --git a/doc/makepkg.8 b/doc/makepkg.8
deleted file mode 100644
index 1e0e2cd9..00000000
--- a/doc/makepkg.8
+++ /dev/null
@@ -1,142 +0,0 @@
-." the string declarations are a start to try and make distro independent
-.ds DS Arch Linux
-.ds PB PKGBUILD
-.ds VR 3.0.0
-.TH makepkg 8 "Feb 07, 2007" "makepkg version \*(VR" "\*(DS Utilities"
-.SH NAME
-makepkg \- package build utility
-
-.SH SYNOPSIS
-.B makepkg
-[\fIoptions\fR]
-
-.SH DESCRIPTION
-\fBmakepkg\fP is a script to automate the building of packages. All it needs is
-a build-capable Linux platform and a custom build script for each package you
-wish to build (known as a \fB\*(PB\fP). See
-.BR \*(PB (5)
-for details on creating your own build scripts.
-
-The advantage to a script-based build is that the work is only done once. Once
-you have the build script for a package, makepkg will do the rest: download and
-validate source files, check dependencies, configure the build-time settings,
-build the package, install the package into a temporary root, make
-customizations, generate meta-info, and package the whole thing up for
-\fBpacman\fP to use.
-
-\fBmakeworld\fP can be used to rebuild an entire package group or the entire
-build tree. See \fBmakeworld --help\fP for syntax.
-
-.SH OPTIONS
-.TP
-.B \-b, --builddeps
-Build missing dependencies from source. When \fBmakepkg\fP finds missing
-build-time or run-time dependencies, it will look for the dependencies'
-\fB\*(PB\fP files under \fIABSROOT\fP (set in \fBmakepkg.conf\fP). If it finds
-them it will call \fBmakepkg\fP to build and install the missing dependencies.
-The child calls will be made with the \fB-b\fP and \fB-i\fP options.
-.TP
-.B \-c, --clean
-Clean up leftover work files and directories after a successful build.
-.TP
-.B \-C, --cleancache
-Removes all cached source files from the directory specified in \fISRCDEST\fP
-in \fBmakepkg.conf\fP.
-.TP
-.B \-d, --nodeps
-Do not perform any dependency checks. This will let you override and ignore any
-dependencies required. There is a good chance this option will break the build
-process if all of the dependencies are not installed.
-.TP
-.B \-e, --noextract
-Do not extract source files; use whatever source already exists in the src/
-directory. This is handy if you want to go into src and manually patch or tweak
-code, then make a package out of the result. Keep in mind that creating a patch
-may be a better solution to allow others to use your \fB\*(PB\fP.
-.TP
-.B \-f, --force
-\fBmakepkg\fP will not build a package if a built package already exists in the
-\fIPKGDEST\fP (set in \fBmakepkg.conf\fP) directory, which may default to the
-current directory. This allows the built package to be overwritten.
-.TP
-.B \-g, --geninteg
-For each source file in the source array of \fB\*(PB\fP, download the file if
-required and generate integrity checks. The integrity checks generated are
-determined by the value of the \fIINTEGRITY_CHECK\fP array in makepkg.conf.
-This output can be redirected into your \fB\*(PB\fP for source validation
-(makepkg -g >> \*(PB).
-.TP
-.B \-h, --help
-Output syntax and command line options.
-.TP
-.B \-i, --install
-Install or upgrade the package after a successful build using \fBpacman\fP.
-.TP
-.B \-m, --nocolor
-Disable color in output messages.
-.TP
-.B \-o, --nobuild
-Download and extract files only, but do not build them. Useful with the
-\fB--noextract\fP option if you wish to tweak the files in src/ before
-building.
-.TP
-.B \-p \fIbuildscript\fP
-Read the package script \fIbuildscript\fP instead of the default, \fI\*(PB\fP.
-.TP
-.B \-r, --rmdeps
-Upon successful build, remove any dependencies installed by \fBmakepkg\fP
-during dependency auto-resolution (using \fB-b\fP or \fB-s\fP).
-.TP
-.B \-R, --repackage
-Repackage contents of pkg/ without rebuilding the package. This is useful if
-you forgot a depend or install file in your \fB\*(PB\fP and the build itself
-will not change.
-.TP
-.B \-s, --syncdeps
-Install missing dependencies using \fBpacman\fP. When missing build-time or
-run-time dependencies are found, \fBpacman\fP will try to resolve them. If
-successful, the missing packages will be downloaded and installed.
-.TP
-.B \-S, --usesudo
-Use \fBsudo\fP to perform all operations that require \fBpacman\fP. This is
-useful for \fB--install\fP, \fB--rmdeps\fP, and \fB--syncdeps\fP. If you are
-building packages as a non-root user as recommended, this option should be used
-if using any option that calls \fBpacman\fP.
-.TP
-.B \--noconfirm
-(Passed to \fBpacman\fP) Prevent \fBpacman\fP from waiting for user input
-before proceeding with operations.
-.TP
-.B \--noprogressbar
-(Passed to \fBpacman\fP) Prevent \fBpacman\fP from displaying a progress bar;
-useful if you are redirecting makepkg output to file.
-
-.SH CONFIGURATION
-See
-.BR makepkg.conf (5)
-for more details on configuring \fBmakepkg\fP using the \fBmakepkg.conf\fP file.
-
-.SH BUGS
-Bugs? You must be kidding, there are no bugs in this software. But if we happen
-to be wrong, send us an email with as much detail as possible to
-<pacman-dev@archlinux.org>.
-
-.SH SEE ALSO
-.BR makepkg.conf (5),
-.BR \*(PB (5),
-.BR pacman (8)
-
-See the Arch Linux website at <http://www.archlinux.org> for more current
-information on the distribution and the \fBpacman\fP family of tools, and
-<http://wiki.archlinux.org/index.php/Arch_Packaging_Standards> for
-recommendations on packaging standards.
-
-.SH AUTHORS
-.nf
-Judd Vinet <jvinet@zeroflux.org>
-Aurelien Foret <aurelien@archlinux.org>
-Aaron Griffin <aaron@archlinux.org>
-Dan McGee <dan@archlinux.org>
-.fi
-
-See the 'AUTHORS' file for additional contributors.
diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
new file mode 100644
index 00000000..9da52c79
--- /dev/null
+++ b/doc/makepkg.8.txt
@@ -0,0 +1,151 @@
+/////
+vim:set ts=4 sw=4 syntax=asciidoc noet:
+/////
+makepkg(8)
+==========
+
+Name
+----
+makepkg - package build utility
+
+
+Synopsis
+--------
+makepkg [options]
+
+
+Description
+-----------
+makepkg is a script to automate the building of packages. The requirements for
+using the script are a build-capable \*nix platform and a custom build script
+for each package you wish to build (known as a PKGBUILD). See
+manlink:PKGBUILD[5] for details on creating your own build scripts.
+
+The advantage to a script-based build is that the work is only done once. Once
+you have the build script for a package, makepkg will do the rest: download and
+validate source files, check dependencies, configure the build-time settings,
+build the package, install the package into a temporary root, make
+customizations, generate meta-info, and package the whole thing up for pacman
+to use.
+
+makeworld can be used to rebuild an entire package group or the entire build
+tree. See `makeworld \--help` for syntax.
+
+Options
+-------
+*-A, \--ignorearch*::
+ Ignore a missing or incomplete arch field in the build script. This is
+ for rebuilding packages from source when the PKGBUILD may be slightly
+ outdated and not updated with an `$$arch=('yourarch')$$` field.
+
+*-b, \--builddeps*::
+ Build missing dependencies from source. When makepkg finds missing
+ build-time or run-time dependencies, it will look for the dependencies'
+ PKGBUILD files under ABSROOT (set in makepkg.conf). If it finds them it
+ will call makepkg to build and install the missing dependencies. The
+ child calls will be made with the `-b` and `-i` options.
+
+*-c, \--clean*::
+ Clean up leftover work files and directories after a successful build.
+
+*-C, \--cleancache*::
+ Removes all cached source files from the directory specified in SRCDEST
+ in manlink:makepkg.conf[5].
+
+*-d, \--nodeps*::
+ Do not perform any dependency checks. This will let you override and
+ ignore any dependencies required. There is a good chance this option
+ will break the build process if all of the dependencies are not
+ installed.
+
+*-e, \--noextract*::
+ Do not extract source files; use whatever source already exists in the
+ src/ directory. This is handy if you want to go into src/ and manually
+ patch or tweak code, then make a package out of the result. Keep in mind
+ that creating a patch may be a better solution to allow others to use
+ your PKGBUILD.
+
+*-f, \--force*::
+ makepkg will not build a package if a built package already exists in
+ the PKGDEST (set in manlink:makepkg.conf[5]) directory, which may
+ default to the current directory. This allows the built package to be
+ overwritten.
+
+*-g, \--geninteg*::
+ For each source file in the source array of PKGBUILD, download the file
+ if required and generate integrity checks. The integrity checks
+ generated are determined by the value of the INTEGRITY_CHECK array in
+ manlink:makepkg.conf[5]. This output can be redirected into your
+ PKGBUILD for source validation (`makepkg -g >> PKGBUILD`).
+
+*-h, \--help*::
+ Output syntax and command line options.
+
+*-i, \--install*::
+ Install or upgrade the package after a successful build using
+ manlink:pacman[8].
+
+*-m, \--nocolor*::
+ Disable color in output messages.
+
+*-o, \--nobuild*::
+ Download and extract files only, but do not build them. Useful with the
+ `\--noextract` option if you wish to tweak the files in src/ before
+ building.
+
+*-p* <`buildscript`>::
+ Read the package script `buildscript` instead of the `PKGBUILD` default;
+ see manlink:PKGBUILD[5].
+
+*-r, \--rmdeps*::
+ Upon successful build, remove any dependencies installed by makepkg
+ during dependency auto-resolution (using `-b` or `-s`).
+
+*-R, \--repackage*::
+ Repackage contents of pkg/ without rebuilding the package. This is
+ useful if you forgot a depend or install file in your PKGBUILD and the
+ build itself will not change.
+
+*-s, \--syncdeps*::
+ Install missing dependencies using pacman. When build-time or run-time
+ dependencies are not found, pacman will try to resolve them. If
+ successful, the missing packages will be downloaded and installed.
+
+*\--asroot*::
+ Allow makepkg to run as root. This is for security purposes as it is
+ normally dangerous to do so. This will also disable use of fakeroot and
+ sudo.
+
+*\--source*::
+ Do not actually build the package, but build a source-only tarball. This
+ is useful for passing a single tarball to another program such as a
+ chroot, remote builder, or an AUR upload.
+
+*\--noconfirm*::
+ (Passed to pacman) Prevent pacman from waiting for user input before
+ proceeding with operations.
+
+*\--noprogressbar*::
+ (Passed to pacman) Prevent pacman from displaying a progress bar;
+ useful if you are redirecting makepkg output to file.
+
+
+Additional Features
+-------------------
+makepkg supports building development versions of packages without having to
+manually update the pkgver in the PKGBUILD. This was formerly done using the
+separate utility 'versionpkg'. See manlink:PKGBUILD[5] for details on how to
+set up a development PKGBUILD.
+
+
+Configuration
+-------------
+See manlink:makepkg.conf[5] for more details on configuring makepkg using the
+'makepkg.conf' file.
+
+
+See Also
+--------
+manlink:makepkg.conf[5], manlink:PKGBUILD[5], manlink:pacman[8]
+
+include::footer.txt[]
diff --git a/doc/makepkg.conf.5 b/doc/makepkg.conf.5
deleted file mode 100644
index 23fc1d1f..00000000
--- a/doc/makepkg.conf.5
+++ /dev/null
@@ -1,146 +0,0 @@
-." the string declarations are a start to try and make distro independent
-.ds DS Arch Linux
-.ds PB PKGBUILD
-.ds VR 3.0.0
-.TH \*(PB 5 "Feb 08, 2007" "makepkg.conf version \*(VR" "\*(DS Files"
-.SH NAME
-makepkg.conf \- makepkg configuration file
-
-.SH DESCRIPTION
-Configuration options for \fBmakekpg\fP are stored in \fBmakepkg.conf\fP. This
-file is sourced, so you can include any special compiler flags you wish to use.
-This is helpful for building for different architectures, or with different
-optimizations.
-
-\fBNOTE:\fP This does not guarantee that all package Makefiles will use your
-exported variables. Some of them are non-standard...
-
-The default file is fairly well commented, so it may be easiest to simply
-follow directions given there for customization.
-
-.SH OPTIONS
-.TP
-.B FTPAGENT="\fI/path/to/command\fP [\fIoptions\fP]"
-Sets the download agent used to fetch source files specified with a URL in the
-\fB\*(PB\fP file. Flags can be specified as well; the download URL is then
-placed on the end of the command.
-.TP
-.B CARCH="\fIcarch\fP"
-Specifies your computer architecture; possible values include such things as
-"i686", "x86_64", "ppc", etc. This should be automatically set on installation.
-.TP
-.B CHOST="\fIchost\fP"
-A string such as "i686-pc-linux-gnu", do not touch unless you know what you are
-doing.
-.TP
-.B CFLAGS="\fIcflags\fP"
-Flags used for the C compiler. This is a key part to the use of makepkg.
-Usually several options are specified, and the most common string resembles
-something like this: "-march=i686 -O2 -pipe". Another useful option may be
--mcpu in place of -march. Read
-.BR gcc (1)
-for more details on the wide variety of compiler flags available.
-.TP
-.B CXXFLAGS="\fIcxxflags\fP"
-Flags used for the C++ compiler; see \fBCFLAGS\fP for more info.
-.TP
-.B MAKEFLAGS="\fImakeflags\fP"
-This is often used to set the number of jobs used, for example, "-j2". Other
-flags that make accepts can also be passed.
-.TP
-.B BUILDENV=(fakeroot !distcc color !ccache)
-This array contains four options that affect the build environment, the
-defaults are shown here. All options should always be left in the array; to
-enable or disable an option simply remove or place an "!" at the front of the
-option. Each works as follows:
-.RS
-.TP
-.B fakeroot
-Allow building packages as a non-root user. This is \fIhighly\fP recommended.
-.TP
-.B distcc
-Use the distributed C/C++/ObjC compiler to spread compilation among multiple
-machines. If this is enabled, \fBDISTCC_HOSTS\fP must be specified as well.
-.TP
-.B color
-Colorize output messages, making output easier to read.
-.TP
-.B ccache
-Use ccache to cache compilation by default. This allows for faster compiles if
-you are continuously recompiling the same packages. It can be disabled for
-individual packages by placing \fB!ccache\fP in the \fB\*(PB\fP options array.
-.RE
-.TP
-.B DISTCC_HOSTS="\fIhost1 ...\fP"
-If using DistCC, this is used to specify a space-delimited list of hosts
-running in the DistCC cluster. In addition, you will want to modify your
-\fBMAKEFLAGS\fP.
-.TP
-.B OPTIONS=(strip !docs libtool emptydirs)
-This array contains four options that affect the default packaging. All four
-are equivalent to options that can be placed in the PKGBUILD; the defaults are
-shown here. All options should always be left in the array; to enable or
-disable an option simply remove or place an "!" at the front of the option.
-Each works as follows:
-.RS
-.TP
-.B strip
-Strip symbols from binaries and libraries. If you frequently use a debugger on
-programs or libraries, it may be helpful to disable this option.
-.TP
-.B docs
-Save doc and info directories. If you wish to delete doc and info directories,
-specify "!docs" in the array.
-.TP
-.B libtool
-Leave libtool (.la) files in packages. Specify "!libtool" to remove them.
-.TP
-.B emptydirs
-Leave empty directories in packages.
-.RE
-.TP
-.B INTEGRITY_CHECK=(\fIcheck1 ...\fP)
-File integrity checks to use. Multiple checks may be specified; this affects
-both generation and checking. The current valid options are: md5, sha1, sha256,
-sha384, and sha512.
-.TP
-.B DOC_DIRS=(usr/{,share/}{info,doc} ...)
-If "!docs" is specified in the \fBOPTIONS\fP array, this variable will instruct
-makepkg where to look to remove docs. If you build packages that are located in
-opt/, you may need to add the directory to this array. NOTE: do not add the
-leading slash to the directory name.
-.TP
-.B PKGDEST=\fI/path/to/folder\fP
-If this value is not set, packages will by default be placed in the current
-directory (location of the \fB\*(PB\fP). Many people like to keep all their
-packages in one place so this option allows this behavior. A common location is
-"/home/packages".
-.TP
-.B SRCDEST=\fI/path/to/folder\fP
-If this value is not set, downloaded source files will only be stored in the
-current directory. Many people like to keep all source files in a central
-location for easy cleanup, so this path can be set here.
-.TP
-.B PACKAGER="\fIJohn Doe <john@doe.com>\fP"
-This value is used when querying a package to see who was the builder. It is
-recommended you change this to your name and email address.
-
-.SH SEE ALSO
-.BR makepkg (8),
-.BR pacman (8),
-.BR \*(PB (5)
-
-See the Arch Linux website at <http://www.archlinux.org> for more current
-information on the distribution and the \fBpacman\fP family of tools, and
-<http://wiki.archlinux.org/index.php/Arch_Packaging_Standards> for
-recommendations on packaging standards.
-
-.SH AUTHORS
-.nf
-Judd Vinet <jvinet@zeroflux.org>
-Aurelien Foret <aurelien@archlinux.org>
-Aaron Griffin <aaron@archlinux.org>
-Dan McGee <dan@archlinux.org>
-.fi
-
-See the 'AUTHORS' file for additional contributors.
diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt
new file mode 100644
index 00000000..17e4bd87
--- /dev/null
+++ b/doc/makepkg.conf.5.txt
@@ -0,0 +1,154 @@
+/////
+vim:set ts=4 sw=4 syntax=asciidoc noet:
+/////
+makepkg.conf(5)
+===============
+
+Name
+----
+makepkg.conf - makepkg configuration file
+
+
+Synopsis
+--------
+{sysconfdir}/makepkg.conf, ~/.makepkg.conf
+
+
+Description
+-----------
+Configuration options for makekpg are stored in makepkg.conf. This file is
+sourced, so you can include any special compiler flags you wish to use. This is
+helpful for building for different architectures, or with different
+optimizations. However, only the variables described below are exported to the
+build environment.
+
+NOTE: This does not guarantee that all package Makefiles will use your exported
+variables. Some of them are non-standard.
+
+The default file is fairly well commented, so it may be easiest to simply
+follow directions given there for customization.
+
+
+Options
+-------
+**DLAGENTS=(**\'protocol::/path/to/command [options]' ...**)**::
+ Sets the download agents used to fetch source files specified with a URL in
+ the manlink:PKGBUILD[5] file. Options can be specified for each command as
+ well; the download URL is placed on the end of the command. This is more
+ flexible than the former `FTPAGENT` variable, as any protocol can have a
+ download agent. Several examples are provided in the default makepkg.conf.
+
+**CARCH=**"carch"::
+ Specifies your computer architecture; possible values include such things
+ as ``i686'', ``x86_64'', ``ppc'', etc. This should be automatically set on
+ installation.
+
+**CHOST=**"chost"::
+ A string such as ``i686-pc-linux-gnu'', do not touch unless you know what
+ you are doing. This can be commented out by most users if desired.
+
+**CFLAGS=**"cflags"::
+ Flags used for the C compiler. This is a key part to the use of makepkg.
+ Usually several options are specified, and the most common string resembles
+ something like this: ``-march=i686 -O2 -pipe''. Another useful option may
+ be `-mcpu` in place of `-march`. Read gcc(1) for more details on the wide
+ variety of compiler flags available.
+
+**CXXFLAGS=**"cxxflags"::
+ Flags used for the C++ compiler; see CFLAGS for more info.
+
+**MAKEFLAGS=**"makeflags"::
+ This is often used to set the number of jobs used, for example, `-j2`.
+ Other flags that make accepts can also be passed.
+
+**BUILDENV=(**fakeroot !distcc color !ccache !xdelta**)**::
+ This array contains options that affect the build environment, the defaults
+ are shown here. All options should always be left in the array; to enable
+ or disable an option simply remove or place an ``!'' at the front of the
+ option. Each works as follows:
+
+ *fakeroot*;;
+ Allow building packages as a non-root user. This is highly recommended.
+
+ *distcc*;;
+ Use the distributed C/C++/ObjC compiler to spread compilation among
+ multiple machines. If this is enabled, `DISTCC_HOSTS` must be specified
+ as well.
+
+ *color*;;
+ Colorize output messages, making output easier to read.
+
+ *ccache*;;
+ Use ccache to cache compilation by default. This allows for faster
+ compiles if you are continuously recompiling the same packages. It can
+ be disabled for individual packages by placing `!ccache` in the
+ PKGBUILD options array.
+
+ *xdelta*;;
+ Generate an xdelta binary patch from previous to current package. The
+ previous package must be available in the makepkg cache directory for
+ this to occur.
+
+**DISTCC_HOSTS=**"host1 ..."::
+ If using DistCC, this is used to specify a space-delimited list of hosts
+ running in the DistCC cluster. In addition, you will want to modify your
+ `MAKEFLAGS`.
+
+**OPTIONS=(**strip !docs libtool emptydirs**)**::
+ This array contains options that affect the default packaging. All four are
+ equivalent to options that can be placed in the PKGBUILD; the defaults are
+ shown here. All options should always be left in the array; to enable or
+ disable an option simply remove or place an ``!'' at the front of the
+ option. Each works as follows:
+
+ *strip*;;
+ Strip symbols from binaries and libraries. If you frequently use a
+ debugger on programs or libraries, it may be helpful to disable this
+ option.
+
+ *docs*;;
+ Save doc and info directories. If you wish to delete doc and info
+ directories, specify `!docs' in the array.
+
+ *libtool*;;
+ Leave libtool (.la) files in packages. Specify `!libtool' to remove
+ them.
+
+ *emptydirs*;;
+ Leave empty directories in packages.
+
+**INTEGRITY_CHECK=(**check1 ...**)**::
+ File integrity checks to use. Multiple checks may be specified; this
+ affects both generation and checking. The current valid options are:
+ `md5`, `sha1`, `sha256`, `sha384`, and `sha512`.
+
+**DOC_DIRS=(**usr/{,share/}{info,doc} ...**)**::
+ If "!docs" is specified in the OPTIONS array, this variable will
+ instruct makepkg where to look to remove docs. If you build packages
+ that are located in opt/, you may need to add the directory to this
+ array. *NOTE:* Do not add the leading slash to the directory name.
+
+**PKGDEST=**"/path/to/folder"::
+ If this value is not set, packages will by default be placed in the
+ current directory (location of the manlink:PKGBUILD[5]). Many people
+ like to keep all their packages in one place so this option allows
+ this behavior. A common location is ``/home/packages''.
+
+**SRCDEST=**"/path/to/folder"::
+ If this value is not set, downloaded source files will only be stored
+ in the current directory. Many people like to keep all source files in
+ a central location for easy cleanup, so this path can be set here.
+
+**PACKAGER=**"John Doe <john@doe.com>"::
+ This value is used when querying a package to see who was the builder.
+ It is recommended you change this to your name and email address.
+
+*BUILDSCRIPT*, *PKGEXT*, *SRCEXT*, *DB_COMPRESSION*, *DB_CHECKSUMS*::
+ Do not touch these unless you know what you are doing.
+
+
+See Also
+--------
+manlink:makepkg[8], manlink:pacman[8], manlink:PKGBUILD[5]
+
+include::footer.txt[]
diff --git a/doc/pacman.8 b/doc/pacman.8
deleted file mode 100644
index 79097783..00000000
--- a/doc/pacman.8
+++ /dev/null
@@ -1,293 +0,0 @@
-." the string declarations are a start to try and make distro independent
-.ds DS Arch Linux
-.ds PB PKGBUILD
-.ds VR 3.0.0
-.ds LV 1.0.0
-.TH pacman 8 "Feb 07, 2007" "pacman version \*(VR" "\*(DS Utilities"
-.SH NAME
-pacman \- package manager utility
-
-.SH SYNOPSIS
-.B pacman
-<\fIoperation\fR> [\fIoptions\fR] [\fIpackages\fR]
-
-.SH DESCRIPTION
-\fBpacman\fP is a \fIpackage management\fP utility that tracks installed
-packages on a Linux system. It features dependency support, package groups,
-install and uninstall hooks, and the ability to sync your local machine with a
-remote ftp server to automatically upgrade packages. \fBpacman\fP packages are
-a zipped tar format.
-
-Since version 3.0.0, \fBpacman\fP has been the frontend to \fBlibalpm\fP, the
-"Arch Linux Package Management" library. This library allows alternative front
-ends to be written (for instance, a GUI front end).
-
-.SH OPERATIONS
-.TP
-.B \-A, --add (deprecated)
-Add a package to the system. Either a URL or file path can be specified. The
-package will be uncompressed into the installation root and the database will
-be updated. The package will not be installed if another version is already
-installed. NOTE: please use \fB--upgrade\fP in place of this option.
-.TP
-.B \-F, --freshen
-This is like \fB--upgrade\fP except it will only upgrade packages already
-installed on the system.
-.TP
-.B \-Q, --query
-Query the package database. This operation allows you to view installed
-packages and their files, as well as meta-information about individual packages
-(dependencies, conflicts, install date, build date, size). This can be run
-against the local package database or can be used on individual .tar.gz
-packages. See \fBQUERY OPTIONS\fP below.
-.TP
-.B \-R, --remove
-Remove a package from the system. Files belonging to the specified package
-will be deleted, and the database will be updated. Most configuration files
-will be saved with a \fI.pacsave\fP extension unless the \fB--nosave\fP option
-is used. See \fBREMOVE OPTIONS\fP below.
-.TP
-.B \-S, --sync
-Synchronize packages. Packages are installed directly from the ftp servers,
-including all dependencies required to run the packages. For example,
-\fBpacman -S qt\fP will download and install \fBqt\fP and all the packages it
-depends on. You can also use \fBpacman -Su\fP to upgrade all packages that are
-out of date. See \fBSYNC OPTIONS\fP below.
-.TP
-.B \-U, --upgrade
-Upgrade or add a package to the system. Either a URL or file path can be
-specified. This is a "remove-then-add" process. See \fBHANDLING CONFIG
-FILES\fP for an explanation on how pacman takes care of config files.
-.TP
-.B \-V, --version
-Display version and exit.
-.TP
-.B \-h, --help
-Display syntax for the given operation. If no operation was supplied then the
-general syntax is shown.
-
-.SH OPTIONS
-.TP
-.B \--ask \fInumber\fP
-Pre-specify answers to questions. It is doubtful whether this option even
-works, so I would not recommend using it. TODO: document this more, as I have
-no idea how it works or when you would use it, or if we should just dump it.
-.TP
-.B \-b, --dbpath \fIpath\fP
-Specify an alternative database location (default is "/var/lib/pacman/"). This
-should not be used unless you know what you are doing.
-.TP
-.B \-d, --nodeps
-Skips all dependency checks. Normally, pacman will always check a package's
-dependency fields to ensure that all dependencies are installed and there are
-no package conflicts in the system.
-.TP
-.B \-f, --force
-Bypass file conflict checks and overwrite conflicting files. If the package
-that is about to be installed contains files that are already installed, this
-option will cause all those files to be overwritten. This option should be
-used with care, ideally not at all.
-.TP
-.B \-r, --root \fIpath\fP
-Specify an alternative installation root (default is "/"). This should
-\fInot\fP be used as a way to install software into /usr/local instead of /usr.
-This option is used if you want to install a package on a temporary mounted
-partition which is "owned" by another system. By using this option you not only
-specify where the software should be installed, but you also specify which
-package database and cache location to use.
-.TP
-.B \-v, --verbose
-Output more status messages, such as the Root and DBPath.
-.TP
-.B \--cachedir \fIdir\fP
-Specify an alternative package cache location (default is
-"/var/cache/pacman/pkg/"). This should not be used unless you know what you are
-doing.
-.TP
-.B \--config \fIfilepath\fP
-Specify an alternate configuration file.
-.TP
-.B \--noconfirm
-Bypass any and all "Are you sure?" messages. It's not a good idea to do this
-unless you want to run pacman from a script.
-.TP
-.B \--noprogressbar
-Do not show a progress bar when downloading files. This can be useful for
-scripts that call pacman and capture the output.
-.TP
-.B \--noscriptlet
-If an install scriptlet exists, do not execute it. Do not use this unless you
-know what you are doing.
-
-.SH QUERY OPTIONS
-.TP
-.B \-c, --changelog
-View the ChangeLog of a package. Not every package will provide one but it
-will be shown if available.
-.TP
-.B \-e, --orphans
-List all packages that were pulled in by a previously installed package but no
-longer required by any installed package.
-.TP
-.B \-g, --groups
-Display all packages that are members of a named group. If not name is
-specified, list all grouped packages.
-.TP
-.B \-i, --info
-Display information on a given package. The \fB-p\fP option can be used if
-querying a package file instead of the local database.
-.TP
-.B \-l, --list
-List all files owned by a given package. Multiple packages can be specified on
-the command line.
-.TP
-.B \-m, --foreign
-List all packages that were not found in the sync database(s). Typically these
-are packages that were downloaded manually and installed with \fB--upgrade\fP.
-.TP
-.B \-o, --owns \fIfile\fP
-Search for the package that owns \fIfile\fP.
-.TP
-.B \-p, --file
-Signifies that the package supplied on the command line is a file and not an
-entry in the database. The file will be decompressed and queried. This is
-useful in combination with \fB--info\fP and \fB--list\fP.
-.TP
-.B \-s, --search \fIregexp\fP
-This will search each locally-installed package for names or descriptions that
-matche \fIregexp\fP.
-.TP
-.B \-u, --upgrades
-Lists all packages that are out of date on the local system. This option works
-best if the sync database is refreshed using \fB-Sy\fP.
-
-.SH REMOVE OPTIONS
-.TP
-.B \-c, --cascade
-Remove all target packages, as well as all packages that depend on one or more
-target packages. This operation is recursive.
-.TP
-.B \-k, --keep
-Removes the database entry only. Leaves all files in place.
-.TP
-.B \-n, --nosave
-Instructs pacman to ignore file backup designations. Normally, when a file is
-removed from the system the database is checked to see if the file should be
-renamed with a .pacsave extension.
-.TP
-.B \-s, --recursive
-Remove each target specified including all dependencies, provided that (A) they
-are not required by other packages; and (B) they were not explicitly installed
-by the user. This option is analogous to a backwards \fB--sync\fP operation.
-
-.SH SYNC OPTIONS
-.TP
-.B \-c, --clean
-Remove old packages from the cache to free up disk space. When \fBpacman\fP
-downloads packages, it saves them in \fI/var/cache/pacman/pkg\fP. Use one
-\fB--clean\fP switch to remove \fIold\fP packages; use two to remove \fIall\fP
-packages from the cache.
-.TP
-.B \-e, --dependsonly
-Install all dependencies of a package, but not the specified package itself.
-This is pretty useless and we're not sure why it even exists.
-.TP
-.B \-g, --groups
-Display all the members for each package group specified. If no group names
-are provided, all groups will be listed; pass the flag twice to view all
-groups and their members.
-.TP
-.B \-i, --info
-Display dependency and other information for a given package. This will search
-through all repositories for a matching package.
-.TP
-.B \-l, --list
-List all packages in the specified repositories. Multiple repositories can be
-specified on the command line.
-.TP
-.B \-p, --print-uris
-Print out URIs for each package that will be installed, including any
-dependencies yet to be installed. These can be piped to a file and downloaded
-at a later time, using a program like wget.
-.TP
-.B \-s, --search \fIregexp\fP
-This will search each package in the sync databases for names or descriptions
-that match \fIregexp\fP.
-.TP
-.B \-u, --sysupgrade
-Upgrades all packages that are out of date. Each currently-installed package
-will be examined and upgraded if a newer package exists. A report of all
-packages to upgrade will be presented and the operation will not proceed
-without user confirmation. Dependencies are automatically resolved at this
-level and will be installed/upgraded if necessary.
-.TP
-.B \-w, --downloadonly
-Retrieve all packages from the server, but do not install/upgrade anything.
-.TP
-.B \-y, --refresh
-Download a fresh copy of the master package list from the server(s) defined in
-\fBpacman.conf\fP. This should typically be used each time you use
-\fB--sysupgrade\fP or \fB-u\fP. Passing two \fB--refresh\fP or \fB-y\fP flags
-will force a refresh of all package lists even if they are thought to be
-up to date.
-.TP
-.B \--ignore \fIpackage\fP
-Directs \fBpacman\fP to ignore upgrades of \fIpackage\fP even if there is one
-available.
-
-.SH HANDLING CONFIG FILES
-pacman uses the same logic as rpm to determine action against files that are
-designated to be backed up. During an upgrade, 3 md5 hashes are used for each
-backup file to determine the required action: one for the original file
-installed, one for the new file that's about to be installed, and one for the
-actual file existing on the filesystem. After comparing these 3 hashes, the
-follow scenarios can result:
-.TP
-original=\fBX\fP, current=\fBX\fP, new=\fBX\fP
-All three files are the same, so overwrites are not an issue Install the new
-file.
-.TP
-original=\fBX\fP, current=\fBX\fP, new=\fBY\fP
-The current file is the same as the original but the new one differs. Since
-the user did not ever modify the file, and the new one may contain improvements
-or bugfixes, install the new file.
-.TP
-original=\fBX\fP, current=\fBY\fP, new=\fBX\fP
-Both package versions contain the exact same file, but the one on the
-filesystem has been modified. Leave the current file in place.
-.TP
-original=\fBX\fP, current=\fBY\fP, new=\fBY\fP
-The new file is identical to the current file. Install the new file.
-.TP
-original=\fBX\fP, current=\fBY\fP, new=\fBZ\fP
-All three files are different, so install the new file with a .pacnew extension
-and warn the user. The user must then manually merge any necessary changes into
-the original file.
-
-.SH CONFIGURATION
-See
-.BR pacman.conf (5)
-for more details on configuring \fBpacman\fP using the \fBpacman.conf\fP file.
-
-.SH BUGS
-Bugs? You must be kidding, there are no bugs in this software. But if we happen
-to be wrong, send us an email with as much detail as possible to
-<pacman-dev@archlinux.org>.
-
-.SH SEE ALSO
-.BR pacman.conf (5),
-.BR makepkg (8),
-.BR libalpm (3)
-
-See the Arch Linux website at <http://www.archlinux.org> for more current
-information on the distribution and the \fBpacman\fP family of tools.
-
-.SH AUTHORS
-.nf
-Judd Vinet <jvinet@zeroflux.org>
-Aurelien Foret <aurelien@archlinux.org>
-Aaron Griffin <aaron@archlinux.org>
-Dan McGee <dan@archlinux.org>
-.fi
-
-See the 'AUTHORS' file for additional contributors.
diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt
new file mode 100644
index 00000000..9e00d36e
--- /dev/null
+++ b/doc/pacman.8.txt
@@ -0,0 +1,319 @@
+/////
+vim:set ts=4 sw=4 syntax=asciidoc noet:
+/////
+pacman(8)
+=========
+
+Name
+----
+pacman - package manager utility
+
+
+Synopsis
+--------
+'pacman' <operation> [options] [packages]
+
+
+Description
+-----------
+Pacman is a package management utility that tracks installed packages on a Linux
+system. It features dependency support, package groups, install and uninstall
+hooks, and the ability to sync your local machine with a remote ftp server to
+automatically upgrade packages. Pacman packages are a zipped tar format.
+
+Since version 3.0.0, pacman has been the frontend to manlink:libalpm[3], the
+"Arch Linux Package Management" library. This library allows alternative front
+ends to be written (for instance, a GUI front end).
+
+
+Operations
+----------
+*-A, \--add* (deprecated)::
+ Add a package to the system. Either a URL or file path can be specified.
+ The package will be uncompressed into the installation root and the
+ database will be updated. The package will not be installed if another
+ version is already installed. *NOTE*: please use '\--upgrade' in place of
+ this option.
+
+*-Q, \--query*::
+ Query the package database. This operation allows you to view installed
+ packages and their files, as well as meta-information about individual
+ packages (dependencies, conflicts, install date, build date, size). This
+ can be run against the local package database or can be used on
+ individual '.tar.gz' packages. See <<QO,Query Options>> below.
+
+*-R, \--remove*::
+ Remove a package from the system. Files belonging to the specified
+ package will be deleted, and the database will be updated. Most
+ configuration files will be saved with a `.pacsave` extension unless the
+ '\--nosave' option is used. See <<RO,Remove Options>> below.
+
+*-S, \--sync*::
+ Synchronize packages. Packages are installed directly from the ftp
+ servers, including all dependencies required to run the packages. For
+ example, `pacman -S qt` will download and install qt and all the
+ packages it depends on. If a package name exists in more than one repo, the
+ repo can be explicitly specified to clarify the package to install:
+ `pacman -S testing/qt`. You can also use `pacman -Su` to upgrade all
+ packages that are out of date. See <<SO,Sync Options>> below.
+
+*-U, \--upgrade*::
+ Upgrade or add a package to the system. Either a URL or file path can be
+ specified. This is a "remove-then-add" process. See <<HCF,Handling Config
+ Files>> for an explanation on how pacman takes care of config files.
+
+*-V, \--version*::
+ Display version and exit.
+
+*-h, \--help*::
+ Display syntax for the given operation. If no operation was supplied
+ then the general syntax is shown.
+
+
+Options
+-------
+*\--asdeps*::
+ Install packages non-explicitly; in other works, fake their install reason
+ to be installed as a dependency. This is useful for makepkg and other
+ build from source tools that need to install dependencies before building
+ the package.
+
+*\--ask* <'number'>::
+ Pre-specify answers to questions. It is doubtful whether this option
+ even works, so I would not recommend using it. *TODO*: document this
+ more, as I have no idea how it works or when you would use it, or if we
+ should just dump it.
+
+*-b, \--dbpath* <'path'>::
+ Specify an alternative database location (default is ``/var/lib/pacman'').
+ This should not be used unless you know what you are doing.
+
+*-d, \--nodeps*::
+ Skips all dependency checks. Normally, pacman will always check a
+ package's dependency fields to ensure that all dependencies are
+ installed and there are no package conflicts in the system.
+
+*-f, \--force*::
+ Bypass file conflict checks and overwrite conflicting files. If the
+ package that is about to be installed contains files that are already
+ installed, this option will cause all those files to be overwritten.
+ This option should be used with care, ideally not at all.
+
+*-r, \--root* <'path'>::
+ Specify an alternative installation root (default is ``/''). This should
+ not be used as a way to install software into ``/usr/local'' instead of
+ ``/usr''. This option is used if you want to install a package on a
+ temporary mounted partition which is "owned" by another system.
+
+*-v, --verbose*::
+ Output more status messages, such as the Root, DBPath, CacheDir, etc.
+
+*\--cachedir* <'dir'>::
+ Specify an alternative package cache location (default is
+ ``/var/cache/pacman/pkg''). Multiple cache directories can be specified,
+ and they are tried in the order they are passed to pacman.
+
+*\--config* <'file'>::
+ Specify an alternate configuration file.
+
+*\--noconfirm*::
+ Bypass any and all "Are you sure?" messages. It's not a good idea to do
+ this unless you want to run pacman from a script.
+
+*\--noprogressbar*::
+ Do not show a progress bar when downloading files. This can be useful
+ for scripts that call pacman and capture the output.
+
+*\--noscriptlet*::
+ If an install scriptlet exists, do not execute it. Do not use this
+ unless you know what you are doing.
+
+
+Query Options[[QO]]
+-------------------
+*-c, \--changelog*::
+ View the ChangeLog of a package. Not every package will provide one but
+ it will be shown if available.
+
+*-d, \--deps*::
+ List all packages installed as dependencies. This option can be combined
+ with '-t' for listing real orphans- packages that were installed as
+ dependencies but are no longer required by any installed package. ('-Qdt'
+ is equivalent to the pacman 3.0.X '-Qe' option.)
+
+*-e, \--explicit*::
+ List all packages explicitly installed. This option can be combined with
+ '-t' to list top-level packages- those packages that were explicitly
+ installed but are not required by any other package. ('-Qet' is equivalent
+ to the pacman 2.9.X '-Qe' option.)
+
+*-g, \--groups*::
+ Display all packages that are members of a named group. If a name is not
+ specified, list all grouped packages.
+
+*-i, \--info*::
+ Display information on a given package. The '-p' option can be used if
+ querying a package file instead of the local database. Passing two
+ '\--info' or '-i' flags will also display the list of backup files and
+ their modification states.
+
+*-l, \--list*::
+ List all files owned by a given package. Multiple packages can be
+ specified on the command line.
+
+*-m, \--foreign*::
+ Restrict or filter output to packages that were not found in the sync
+ database(s). Typically these are packages that were downloaded manually
+ and installed with '\--upgrade'.
+
+*-o, \--owns* <'file'>::
+ Search for the package that owns file. The path can be relative or
+ absolute.
+
+*-p, \--file*::
+ Signifies that the package supplied on the command line is a file and
+ not an entry in the database. The file will be decompressed and queried.
+ This is useful in combination with '\--info' and '\--list'.
+
+*-s, \--search* <'regexp'>::
+ This will search each locally-installed package for names or
+ descriptions that match `regexp`.
+
+*-t, \--orphans*::
+ Restrict or filter output to packages not required by any currently
+ installed package.
+
+*-u, \--upgrades*::
+ Lists all packages that are out of date on the local system. This option
+ works best if the sync database is refreshed using '-Sy'.
+
+
+Remove Options[[RO]]
+--------------------
+*-c, \--cascade*::
+ Remove all target packages, as well as all packages that depend on one
+ or more target packages. This operation is recursive.
+
+*-k, \--keep*::
+ Removes the database entry only. Leaves all files in place.
+
+*-n, \--nosave*::
+ Instructs pacman to ignore file backup designations. Normally, when a
+ file is removed from the system the database is checked to see if the
+ file should be renamed with a ``.pacsave'' extension.
+
+*-s, \--recursive*::
+ Remove each target specified including all dependencies, provided that
+ (A) they are not required by other packages; and (B) they were not
+ explicitly installed by the user. This option is analogous to a
+ backwards '\--sync' operation.
+
+
+Sync Options[[SO]]
+------------------
+*-c, \--clean*::
+ Remove old packages from the cache to free up disk space. When pacman
+ downloads packages, it saves them in ``/var/cache/pacman/pkg''. Use one
+ '\--clean' switch to remove old packages; use two to remove all packages
+ from the cache.
+
+*-e, \--dependsonly*::
+ Install all dependencies of a package, but not the specified package
+ itself. This is pretty useless and we're not sure why it even exists.
+
+*-g, \--groups*::
+ Display all the members for each package group specified. If no group
+ names are provided, all groups will be listed; pass the flag twice to
+ view all groups and their members.
+
+*-i, \--info*::
+ Display dependency and other information for a given package. This will
+ search through all repositories for a matching package.
+
+*-l, \--list*::
+ List all packages in the specified repositories. Multiple repositories
+ can be specified on the command line.
+
+*-p, \--print-uris*::
+ Print out URIs for each package that will be installed, including any
+ dependencies yet to be installed. These can be piped to a file and
+ downloaded at a later time, using a program like wget.
+
+*-s, \--search* <'regexp'>::
+ This will search each package in the sync databases for names or
+ descriptions that match `regexp`.
+
+*-u, \--sysupgrade*::
+ Upgrades all packages that are out of date. Each currently-installed
+ package will be examined and upgraded if a newer package exists. A
+ report of all packages to upgrade will be presented and the operation
+ will not proceed without user confirmation. Dependencies are
+ automatically resolved at this level and will be installed/upgraded if
+ necessary.
+
+*-w, \--downloadonly*::
+ Retrieve all packages from the server, but do not install/upgrade
+ anything.
+
+*-y, \--refresh*::
+ Download a fresh copy of the master package list from the server(s)
+ defined in pacman.conf. This should typically be used each time you use
+ '\--sysupgrade' or '-u'. Passing two '\--refresh' or '-y' flags will force
+ a refresh of all package lists even if they are thought to be up to date.
+
+*\--needed*::
+ Only install the targets that are not already installed and up-to-date.
+
+*\--ignore* <'package'>::
+ Directs pacman to ignore upgrades of package even if there is one
+ available. Multiple packages can be specified by separating them
+ with a comma.
+
+*\--ignoregroup* <'group'>::
+ Directs pacman to ignore upgrades of all packages in 'group' even if
+ there is one available. Multiple groups can be specified by
+ separating them with a comma.
+
+
+Handling Config Files[[HCF]]
+----------------------------
+Pacman uses the same logic as rpm to determine action against files that are
+designated to be backed up. During an upgrade, 3 md5 hashes are used for each
+backup file to determine the required action: one for the original file
+installed, one for the new file that's about to be installed, and one for the
+actual file existing on the filesystem. After comparing these 3 hashes, the
+follow scenarios can result:
+
+original=X, current=X, new=X::
+ All three files are the same, so overwrites are not an issue Install the
+ new file.
+
+original=X, current=X, new=Y::
+ The current file is the same as the original but the new one differs.
+ Since the user did not ever modify the file, and the new one may contain
+ improvements or bugfixes, install the new file.
+
+original=X, current=Y, new=X::
+ Both package versions contain the exact same file, but the one on the
+ filesystem has been modified. Leave the current file in place.
+
+original=X, current=Y, new=Y::
+ The new file is identical to the current file. Install the new file.
+
+original=X, current=Y, new=Z::
+ All three files are different, so install the new file with a '.pacnew'
+ extension and warn the user. The user must then manually merge any
+ necessary changes into the original file.
+
+
+Configuration
+-------------
+See manlink:pacman.conf[5] for more details on configuring pacman using the
+'pacman.conf' file.
+
+
+See Also
+--------
+manlink:pacman.conf[5], manlink:makepkg[8], manlink:libalpm[3]
+
+include::footer.txt[]
diff --git a/doc/pacman.conf.5 b/doc/pacman.conf.5
deleted file mode 100644
index 15f7b95f..00000000
--- a/doc/pacman.conf.5
+++ /dev/null
@@ -1,139 +0,0 @@
-." the string declarations are a start to try and make distro independent
-.ds DS Arch Linux
-.ds PB PKGBUILD
-.ds VR 3.0.0
-.ds LV 1.0.0
-.TH \*(PB 5 "Feb 07, 2007" "pacman.conf version \*(VR" "\*(DS Files"
-.SH NAME
-pacman.conf \- pacman package manager configuration file
-
-.SH DESCRIPTION
-\fBpacman\fP, using \fBlibalpm\fP, will attempt to read \fBpacman.conf\fP each
-time it is invoked. This configuration file is divided into sections or
-\fIrepositories\fP. Each section defines a package repository that \fBpacman\fP
-can use when searching for packages in \fB--sync\fP mode. The exception to this
-is the \fIoptions\fP section, which defines global options.
-
-.SH EXAMPLE
-.RS
-.nf
-#
-# pacman.conf
-#
-[options]
-NoUpgrade = etc/passwd etc/group etc/shadow
-NoUpgrade = etc/fstab
-
-[current]
-Include = /etc/pacman.d/current
-
-[custom]
-Server = file:///home/pkgs
-.fi
-.RE
-
-.SH OPTIONS
-.TP
-.B DBPath = \fIpath/to/db/dir\fP
-Overrides the default location of the toplevel database directory. The default
-is \fIvar/lib/pacman\fP.
-.TP
-.B CacheDir = \fIpath/to/cache/dir\fP
-Overrides the default location of the package cache directory. The default is
-\fIvar/cache/pacman\fP.
-.TP
-.B HoldPkg = \fIpackage\fP ...
-If a user tries to \fB--remove\fP a package that's listed in \fBHoldPkg\fI,
-\fBpacman\fP will ask for confirmation before proceeding.
-.TP
-.B IgnorePkg = \fIpackage\fP ...
-Instructs \fBpacman\fP to ignore any upgrades for this package when performing a
-\fB--sysupgrade\fP.
-.TP
-.B Include = \fIpath\fP
-Include another config file. This file can include repositories or general
-configuration options.
-.TP
-.B XferCommand = \fI/path/to/command %u\fP
-If set, an external program will be used to download all remote files. All
-instances of \fB%u\fP will be replaced with the download URL. If present,
-instances of \fB%o\fP will be replaced with the local filename, plus a ".part"
-extension, which allows programs like wget to do file resumes properly.
-
-This option is useful for users who experience problems with built-in
-http/ftp support, or need the more advanced proxy support that comes with
-utilities like wget.
-.TP
-.B NoPassiveFtp
-Disables passive ftp connections when downloading packages. (aka Active Mode)
-.TP
-.B NoUpgrade = \fIfile\fP ...
-All files listed with a \fBNoUpgrade\fP directive will never be touched during
-a package install/upgrade. Do \fInot\fP include the leading slash when
-specifying files.
-.TP
-.B NoExtract = \fIfile\fP ...
-All files listed with a \fBNoExtract\fP directive will never be extracted from
-a package into the filesystem. This can be useful when you don't want part of a
-package to be installed. For example, if your httpd root uses an index.php,
-then you would not want the index.html file to be extracted from the
-\fBapache\fP package.
-.TP
-.B UseSyslog
-Log action messages through \fBsyslog()\fP. This will insert log entries into
-\fI/var/log/messages\fP or equivalent.
-.TP
-.B LogFile = \fI/path/to/file\fP
-Log actions directly to a file. Default is \fI/var/log/pacman.log\fP.
-
-.SH REPOSITORY SECTIONS
-Each repository section defines a section name and at least one location where
-the packages can be found. The section name is defined by the string within
-square brackets (the two above are 'current' and 'custom'). Locations are
-defined with the \fBServer\fP directive and follow a URL naming structure. If
-you want to use a local directory, you can specify the full path with
-a 'file://' prefix, as shown above.
-
-The order of repositories in the file matters; repositories listed first will
-take precedence over those listed later in the file when packages in two
-repositories have identical names, regardless of version number.
-
-.SH USING YOUR OWN REPOSITORY
-If you have numerous custom packages of your own, it is often easier to
-generate your own custom local repository than install them all with the
-\fB--upgrade\fP option. All you need to do is generate a compressed package
-database in the directory with these packages so \fBpacman\fP can find it when
-run with \fB--refresh\fP.
-
-.RS
-.nf
-repo-add /home/pkgs/custom.db.tar.gz /home/pkgs/*.pkg.tar.gz
-.fi
-.RE
-
-The above command will generate a compressed database named
-\fI/home/pkgs/custom.db.tar.gz\fP. Note that the database must be of the form
-\fI{treename}.db.tar.gz\fP, where {treename} is the name of the section defined
-in the configuration file. That's it! Now configure your \fIcustom\fP section
-in the configuration file as shown in the config example above. Pacman will
-now use your package repository. If you add new packages to the repository,
-remember to re-generate the database and use \fBpacman\fP's --refresh option.
-
-For more information on the \fBrepo-add\fP command, use \fB repo-add --help\fP.
-
-.SH SEE ALSO
-.BR pacman (8),
-.BR libalpm (3)
-
-See the Arch Linux website at <http://www.archlinux.org> for more current
-information on the distribution and the \fBpacman\fP family of tools.
-
-.SH AUTHORS
-.nf
-Judd Vinet <jvinet@zeroflux.org>
-Aurelien Foret <aurelien@archlinux.org>
-Aaron Griffin <aaron@archlinux.org>
-Dan McGee <dan@archlinux.org>
-.fi
-
-See the 'AUTHORS' file for additional contributors.
diff --git a/doc/pacman.conf.5.txt b/doc/pacman.conf.5.txt
new file mode 100644
index 00000000..2a0f88ac
--- /dev/null
+++ b/doc/pacman.conf.5.txt
@@ -0,0 +1,160 @@
+/////
+vim:set ts=4 sw=4 syntax=asciidoc noet:
+/////
+pacman.conf(5)
+==============
+
+Name
+----
+pacman.conf - pacman package manager configuration file
+
+
+Synopsis
+--------
+{sysconfdir}/pacman.conf
+
+
+Description
+-----------
+Pacman, using manlink:libalpm[3], will attempt to read pacman.conf each time it
+is invoked. This configuration file is divided into sections or repositories.
+Each section defines a package repository that pacman can use when searching
+for packages in '\--sync' mode. The exception to this is the options section,
+which defines global options.
+
+
+Example
+-------
+--------
+#
+# pacman.conf
+#
+[options]
+NoUpgrade = etc/passwd etc/group etc/shadow
+NoUpgrade = etc/fstab
+
+[current]
+Include = /etc/pacman.d/current
+
+[custom]
+Server = file:///home/pkgs
+--------
+
+
+Options
+-------
+*RootDir =* path/to/root::
+ Set the default root directory for pacman to install to.
+
+*DBPath =* path/to/db/dir::
+ Overrides the default location of the toplevel database directory.
+ The default is ``/var/lib/pacman/''.
+
+*CacheDir =* path/to/cache/dir::
+ Overrides the default location of the package cache directory. The default
+ is ``/var/cache/pacman/pkg/''. Multiple cache directories can be specified,
+ and they are tried in the order they are listed in the config file. If a
+ file is not found in any cache directory, it will be downloaded to the
+ first cache directory with write access.
+
+*LogFile =* '/path/to/file'::
+ Log actions directly to a file. Default is ``/var/log/pacman.log''.
+
+*HoldPkg =* package ...::
+ If a user tries to '\--remove' a package that's listed in `HoldPkg`,
+ pacman will ask for confirmation before proceeding.
+
+*IgnorePkg =* package ...::
+ Instructs pacman to ignore any upgrades for this package when performing
+ a '\--sysupgrade'.
+
+*IgnoreGroup =* group ...::
+ Instructs pacman to ignore any upgrades for all packages in this
+ group when performing a '\--sysupgrade'.
+
+*Include =* path::
+ Include another config file. This file can include repositories or
+ general configuration options.
+
+*XferCommand =* /path/to/command %u::
+ If set, an external program will be used to download all remote files.
+ All instances of `%u` will be replaced with the download URL. If present,
+ instances of `%o` will be replaced with the local filename, plus a
+ ``.part'' extension, which allows programs like wget to do file resumes
+ properly.
+ +
+ This option is useful for users who experience problems with built-in
+ http/ftp support, or need the more advanced proxy support that comes with
+ utilities like wget.
+
+*NoPassiveFtp*::
+ Disables passive ftp connections when downloading packages. (aka Active Mode)
+
+*NoUpgrade =* file ...::
+ All files listed with a `NoUpgrade` directive will never be touched during
+ a package install/upgrade. Do not include the leading slash when specifying
+ files.
+
+*NoExtract =* file ...::
+ All files listed with a `NoExtract` directive will never be extracted from
+ a package into the filesystem. This can be useful when you don't want part
+ of a package to be installed. For example, if your httpd root uses an
+ 'index.php', then you would not want the 'index.html' file to be extracted
+ from the 'apache' package.
+
+*UseSyslog*::
+ Log action messages through syslog(). This will insert log entries into
+ ``/var/log/messages'' or equivalent.
+
+*ShowSize*::
+ Display the size of individual packages for '\--sync' and '\--query' modes.
+
+*UseDelta*::
+ Download delta files instead of complete packages if possible. Requires
+ the xdelta program to be installed.
+
+*TotalDownload*::
+ When downloading, display the amount downloaded, download rate, ETA,
+ and completed percentage of the entire download list list rather
+ than the percent of each individual download target. The progress
+ bar is still based solely on the current file download.
+
+Repository Sections
+-------------------
+Each repository section defines a section name and at least one location where
+the packages can be found. The section name is defined by the string within
+square brackets (the two above are 'current' and 'custom'). Locations are
+defined with the 'Server' directive and follow a URL naming structure. If you
+want to use a local directory, you can specify the full path with a ``file://''
+prefix, as shown above.
+
+The order of repositories in the file matters; repositories listed first will
+take precedence over those listed later in the file when packages in two
+repositories have identical names, regardless of version number.
+
+Using Your Own Repository
+-------------------------
+If you have numerous custom packages of your own, it is often easier to generate
+your own custom local repository than install them all with the '\--upgrade'
+option. All you need to do is generate a compressed package database in the
+directory with these packages so pacman can find it when run with '\--refresh'.
+
+ repo-add /home/pkgs/custom.db.tar.gz /home/pkgs/*.pkg.tar.gz
+
+The above command will generate a compressed database named
+'/home/pkgs/custom.db.tar.gz'. Note that the database must be of the form
+'{treename}.db.tar.gz', where '{treename}' is the name of the section defined in
+the configuration file. That's it! Now configure your custom section in the
+configuration file as shown in the config example above. Pacman will now use your
+package repository. If you add new packages to the repository, remember to
+re-generate the database and use pacman's '\--refresh' option.
+
+For more information on the repo-add command, see ``repo-add \--help'' or
+manlink:repo-add[8].
+
+
+See Also
+--------
+manlink:pacman[8], manlink:libalpm[3]
+
+include::footer.txt[]
diff --git a/doc/repo-add.8.txt b/doc/repo-add.8.txt
new file mode 100644
index 00000000..27e0e93f
--- /dev/null
+++ b/doc/repo-add.8.txt
@@ -0,0 +1,51 @@
+/////
+vim:set ts=4 sw=4 syntax=asciidoc noet:
+/////
+repo-add(8)
+==========
+
+Name
+----
+////
+* If we use this below line, the manpage name comes out all weird. We also
+* can't use two separate lines, which is quite annoying. *
+repo-add, repo-remove - package database maintenance utilities
+////
+repo-add - package database maintenance utility
+
+
+Synopsis
+--------
+repo-add <path-to-db> [--force] <package> ...
+
+repo-remove <path-to-db> <packagename> ...
+
+
+Description
+-----------
+repo-add and repo-remove are two scripts to help build a package database for
+packages built with manlink:makepkg[8] and installed with manlink:pacman[8].
+
+repo-add will update a package database by reading a built package file.
+Multiple packages to add can be specified on the command line.
+
+repo-remove will update a package database by removing the package name
+specified on the command line. Multiple packages to remove can be specified
+on the command line.
+
+
+Options
+-------
+*--force* (repo-add only)::
+ Add a force entry to the sync database, which tells pacman to skip version
+ number comparison and update the package regardless. This flag can be
+ specified in the middle of the command line, with any packages listed
+ before the flag being added as normal entries, and any specified after
+ being marked as force upgrades.
+
+
+See Also
+--------
+manlink:makepkg[8], manlink:pacman[8]
+
+include::footer.txt[]
diff --git a/etc/.gitignore b/etc/.gitignore
index 19f2216d..7c5f1e2b 100644
--- a/etc/.gitignore
+++ b/etc/.gitignore
@@ -1,4 +1,2 @@
-Makefile
-Makefile.in
makepkg.conf
pacman.conf
diff --git a/etc/Makefile.am b/etc/Makefile.am
index 0bded95e..2cff0150 100644
--- a/etc/Makefile.am
+++ b/etc/Makefile.am
@@ -1,4 +1,36 @@
-SUBDIRS = pacman.d abs
+SUBDIRS = pacman.d
+
+if INCLUDE_ABS
+SUBDIRS += abs
+endif
-EXTRA_DIST = makepkg.conf pacman.conf
dist_sysconf_DATA = makepkg.conf pacman.conf
+EXTRA_DIST = makepkg.conf.in pacman.conf.in
+
+# Files that should be removed, but which Automake does not know.
+MOSTLYCLEANFILES = $(dist_sysconf_DATA)
+
+#### Taken from the autoconf scripts Makefile.am ####
+edit = sed \
+ -e 's|@sysconfdir[@]|$(sysconfdir)|g' \
+ -e 's|@localstatedir[@]|$(localstatedir)|g' \
+ -e 's|@prefix[@]|$(prefix)|g' \
+ -e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' \
+ -e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' \
+ -e 's|@PKGEXT[@]|$(PKGEXT)|g' \
+ -e 's|@SRCEXT[@]|$(SRCEXT)|g' \
+ -e 's|@CARCH[@]|$(CARCH)|g' \
+ -e 's|@CHOST[@]|$(CHOST)|g' \
+ -e 's|@ARCHSWITCH[@]|$(ARCHSWITCH)|g' \
+ -e 's|@CARCHFLAGS[@]|$(CARCHFLAGS)|g' \
+ -e 's|@ROOTDIR[@]|$(ROOTDIR)|g'
+
+$(dist_sysconf_DATA): Makefile
+ rm -f $@ $@.tmp
+ $(edit) `test -f ./$@.in || echo $(srcdir)/`$@.in >$@.tmp
+ mv $@.tmp $@
+
+makepkg.conf: $(srcdir)/makepkg.conf.in
+pacman.conf: $(srcdir)/pacman.conf.in
+
+# vim:set ts=2 sw=2 noet:
diff --git a/etc/abs/Makefile.am b/etc/abs/Makefile.am
index 1c10d0b7..b6b64f03 100644
--- a/etc/abs/Makefile.am
+++ b/etc/abs/Makefile.am
@@ -1,17 +1,20 @@
-EXTRA_DIST = abs.conf \
- supfile.community \
- supfile.core \
- supfile.extra \
- supfile.testing \
- supfile.unstable
+EXTRA_DIST = \
+ abs.conf \
+ supfile.community \
+ supfile.core \
+ supfile.extra \
+ supfile.testing \
+ supfile.unstable
install-data-hook:
mkdir -p $(DESTDIR)$(sysconfdir)/abs ; \
for j in $(EXTRA_DIST); do \
- $(INSTALL) -c -m 644 $(srcdir)/$$j $(DESTDIR)$(sysconfdir)/abs/$$j ; \
+ $(INSTALL) -c -m 644 $(srcdir)/$$j $(DESTDIR)$(sysconfdir)/abs/$$j ; \
done
uninstall-hook:
for j in $(EXTRA_DIST); do \
- rm -f $(DESTDIR)$(sysconfdir)/abs/$$j ; \
+ rm -f $(DESTDIR)$(sysconfdir)/abs/$$j ; \
done
+
+# vim:set ts=2 sw=2 noet:
diff --git a/etc/abs/supfile.community b/etc/abs/supfile.community
index 87cc3351..6565ea50 100644
--- a/etc/abs/supfile.community
+++ b/etc/abs/supfile.community
@@ -1,5 +1,5 @@
#
-# /etc/abs/supfile.community
+# supfile.community
#
# this is the host containing the community PKGBUILD files
diff --git a/etc/abs/supfile.core b/etc/abs/supfile.core
index e7867f10..2e052bce 100644
--- a/etc/abs/supfile.core
+++ b/etc/abs/supfile.core
@@ -1,5 +1,5 @@
#
-# /etc/abs/supfile.core
+# supfile.core
#
# this is the host containing the core PKGBUILD files
diff --git a/etc/abs/supfile.extra b/etc/abs/supfile.extra
index 997027ab..3f69a7b5 100644
--- a/etc/abs/supfile.extra
+++ b/etc/abs/supfile.extra
@@ -1,5 +1,5 @@
#
-# /etc/abs/supfile.extra
+# supfile.extra
#
# this is the host containing the extra PKGBUILD files
diff --git a/etc/abs/supfile.testing b/etc/abs/supfile.testing
index 92862af2..70fc6551 100644
--- a/etc/abs/supfile.testing
+++ b/etc/abs/supfile.testing
@@ -1,5 +1,5 @@
#
-# /etc/abs/supfile.testing
+# supfile.testing
#
# this is the host containing the testing PKGBUILD files
diff --git a/etc/abs/supfile.unstable b/etc/abs/supfile.unstable
index d2c2041c..d567313d 100644
--- a/etc/abs/supfile.unstable
+++ b/etc/abs/supfile.unstable
@@ -1,5 +1,5 @@
#
-# /etc/abs/supfile.unstable
+# supfile.unstable
#
# this is the host containing the unstable PKGBUILD files
diff --git a/etc/makepkg.conf.in b/etc/makepkg.conf.in
index 90623c9d..d13c3d69 100644
--- a/etc/makepkg.conf.in
+++ b/etc/makepkg.conf.in
@@ -1,15 +1,23 @@
#
-# /etc/makepkg.conf
+# @sysconfdir@/makepkg.conf
#
#########################################################################
# SOURCE ACQUISITION
#########################################################################
#
-#-- The FTP/HTTP download utility that makepkg should use to acquire sources
-FTPAGENT="/usr/bin/wget --continue --passive-ftp --tries=3 --waitretry=3 --no-check-certificate"
-#FTPAGENT="/usr/bin/snarf"
-#FTPAGENT="/usr/bin/lftpget -c"
+#-- The download utilities that makepkg should use to acquire sources
+# Format: 'protocol::agent'
+DLAGENTS=('ftp::/usr/bin/wget -c --passive-ftp -t 3 --waitretry=3'
+ 'http::/usr/bin/wget -c -t 3 --waitretry=3'
+ 'https::/usr/bin/wget -c -t 3 --waitretry=3 --no-check-certificate'
+ 'rsync::/usr/bin/rsync -z'
+ 'scp::/usr/bin/scp -C')
+
+# Other common tools:
+# /usr/bin/snarf
+# /usr/bin/lftpget -c
+# /usr/bin/curl
#########################################################################
# ARCHITECTURE, COMPILE FLAGS
@@ -19,10 +27,10 @@ CARCH="@CARCH@"
CHOST="@CHOST@"
#-- Exclusive: will only run on @CARCHFLAGS@
-# -mtune builds exclusively for an architecture
-# -mcpu optimizes for an architecture, but builds for the whole processor family
-CFLAGS="-@ARCHSWITCH@=@CARCHFLAGS@ -mtune=generic -O2 -pipe"
-CXXFLAGS="-@ARCHSWITCH@=@CARCHFLAGS@ -mtune=generic -O2 -pipe"
+# -march (or -mcpu) builds exclusively for an architecture
+# -mtune optimizes for an architecture, but builds for whole processor family
+CFLAGS="@CARCHFLAGS@-mtune=generic -O2 -pipe"
+CXXFLAGS="@CARCHFLAGS@-mtune=generic -O2 -pipe"
#-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2"
@@ -30,14 +38,16 @@ CXXFLAGS="-@ARCHSWITCH@=@CARCHFLAGS@ -mtune=generic -O2 -pipe"
# BUILD ENVIRONMENT
#########################################################################
#
-# Defaults: BUILDENV=(!fakeroot !distcc color !ccache)
+# Defaults: BUILDENV=(fakeroot !distcc color !ccache !xdelta)
+# A negated environment option will do the opposite of the comments below.
#
#-- fakeroot: Allow building packages as a non-root user
#-- distcc: Use the Distributed C/C++/ObjC compiler
#-- color: Colorize output messages
#-- ccache: Use ccache to cache compilation
+#-- xdelta: Generate delta patch from previous to current package
#
-BUILDENV=(fakeroot !distcc color !ccache)
+BUILDENV=(fakeroot !distcc color !ccache !xdelta)
#
#-- If using DistCC, your MAKEFLAGS will also need modification. In addition,
#-- specify a space-delimited list of hosts running in the DistCC cluster.
@@ -48,7 +58,8 @@ BUILDENV=(fakeroot !distcc color !ccache)
# These are default values for the options=() settings
#########################################################################
#
-# Default: OPTIONS=(strip !docs !libtool emptydirs)
+# Default: OPTIONS=(strip !docs libtool emptydirs)
+# A negated option will do the opposite of the comments below.
#
#-- strip: Strip symbols from binaries/libraries
#-- docs: Save doc and info directories
@@ -75,4 +86,17 @@ DOC_DIRS=(usr/{,share/}{info,doc,gtk-doc} opt/gnome/{,share/}{info,doc,gtk-doc})
#-- Packager: name/email of the person or organization building packages
#PACKAGER="John Doe <john@doe.com>"
+#########################################################################
+# BUILDSCRIPT/EXTENSION DEFAULTS
+#########################################################################
+#
+# WARNING: Do NOT modify these variables unless you know what you are
+# doing.
+#
+BUILDSCRIPT='PKGBUILD'
+PKGEXT='@PKGEXT@'
+SRCEXT='@SRCEXT@'
+DB_COMPRESSION='gz'
+DB_CHECKSUMS=(md5)
+
# vim: set ft=sh ts=2 sw=2 et:
diff --git a/etc/pacman.conf.in b/etc/pacman.conf.in
index f76c2acf..a072db13 100644
--- a/etc/pacman.conf.in
+++ b/etc/pacman.conf.in
@@ -1,5 +1,5 @@
#
-# /etc/pacman.conf
+# @sysconfdir@/pacman.conf
#
# See the pacman manpage for option directives
@@ -7,7 +7,12 @@
# GENERAL OPTIONS
#
[options]
-LogFile = /var/log/pacman.log
+# The following paths are commented out with their default values listed.
+# If you wish to use different paths, uncomment and update the paths.
+#RootDir = @ROOTDIR@
+#DBPath = @localstatedir@/lib/pacman/
+#CacheDir = @localstatedir@/cache/pacman/pkg/
+#LogFile = @localstatedir@/log/pacman.log
HoldPkg = pacman glibc
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
@@ -20,23 +25,23 @@ HoldPkg = pacman glibc
# have identical names, regardless of version number
#
#[testing]
-#Include = /etc/pacman.d/testing
+#Include = @sysconfdir@/pacman.d/mirrorlist
[core]
# Add your preferred servers here, they will be used first
-Include = /etc/pacman.d/core
+Include = @sysconfdir@/pacman.d/mirrorlist
[extra]
# Add your preferred servers here, they will be used first
-Include = /etc/pacman.d/extra
+Include = @sysconfdir@/pacman.d/mirrorlist
[community]
# Add your preferred servers here, they will be used first
-Include = /etc/pacman.d/community
+Include = @sysconfdir@/pacman.d/mirrorlist
#[unstable]
# Add your preferred servers here, they will be used first
-#Include = /etc/pacman.d/unstable
+#Include = @sysconfdir@/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
diff --git a/etc/pacman.d/.gitignore b/etc/pacman.d/.gitignore
index 32b2d700..b47959b7 100644
--- a/etc/pacman.d/.gitignore
+++ b/etc/pacman.d/.gitignore
@@ -1,9 +1 @@
-Makefile
-Makefile.in
-community
-current
-extra
mirrorlist
-release
-unstable
-testing
diff --git a/etc/pacman.d/Makefile.am b/etc/pacman.d/Makefile.am
index 341b3efa..e1f33c76 100644
--- a/etc/pacman.d/Makefile.am
+++ b/etc/pacman.d/Makefile.am
@@ -1,9 +1,17 @@
pkgsysconfdir = ${sysconfdir}/pacman.d
-dist_pkgsysconf_DATA = community core extra release testing unstable
+dist_pkgsysconf_DATA = mirrorlist
+EXTRA_DIST = mirrorlist.in
+#
+# Files that should be removed, but which Automake does not know.
+MOSTLYCLEANFILES = $(dist_pkgsysconf_DATA)
-$(dist_pkgsysconf_DATA): mirrorlist
- sed "s|@@REPO@@|$@|g" <$< >$@
+$(dist_pkgsysconf_DATA): Makefile
+ rm -f $@ $@.tmp
+ sed \
+ -e 's|@CARCH[@]|$(CARCH)|g' \
+ $(srcdir)/mirrorlist.in >$@.tmp
+ mv $@.tmp $@
-clean-local:
- rm -f $(dist_pkgsysconf_DATA)
+mirrorlist: $(srcdir)/mirrorlist.in
+# vim:set ts=2 sw=2 noet:
diff --git a/etc/pacman.d/mirrorlist.in b/etc/pacman.d/mirrorlist.in
index 39716a6d..554ed4eb 100644
--- a/etc/pacman.d/mirrorlist.in
+++ b/etc/pacman.d/mirrorlist.in
@@ -1,83 +1,84 @@
#
-# @@REPO@@: Arch Linux @@REPO@@ repository
+# $repo: Arch Linux @REPO@ repository
#
# United States
-Server = ftp://ftp.archlinux.org/@@REPO@@/os/@CARCH@
-Server = ftp://ftp.nethat.com/pub/linux/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://locke.suu.edu/linux/dist/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://mirrors.unixheads.org/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://ftp-linux.cc.gatech.edu/pub/linux/distributions/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://mirror.cs.vt.edu/pub/ArchLinux/@@REPO@@/os/@CARCH@
-Server = http://mirrors.easynews.com/linux/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://ftp.ibiblio.org/pub/linux/distributions/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://ftp.archlinux.org/$repo/os/@CARCH@
+Server = ftp://ftp.nethat.com/pub/linux/archlinux/$repo/os/@CARCH@
+Server = ftp://locke.suu.edu/linux/dist/archlinux/$repo/os/@CARCH@
+Server = ftp://mirrors.unixheads.org/archlinux/$repo/os/@CARCH@
+Server = ftp://ftp-linux.cc.gatech.edu/pub/linux/distributions/archlinux/$repo/os/@CARCH@
+Server = ftp://mirror.cs.vt.edu/pub/ArchLinux/$repo/os/@CARCH@
+Server = http://mirrors.easynews.com/linux/archlinux/$repo/os/@CARCH@
+Server = ftp://ftp.ibiblio.org/pub/linux/distributions/archlinux/$repo/os/@CARCH@
+Server = http://holmes.umflint.edu/archlinux/$repo/os/@CARCH@
# South America
# - Brazil
-Server = http://archlinux.c3sl.ufpr.br/@@REPO@@/os/@CARCH@
+Server = http://archlinux.c3sl.ufpr.br/$repo/os/@CARCH@
+Server = ftp://archlinux.c3sl.ufpr.br/archlinux/$repo/os/@CARCH@
# Europe
# - Austria
-Server = ftp://gd.tuwien.ac.at/opsys/linux/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://gd.tuwien.ac.at/opsys/linux/archlinux/$repo/os/@CARCH@
# - Belgium
-Server = ftp://ftp.belnet.be/packages/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://ftp.belnet.be/packages/archlinux/$repo/os/@CARCH@
# - Czech Republic
-Server = ftp://ftp.sh.cvut.cz/MIRRORS/arch/@@REPO@@/os/@CARCH@
+Server = ftp://ftp.sh.cvut.cz/MIRRORS/arch/$repo/os/@CARCH@
# - Estonia
-Server = ftp://ftp.estpak.ee/pub/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://ftp.estpak.ee/pub/archlinux/$repo/os/@CARCH@
# - Finland
-Server = ftp://ftp.sixnix.net/pub/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://ftp.sixnix.net/pub/archlinux/$repo/os/@CARCH@
# - France
-Server = ftp://ftp.rez-gif.supelec.fr/pub/Linux/distrib/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://mir1.archlinuxfr.org/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://mir2.archlinuxfr.org/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://mir1.archlinuxfr.org/archlinux/$repo/os/@CARCH@
+Server = ftp://mir2.archlinuxfr.org/archlinux/$repo/os/@CARCH@
+Server = ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/archlinux/$repo/os/@CARCH@
+Server = http://mir.archlinux.fr/$repo/os/@CARCH@
+Server = ftp://ftp.free.fr/mirrors/ftp.archlinux.org/$repo/os/@CARCH@
# - Germany
-Server = ftp://ftp.tu-chemnitz.de/pub/linux/sunsite.unc-mirror/distributions/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/@@REPO@@/os/@CARCH@
-Server = ftp://ftp.archlinuxppc.org/i686/@@REPO@@/os/@CARCH@
+Server = ftp://ftp.tu-chemnitz.de/pub/linux/sunsite.unc-mirror/distributions/archlinux/$repo/os/@CARCH@
+Server = ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/@CARCH@
+Server = ftp://ftp.archlinuxppc.org/i686/$repo/os/@CARCH@
# - Great Britain
-Server = http://ftp.parrswood.manchester.sch.uk/Mirrors/ftp.archlinux.org/@@REPO@@/os/@CARCH@
+Server = http://www.mirrorservice.org/sites/ftp.archlinux.org/$repo/os/@CARCH@
# - Greece
-Server = ftp://ftp.ntua.gr/pub/linux/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://ftp.ntua.gr/pub/linux/archlinux/$repo/os/@CARCH@
+# - Hungary
+Server = ftp://ftp.mfa.kfki.hu/pub/mirrors/ftp.archlinux.org/$repo/os/@CARCH@
# - Ireland
-Server = ftp://ftp.heanet.ie/mirrors/ftp.archlinux.org/@@REPO@@/os/@CARCH@
+Server = ftp://ftp.heanet.ie/mirrors/ftp.archlinux.org/$repo/os/@CARCH@
# - Italy
-Server = ftp://mi.mirror.garr.it/mirrors/archlinux/@@REPO@@/os/@CARCH@
-# - Lithuania
-Server = ftp://saule.mintis.lt/pub/linux/@@REPO@@/os/@CARCH@
+Server = ftp://mi.mirror.garr.it/mirrors/archlinux/$repo/os/@CARCH@
# - Netherlands
-Server = ftp://ftp.nluug.nl/pub/metalab/distributions/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/@@REPO@@/os/@CARCH@
-# - Norway
-Server = ftp://mirror.djzradio.net/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://ftp.nluug.nl/pub/metalab/distributions/archlinux/$repo/os/@CARCH@
+Server = ftp://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/$repo/os/@CARCH@
# - Poland
-Server = ftp://sunsite.icm.edu.pl/site/linux-sunsite/distributions/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://mirror.icis.pcz.pl/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://ftp.icm.edu.pl/pub/Linux/sunsite/distributions/archlinux/$repo/os/@CARCH@
+Server = ftp://mirror.icis.pcz.pl/archlinux/$repo/os/@CARCH@
# - Portugal
-Server = ftp://gul.est.ips.pt/repos/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://cesium.di.uminho.pt/pub/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://darkstar.ist.utl.pt/pub/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://cesium.di.uminho.pt/pub/archlinux/$repo/os/@CARCH@
# - Romania
-Server = ftp://ftp.iasi.roedu.net/mirrors/archlinux.org/@@REPO@@/os/@CARCH@
+Server = ftp://ftp.iasi.roedu.net/mirrors/archlinux.org/$repo/os/@CARCH@
# - Russia
-Server = http://archlinux.freeside.ru/@@REPO@@/os/@CARCH@
-Server = ftp://mirror.yandex.ru/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://archlinux.org.ru/pub/archlinux/$repo/os/@CARCH@
+Server = ftp://mirror.yandex.ru/archlinux/$repo/os/@CARCH@
+Server = http://archlinux.freeside.ru/$repo/os/@CARCH@
# - Sweden
-Server = ftp://ftp.ds.hj.se/pub/os/linux/archlinux/@@REPO@@/os/@CARCH@
-Server = ftp://ftp.gigabit.nu/@@REPO@@/os/@CARCH@
+Server = ftp://ftp.ds.hj.se/pub/os/linux/archlinux/$repo/os/@CARCH@
+Server = ftp://ftp.gigabit.nu/$repo/os/@CARCH@
# - Switzerland
-Server = ftp://archlinux.puzzle.ch/@@REPO@@/os/@CARCH@
+Server = ftp://archlinux.puzzle.ch/$repo/os/@CARCH@
# - Turkey
-Server = ftp://ftp.linux.org.tr/pub/archlinux/@@REPO@@/os/@CARCH@
+Server = http://server.elsistech.com/archlinux/$repo/os/@CARCH@
# - Ukraine
-Server = ftp://ftp.linux.kiev.ua/pub/Linux/ArchLinux/@@REPO@@/os/@CARCH@
-Server = ftp://hell.org.ua/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://hell.org.ua/archlinux/$repo/os/@CARCH@
+Server = ftp://ftp.linux.kiev.ua/pub/Linux/ArchLinux/$repo/os/@CARCH@
# Asia
# - Israel
-Server = http://mirror.isoc.org.il/pub/archlinux/@@REPO@@/os/@CARCH@
+Server = http://mirror.isoc.org.il/pub/archlinux/$repo/os/@CARCH@
# Australia
-Server = ftp://mirror.pacific.net.au/linux/archlinux/@@REPO@@/os/@CARCH@
+Server = ftp://mirror.pacific.net.au/linux/archlinux/$repo/os/@CARCH@
+Server = ftp://mirror.aarnet.edu.au/pub/archlinux/$repo/os/@CARCH@
diff --git a/lib/libalpm/.gitignore b/lib/libalpm/.gitignore
index 09980ae6..36d41441 100644
--- a/lib/libalpm/.gitignore
+++ b/lib/libalpm/.gitignore
@@ -1,6 +1,4 @@
.deps
.libs
-Makefile
-Makefile.in
*.lo
*.la
diff --git a/lib/libalpm/Makefile.am b/lib/libalpm/Makefile.am
index 0381d9d8..6549066f 100644
--- a/lib/libalpm/Makefile.am
+++ b/lib/libalpm/Makefile.am
@@ -5,12 +5,16 @@ SUBDIRS = po
lib_LTLIBRARIES = libalpm.la
include_HEADERS = alpm_list.h alpm.h
-localedir = $(datadir)/locale
-DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
+DEFS = -DLOCALEDIR=\"@localedir@\" @DEFS@
-AM_CFLAGS = -fvisibility=hidden -pedantic -D_GNU_SOURCE
+AM_CFLAGS = -pedantic -D_GNU_SOURCE
-EXTRA_DIST = Doxyfile
+if ENABLE_VISIBILITY_CC
+AM_CFLAGS += -fvisibility=internal
+endif
+if ENABLE_GNU89_INLINE_CC
+AM_CFLAGS += -fgnu89-inline
+endif
libalpm_la_SOURCES = \
add.h add.c \
@@ -21,30 +25,20 @@ libalpm_la_SOURCES = \
cache.h cache.c \
conflict.h conflict.c \
db.h db.c \
+ delta.h delta.c \
deps.h deps.c \
error.h error.c \
group.h group.c \
handle.h handle.c \
log.h log.c \
md5.h md5.c \
- md5driver.c \
package.h package.c \
- provide.h provide.c \
remove.h remove.c \
server.h server.c \
- sha1.h sha1.c \
sync.h sync.c \
trans.h trans.c \
- util.h util.c \
- versioncmp.h versioncmp.c
+ util.h util.c
libalpm_la_LDFLAGS = -no-undefined -version-info $(LIB_VERSION_INFO)
-libalpm_la_LIBADD = -larchive -ldownload -lm
-
-if HAS_DOXYGEN
-all: doxygen.in
-doxygen.in:
- doxygen $(srcdir)/Doxyfile
-
-endif
+# vim:set ts=2 sw=2 noet:
diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c
index afe7a45b..24f2b51f 100644
--- a/lib/libalpm/add.c
+++ b/lib/libalpm/add.c
@@ -1,12 +1,8 @@
/*
* add.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
- * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
- * Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>
- * Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
+ * Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -19,26 +15,24 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
-#if defined(__APPLE__) || defined(__OpenBSD__)
-#include <sys/syslimits.h>
-#endif
-#if defined(__APPLE__) || defined(__OpenBSD__) || defined(__sun__)
-#include <sys/stat.h>
-#endif
-
#include "config.h"
#include <stdlib.h>
#include <errno.h>
#include <time.h>
-#include <fcntl.h>
#include <string.h>
#include <limits.h>
-#include <libintl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+/* libarchive */
+#include <archive.h>
+#include <archive_entry.h>
/* libalpm */
#include "add.h"
@@ -47,14 +41,10 @@
#include "util.h"
#include "error.h"
#include "cache.h"
-#include "versioncmp.h"
-#include "md5.h"
-#include "sha1.h"
#include "log.h"
#include "backup.h"
#include "package.h"
#include "db.h"
-#include "provide.h"
#include "conflict.h"
#include "deps.h"
#include "remove.h"
@@ -62,11 +52,9 @@
int _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
{
- pmpkg_t *info = NULL;
- pmpkg_t *dummy;
- char pkgname[PKG_NAME_LEN], pkgver[PKG_VERSION_LEN];
+ pmpkg_t *pkg = NULL;
+ const char *pkgname, *pkgver;
alpm_list_t *i;
- struct stat buf;
ALPM_LOG_FUNC;
@@ -74,26 +62,13 @@ int _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(name != NULL && strlen(name) != 0, RET_ERR(PM_ERR_WRONG_ARGS, -1));
- _alpm_log(PM_LOG_DEBUG, _("loading target '%s'"), name);
-
- /* TODO FS#5120 we need a better way to check if a package is a valid package,
- * and read the metadata instead of relying on the filename for package name
- * and version */
- if(stat(name, &buf)) {
- pm_errno = PM_ERR_NOT_A_FILE;
- goto error;
- }
+ _alpm_log(PM_LOG_DEBUG, "loading target '%s'\n", name);
- if(_alpm_pkg_splitname(name, pkgname, pkgver, 1) == -1) {
- pm_errno = PM_ERR_PKG_INVALID_NAME;
- goto error;
- }
-
- /* no additional hyphens in version strings */
- if(strchr(pkgver, '-') != strrchr(pkgver, '-')) {
- pm_errno = PM_ERR_PKG_INVALID_NAME;
+ if(alpm_pkg_load(name, 1, &pkg) != 0) {
goto error;
}
+ pkgname = alpm_pkg_get_name(pkg);
+ pkgver = alpm_pkg_get_version(pkg);
if(trans->type != PM_TRANS_TYPE_UPGRADE) {
/* only install this package if it is not already installed */
@@ -101,63 +76,42 @@ int _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
pm_errno = PM_ERR_PKG_INSTALLED;
goto error;
}
- } else {
- if(trans->flags & PM_TRANS_FLAG_FRESHEN) {
- /* only upgrade/install this package if it is already installed and at a lesser version */
- dummy = _alpm_db_get_pkgfromcache(db, pkgname);
- if(dummy == NULL || _alpm_versioncmp(dummy->version, pkgver) >= 0) {
- pm_errno = PM_ERR_PKG_CANT_FRESH;
- goto error;
- }
- }
}
- /* check if an older version of said package is already in transaction packages.
- * if so, replace it in the list */
+ /* check if an older version of said package is already in transaction
+ * packages. if so, replace it in the list */
for(i = trans->packages; i; i = i->next) {
pmpkg_t *pkg = i->data;
if(strcmp(pkg->name, pkgname) == 0) {
if(_alpm_versioncmp(pkg->version, pkgver) < 0) {
pmpkg_t *newpkg;
- _alpm_log(PM_LOG_WARNING, _("replacing older version %s-%s by %s in target list"),
+ _alpm_log(PM_LOG_WARNING, _("replacing older version %s-%s by %s in target list\n"),
pkg->name, pkg->version, pkgver);
- if((newpkg = _alpm_pkg_load(name)) == NULL) {
+ if((newpkg = _alpm_pkg_load(name, 1)) == NULL) {
/* pm_errno is already set by pkg_load() */
goto error;
}
- FREEPKG(i->data);
+ _alpm_pkg_free(i->data);
i->data = newpkg;
} else {
- _alpm_log(PM_LOG_WARNING, _("newer version %s-%s is in the target list -- skipping"),
+ _alpm_log(PM_LOG_WARNING, _("newer version %s-%s is in the target list -- skipping\n"),
pkg->name, pkg->version);
}
return(0);
}
}
- _alpm_log(PM_LOG_DEBUG, _("reading '%s' metadata"), pkgname);
- info = _alpm_pkg_load(name);
- if(info == NULL) {
- /* pm_errno is already set by pkg_load() */
- goto error;
- }
- /* check to verify we're not getting fooled by a corrupted package */
- if(strcmp(pkgname, info->name) != 0 || strcmp(pkgver, info->version) != 0) {
- pm_errno = PM_ERR_PKG_INVALID;
- goto error;
- }
-
if(trans->flags & PM_TRANS_FLAG_ALLDEPS) {
- info->reason = PM_PKG_REASON_DEPEND;
+ pkg->reason = PM_PKG_REASON_DEPEND;
}
/* add the package to the transaction */
- trans->packages = alpm_list_add(trans->packages, info);
+ trans->packages = alpm_list_add(trans->packages, pkg);
return(0);
error:
- FREEPKG(info);
+ _alpm_pkg_free(pkg);
return(-1);
}
@@ -172,10 +126,7 @@ error:
int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
{
- alpm_list_t *lp = NULL, *i = NULL;
- alpm_list_t *rmlist = NULL;
- char rm_fname[PATH_MAX];
- pmpkg_t *info = NULL;
+ alpm_list_t *lp = NULL;
ALPM_LOG_FUNC;
@@ -188,8 +139,8 @@ int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
EVENT(trans, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL);
/* look for unsatisfied dependencies */
- _alpm_log(PM_LOG_DEBUG, _("looking for unsatisfied dependencies"));
- lp = _alpm_checkdeps(trans, db, trans->type, trans->packages);
+ _alpm_log(PM_LOG_DEBUG, "looking for unsatisfied dependencies\n");
+ lp = alpm_checkdeps(db, trans->type == PM_TRANS_TYPE_UPGRADE, NULL, trans->packages);
if(lp != NULL) {
if(data) {
*data = lp;
@@ -200,82 +151,46 @@ int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
}
/* no unsatisfied deps, so look for conflicts */
- _alpm_log(PM_LOG_DEBUG, _("looking for conflicts"));
- lp = _alpm_checkconflicts(db, trans->packages);
- for(i = lp; i; i = i->next) {
- pmdepmissing_t *miss = i->data;
+ _alpm_log(PM_LOG_DEBUG, "looking for conflicts\n");
+ alpm_list_t *inner = _alpm_innerconflicts(trans->packages);
+ alpm_list_t *outer = _alpm_outerconflicts(db, trans->packages);
+ lp = alpm_list_join(inner, outer);
+
+ /* TODO : factorize the conflict resolving code from sync.c to use it here (FS#3492) */
- _alpm_log(PM_LOG_ERROR, _("replacing packages with -A and -U is not supported yet"));
- _alpm_log(PM_LOG_ERROR, _("please remove '%s' first, using -Rd"), miss->depend.name);
- RET_ERR(PM_ERR_CONFLICTING_DEPS, -1);
-
- /* Attempt to resolve conflicts */
- /*
- int skip_this = 0;
- QUESTION(trans, PM_TRANS_CONV_CONFLICT_PKG, miss->target, miss->depend.name, NULL, &skip_this);
- if(skip_this) {
- pmdepmissing_t *pkg = NULL;
- lp = alpm_list_remove(lp, (void *)miss, deppkg_cmp, (void*)&pkg);
- */
- /* TODO: We remove the conflict from the list but never actually remove
- * the package. Need to do this to fix FS #3492. The sync code should
- * provide an example of how to do this, as it handles replaces and
- * removes. We run into problems because we do a file conflict check
- * below and it fails there. A force flag will skip that part, but
- * still not remove the original package designated here for removal.
- * Better yet, dump all this shitty duplicate code and somehow combine
- * it with the sync code. */
- /*
- FREE(pkg);
- if(lp == NULL) {
- break;
- }
- }
- */
- }
- /* Removal code should go here, as described above. Instead of simply
- * removing items, perhaps throw them in another list to be removed, then
- * proceed as sync.c would? I'm not sure because I'm not familiar enough
- * with the codebase. */
if(lp != NULL) {
if(data) {
*data = lp;
} else {
FREELIST(lp);
}
+ if(inner) {
+ _alpm_log(PM_LOG_ERROR, _("conflicting packages were found in the target list\n"));
+ _alpm_log(PM_LOG_ERROR, _("you cannot install two conflicting packages at the same time\n"));
+ }
+ if(outer) {
+ _alpm_log(PM_LOG_ERROR, _("replacing packages with -A and -U is not supported yet\n"));
+ _alpm_log(PM_LOG_ERROR, _("you can replace packages manually using -Rd and -U\n"));
+ }
RET_ERR(PM_ERR_CONFLICTING_DEPS, -1);
}
/* re-order w.r.t. dependencies */
- _alpm_log(PM_LOG_DEBUG, _("sorting by dependencies"));
+ _alpm_log(PM_LOG_DEBUG, "sorting by dependencies\n");
lp = _alpm_sortbydeps(trans->packages, PM_TRANS_TYPE_ADD);
/* free the old alltargs */
- FREELISTPTR(trans->packages);
+ alpm_list_free(trans->packages);
trans->packages = lp;
EVENT(trans, PM_TRANS_EVT_CHECKDEPS_DONE, NULL, NULL);
}
- /* Cleaning up
- */
- EVENT(trans, PM_TRANS_EVT_CLEANUP_START, NULL, NULL);
- _alpm_log(PM_LOG_DEBUG, _("cleaning up"));
- for (lp=trans->packages; lp!=NULL; lp=lp->next) {
- info=(pmpkg_t *)lp->data;
- for (rmlist = alpm_pkg_get_removes(info); rmlist; rmlist = rmlist->next) {
- snprintf(rm_fname, PATH_MAX, "%s%s", handle->root, (char *)rmlist->data);
- remove(rm_fname);
- }
- }
- EVENT(trans, PM_TRANS_EVT_CLEANUP_DONE, NULL, NULL);
-
- /* Check for file conflicts
- */
+ /* Check for file conflicts */
if(!(trans->flags & PM_TRANS_FLAG_FORCE)) {
EVENT(trans, PM_TRANS_EVT_FILECONFLICTS_START, NULL, NULL);
- _alpm_log(PM_LOG_DEBUG, _("looking for file conflicts"));
- lp = _alpm_db_find_conflicts(db, trans, handle->root);
+ _alpm_log(PM_LOG_DEBUG, "looking for file conflicts\n");
+ lp = _alpm_db_find_fileconflicts(db, trans, handle->root);
if(lp != NULL) {
if(data) {
*data = lp;
@@ -288,562 +203,662 @@ int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
EVENT(trans, PM_TRANS_EVT_FILECONFLICTS_DONE, NULL, NULL);
}
-#ifndef __sun__
- if(_alpm_check_freespace(trans, data) == -1) {
- /* pm_errno is set by check_freespace */
- return(-1);
- }
-#endif
-
return(0);
}
-int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
-{
- int i, ret = 0, errors = 0, pkg_count = 0;
- struct archive *archive;
- struct archive_entry *entry;
- char cwd[PATH_MAX] = "";
- alpm_list_t *targ, *lp;
-
- ALPM_LOG_FUNC;
-
- ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
- ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
+static int upgrade_remove(pmpkg_t *oldpkg, pmpkg_t *newpkg, pmtrans_t *trans, pmdb_t *db) {
+ /* this is kinda odd. If the old package exists, at this point we make a
+ * NEW transaction, unrelated to handle->trans, and instantiate a "remove"
+ * with the type PM_TRANS_TYPE_REMOVEUPGRADE. TODO: kill this weird
+ * behavior. */
+ pmtrans_t *tr = _alpm_trans_new();
+ _alpm_log(PM_LOG_DEBUG, "removing old package first (%s-%s)\n",
+ oldpkg->name, oldpkg->version);
+
+ if(!tr) {
+ RET_ERR(PM_ERR_TRANS_ABORT, -1);
+ }
- if(trans->packages == NULL) {
- return(0);
+ if(_alpm_trans_init(tr, PM_TRANS_TYPE_REMOVEUPGRADE, trans->flags,
+ NULL, NULL, NULL) == -1) {
+ _alpm_trans_free(tr);
+ tr = NULL;
+ RET_ERR(PM_ERR_TRANS_ABORT, -1);
}
- pkg_count = alpm_list_count(trans->targets);
-
- for(targ = trans->packages; targ; targ = targ->next) {
- char scriptlet[PATH_MAX+1];
- int targ_count = 0, is_upgrade = 0, use_md5 = 0;
- double percent = 0.0;
- pmpkg_t *newpkg = (pmpkg_t *)targ->data;
- pmpkg_t *oldpkg = NULL;
- errors = 0;
+ if(_alpm_remove_loadtarget(tr, db, newpkg->name) == -1) {
+ _alpm_trans_free(tr);
+ tr = NULL;
+ RET_ERR(PM_ERR_TRANS_ABORT, -1);
+ }
- if(handle->trans->state == STATE_INTERRUPTED) {
- break;
+ /* copy the remove skiplist over */
+ tr->skip_remove = alpm_list_strdup(trans->skip_remove);
+ const alpm_list_t *b;
+
+ /* Add files in the OLD and NEW backup array to the NoUpgrade array
+ * so this removal operation doesn't kill them */
+ alpm_list_t *old_noupgrade = alpm_list_strdup(handle->noupgrade);
+ /* old package backup list */
+ for(b = alpm_pkg_get_backup(oldpkg); b; b = b->next) {
+ const char *backup = b->data;
+ _alpm_log(PM_LOG_DEBUG, "adding %s to the NoUpgrade array temporarily\n",
+ backup);
+ handle->noupgrade = alpm_list_add(handle->noupgrade, strdup(backup));
+ }
+ /* new package backup list */
+ for(b = alpm_pkg_get_backup(newpkg); b; b = b->next) {
+ const char *backup = b->data;
+ /* make sure we don't add duplicate entries */
+ if(!alpm_list_find_ptr(handle->noupgrade, backup)) {
+ _alpm_log(PM_LOG_DEBUG, "adding %s to the NoUpgrade array temporarily\n",
+ backup);
+ handle->noupgrade = alpm_list_add(handle->noupgrade, strdup(backup));
}
+ }
- snprintf(scriptlet, PATH_MAX, "%s%s-%s/install", db->path,
- alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
+ int ret = _alpm_remove_commit(tr, db);
- /* check if we have a valid sha1sum, if not, use MD5 */
- if(strlen(newpkg->sha1sum) == 0) {
- use_md5 = 1;
- }
+ _alpm_trans_free(tr);
+ tr = NULL;
- /* see if this is an upgrade. if so, remove the old package first */
- pmpkg_t *local = _alpm_db_get_pkgfromcache(db, newpkg->name);
- if(local) {
- is_upgrade = 1;
-
- EVENT(trans, PM_TRANS_EVT_UPGRADE_START, newpkg, NULL);
- _alpm_log(PM_LOG_DEBUG, _("upgrading package %s-%s"), newpkg->name, newpkg->version);
-
- /* we'll need to save some record for backup checks later */
- oldpkg = _alpm_pkg_new(local->name, local->version);
- if(oldpkg) {
- oldpkg->backup = alpm_list_strdup(alpm_pkg_get_backup(local));
- oldpkg->provides = alpm_list_strdup(alpm_pkg_get_provides(local));
- strncpy(oldpkg->name, local->name, PKG_NAME_LEN);
- strncpy(oldpkg->version, local->version, PKG_VERSION_LEN);
- } else {
- RET_ERR(PM_ERR_MEMORY, -1);
- }
+ /* restore our "NoUpgrade" list to previous state */
+ FREELIST(handle->noupgrade);
+ handle->noupgrade = old_noupgrade;
- /* copy over the install reason */
- newpkg->reason = alpm_pkg_get_reason(local);
+ if(ret == -1) {
+ RET_ERR(PM_ERR_TRANS_ABORT, -1);
+ }
- /* pre_upgrade scriptlet */
- if(alpm_pkg_has_scriptlet(newpkg) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
- _alpm_runscriptlet(handle->root, newpkg->data, "pre_upgrade", newpkg->version, oldpkg->version, trans);
- }
- } else {
- is_upgrade = 0;
-
- EVENT(trans, PM_TRANS_EVT_ADD_START, newpkg, NULL);
- _alpm_log(PM_LOG_DEBUG, _("adding package %s-%s"), newpkg->name, newpkg->version);
-
- /* pre_install scriptlet */
- if(alpm_pkg_has_scriptlet(newpkg) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
- _alpm_runscriptlet(handle->root, newpkg->data, "pre_install", newpkg->version, NULL, trans);
- }
- }
+ return(0);
+}
- if(oldpkg) {
- /* this is kinda odd. If the old package exists, at this point we make a
- * NEW transaction, unrelated to handle->trans, and instantiate a "remove"
- * with the type PM_TRANS_TYPE_UPGRADE. TODO: kill this weird behavior. */
- pmtrans_t *tr = _alpm_trans_new();
- _alpm_log(PM_LOG_DEBUG, _("removing old package first (%s-%s)"), oldpkg->name, oldpkg->version);
+static int extract_single_file(struct archive *archive,
+ struct archive_entry *entry, pmpkg_t *newpkg, pmpkg_t *oldpkg,
+ pmtrans_t *trans, pmdb_t *db)
+{
+ const char *entryname; /* the name of the file in the archive */
+ mode_t entrymode;
+ char filename[PATH_MAX]; /* the actual file we're extracting */
+ int needbackup = 0, notouch = 0;
+ char *hash_orig = NULL;
+ const int archive_flags = ARCHIVE_EXTRACT_OWNER |
+ ARCHIVE_EXTRACT_PERM |
+ ARCHIVE_EXTRACT_TIME;
+ int errors = 0;
+
+ entryname = archive_entry_pathname(entry);
+ entrymode = archive_entry_mode(entry);
+
+ memset(filename, 0, PATH_MAX); /* just to be sure */
+
+ if(strcmp(entryname, ".INSTALL") == 0) {
+ /* the install script goes inside the db */
+ snprintf(filename, PATH_MAX, "%s/%s-%s/install", db->path,
+ newpkg->name, newpkg->version);
+ archive_entry_set_mode(entry, 0644);
+ } else if(strcmp(entryname, ".CHANGELOG") == 0) {
+ /* the changelog goes inside the db */
+ snprintf(filename, PATH_MAX, "%s/%s-%s/changelog", db->path,
+ newpkg->name, newpkg->version);
+ archive_entry_set_mode(entry, 0644);
+ } else if(*entryname == '.') {
+ /* for now, ignore all files starting with '.' that haven't
+ * already been handled (for future possibilities) */
+ _alpm_log(PM_LOG_DEBUG, "skipping extraction of '%s'\n", entryname);
+ archive_read_data_skip(archive);
+ return(0);
+ } else {
+ /* build the new entryname relative to handle->root */
+ snprintf(filename, PATH_MAX, "%s%s", handle->root, entryname);
+ }
- if(!tr) {
- RET_ERR(PM_ERR_TRANS_ABORT, -1);
- }
+ /* if a file is in NoExtract then we never extract it */
+ if(alpm_list_find_str(handle->noextract, entryname)) {
+ _alpm_log(PM_LOG_DEBUG, "%s is in NoExtract, skipping extraction\n",
+ entryname);
+ alpm_logaction("note: %s is in NoExtract, skipping extraction\n",
+ entryname);
+ archive_read_data_skip(archive);
+ return(0);
+ }
- if(_alpm_trans_init(tr, PM_TRANS_TYPE_UPGRADE, trans->flags, NULL, NULL, NULL) == -1) {
- FREETRANS(tr);
- RET_ERR(PM_ERR_TRANS_ABORT, -1);
- }
+ /* if a file is in the add skiplist we never extract it */
+ if(alpm_list_find_str(trans->skip_add, filename)) {
+ _alpm_log(PM_LOG_DEBUG, "%s is in trans->skip_add, skipping extraction\n", entryname);
+ archive_read_data_skip(archive);
+ return(0);
+ }
- if(_alpm_remove_loadtarget(tr, db, newpkg->name) == -1) {
- FREETRANS(tr);
- RET_ERR(PM_ERR_TRANS_ABORT, -1);
+ /* Check for file existence. This is one of the more crucial parts
+ * to get 'right'. Here are the possibilities, with the filesystem
+ * on the left and the package on the top:
+ * (F=file, N=node, S=symlink, D=dir)
+ * | F/N | S | D
+ * non-existent | 1 | 2 | 3
+ * F/N | 4 | 5 | 6
+ * S | 7 | 8 | 9
+ * D | 10 | 11 | 12
+ *
+ * 1,2,3- extract, no magic necessary. lstat (_alpm_lstat) will fail here.
+ * 4,5,6,7,8- conflict checks should have caught this. either overwrite
+ * or backup the file.
+ * 9- follow the symlink, hopefully it is a directory, check it.
+ * 10- file replacing directory- don't allow it.
+ * 11- don't extract symlink- a dir exists here. we don't want links to
+ * links, etc.
+ * 12- skip extraction, dir already exists.
+ */
+ struct stat lsbuf;
+ if(_alpm_lstat(filename, &lsbuf) != 0) {
+ /* cases 1,2,3: couldn't stat an existing file, skip all backup checks */
+ } else {
+ /* do a stat as well, so we can see what symlinks point to */
+ struct stat sbuf;
+ stat(filename, &sbuf);
+
+ if(S_ISDIR(lsbuf.st_mode) && S_ISDIR(entrymode)) {
+ /* case 12: existing dir, ignore it */
+ if(lsbuf.st_mode != entrymode) {
+ /* if filesystem perms are different than pkg perms, warn user */
+ int mask = 07777;
+ _alpm_log(PM_LOG_WARNING, _("directory permissions differ on %s\n"
+ "filesystem: %o package: %o\n"), entryname, lsbuf.st_mode & mask,
+ entrymode & mask);
+ alpm_logaction("warning: directory permissions differ on %s\n"
+ "filesystem: %o package: %o\n", entryname, lsbuf.st_mode & mask,
+ entrymode & mask);
}
-
- /* copy the remove skiplist over */
- tr->skip_remove = alpm_list_strdup(trans->skip_remove);
- alpm_list_t *b;
-
- /* Add files in the NEW package's backup array to the noupgrade array
- * so this removal operation doesn't kill them */
- /* TODO if we add here, all backup=() entries for all targets, new and
- * old, we cover all bases, including backup=() locations changing hands.
- * But is this viable? */
- alpm_list_t *old_noupgrade = alpm_list_strdup(handle->noupgrade);
- for(b = alpm_pkg_get_backup(newpkg); b; b = b->next) {
- const char *backup = b->data;
- _alpm_log(PM_LOG_DEBUG, _("adding %s to the NoUpgrade array temporarily"), backup);
- handle->noupgrade = alpm_list_add(handle->noupgrade, strdup(backup));
+ _alpm_log(PM_LOG_DEBUG, "extract: skipping dir extraction of %s\n",
+ entryname);
+ archive_read_data_skip(archive);
+ return(0);
+ } else if(S_ISDIR(lsbuf.st_mode) && S_ISLNK(entrymode)) {
+ /* case 11: existing dir, symlink in package, ignore it */
+ _alpm_log(PM_LOG_DEBUG, "extract: skipping symlink extraction of %s\n",
+ entryname);
+ archive_read_data_skip(archive);
+ return(0);
+ } else if(S_ISLNK(lsbuf.st_mode) && S_ISDIR(entrymode)) {
+ /* case 9: existing symlink, dir in package */
+ if(S_ISDIR(sbuf.st_mode)) {
+ /* the symlink on FS is to a directory, so we'll use it */
+ _alpm_log(PM_LOG_DEBUG, "extract: skipping symlink overwrite of %s\n",
+ entryname);
+ archive_read_data_skip(archive);
+ return(0);
+ } else {
+ /* this is BAD. symlink was not to a directory */
+ _alpm_log(PM_LOG_ERROR, _("extract: symlink %s does not point to dir\n"),
+ entryname);
+ archive_read_data_skip(archive);
+ return(1);
}
+ } else if(S_ISDIR(lsbuf.st_mode) && S_ISREG(entrymode)) {
+ /* case 10: trying to overwrite dir tree with file, don't allow it */
+ _alpm_log(PM_LOG_ERROR, _("extract: not overwriting dir with file %s\n"),
+ entryname);
+ archive_read_data_skip(archive);
+ return(1);
+ } else if(S_ISREG(lsbuf.st_mode) && S_ISDIR(entrymode)) {
+ /* case 6: trying to overwrite file with dir */
+ _alpm_log(PM_LOG_DEBUG, "extract: overwriting file with dir %s\n",
+ entryname);
+ } else if(S_ISREG(entrymode)) {
+ /* case 4,7: */
+ /* if file is in NoUpgrade, don't touch it */
+ if(alpm_list_find_str(handle->noupgrade, entryname)) {
+ notouch = 1;
+ } else {
+ /* go to the backup array and see if our conflict is there */
+ /* check newpkg first, so that adding backup files is retroactive */
+ if(alpm_list_find_str(alpm_pkg_get_backup(newpkg), entryname) != NULL) {
+ needbackup = 1;
+ }
- int ret = _alpm_remove_commit(tr, db);
-
- FREETRANS(tr);
- /* restore our "NoUpgrade" list to previous state */
- alpm_list_free_inner(handle->noupgrade, free);
- alpm_list_free(handle->noupgrade);
- handle->noupgrade = old_noupgrade;
+ /* check oldpkg for a backup entry, store the hash if available */
+ if(oldpkg) {
+ hash_orig = _alpm_needbackup(entryname, alpm_pkg_get_backup(oldpkg));
+ if(hash_orig) {
+ needbackup = 1;
+ }
+ }
- if(ret == -1) {
- RET_ERR(PM_ERR_TRANS_ABORT, -1);
+ /* if we force hash_orig to be non-NULL retroactive backup works */
+ if(needbackup && !hash_orig) {
+ hash_orig = strdup("");
+ }
}
}
+ /* else if(S_ISLNK(entrymode)) */
+ /* case 5,8: don't need to do anything special */
+ }
- if(!(trans->flags & PM_TRANS_FLAG_DBONLY)) {
- _alpm_log(PM_LOG_DEBUG, _("extracting files"));
+ if(needbackup) {
+ char *tempfile = NULL;
+ char *hash_local = NULL, *hash_pkg = NULL;
+ int fd;
+
+ /* extract the package's version to a temporary file and checksum it */
+ tempfile = strdup("/tmp/alpm_XXXXXX");
+ fd = mkstemp(tempfile);
+
+ archive_entry_set_pathname(entry, tempfile);
+
+ int ret = archive_read_extract(archive, entry, archive_flags);
+ if(ret == ARCHIVE_WARN) {
+ /* operation succeeded but a non-critical error was encountered */
+ _alpm_log(PM_LOG_DEBUG, "warning extracting %s (%s)\n",
+ entryname, archive_error_string(archive));
+ } else if(ret != ARCHIVE_OK) {
+ _alpm_log(PM_LOG_ERROR, _("could not extract %s (%s)\n"),
+ entryname, archive_error_string(archive));
+ alpm_logaction("error: could not extract %s (%s)\n",
+ entryname, archive_error_string(archive));
+ unlink(tempfile);
+ FREE(hash_orig);
+ close(fd);
+ return(1);
+ }
- if ((archive = archive_read_new()) == NULL) {
- RET_ERR(PM_ERR_LIBARCHIVE_ERROR, -1);
+ hash_local = alpm_get_md5sum(filename);
+ hash_pkg = alpm_get_md5sum(tempfile);
+
+ /* append the new md5 hash to it's respective entry
+ * in newpkg's backup (it will be the new orginal) */
+ alpm_list_t *backups;
+ for(backups = alpm_pkg_get_backup(newpkg); backups;
+ backups = alpm_list_next(backups)) {
+ char *oldbackup = alpm_list_getdata(backups);
+ if(!oldbackup || strcmp(oldbackup, entryname) != 0) {
+ continue;
+ }
+ char *backup = NULL;
+ /* length is tab char, null byte and MD5 (32 char) */
+ int backup_len = strlen(oldbackup) + 34;
+ backup = malloc(backup_len);
+ if(!backup) {
+ RET_ERR(PM_ERR_MEMORY, -1);
}
- archive_read_support_compression_all(archive);
- archive_read_support_format_all(archive);
+ sprintf(backup, "%s\t%s", oldbackup, hash_pkg);
+ backup[backup_len-1] = '\0';
+ FREE(oldbackup);
+ backups->data = backup;
+ }
- if(archive_read_open_file(archive, newpkg->data, ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) {
- RET_ERR(PM_ERR_PKG_OPEN, -1);
- }
+ _alpm_log(PM_LOG_DEBUG, "checking hashes for %s\n", entryname);
+ _alpm_log(PM_LOG_DEBUG, "current: %s\n", hash_local);
+ _alpm_log(PM_LOG_DEBUG, "new: %s\n", hash_pkg);
+ _alpm_log(PM_LOG_DEBUG, "original: %s\n", hash_orig);
+
+ if(!oldpkg) {
+ /* looks like we have a local file that has a different hash as the
+ * file in the package, move it to a .pacorig */
+ if(strcmp(hash_local, hash_pkg) != 0) {
+ char newpath[PATH_MAX];
+ snprintf(newpath, PATH_MAX, "%s.pacorig", filename);
- /* save the cwd so we can restore it later */
- if(getcwd(cwd, PATH_MAX) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not get current working directory"));
- cwd[0] = 0;
+ /* move the existing file to the "pacorig" */
+ if(rename(filename, newpath)) {
+ archive_entry_set_pathname(entry, filename);
+ _alpm_log(PM_LOG_ERROR, _("could not rename %s (%s)\n"), filename, strerror(errno));
+ alpm_logaction("error: could not rename %s (%s)\n", filename, strerror(errno));
+ errors++;
+ } else {
+ /* copy the tempfile we extracted to the real path */
+ if(_alpm_copyfile(tempfile, filename)) {
+ archive_entry_set_pathname(entry, filename);
+ _alpm_log(PM_LOG_ERROR, _("could not copy tempfile to %s (%s)\n"), filename, strerror(errno));
+ alpm_logaction("error: could not copy tempfile to %s (%s)\n", filename, strerror(errno));
+ errors++;
+ } else {
+ archive_entry_set_pathname(entry, filename);
+ _alpm_log(PM_LOG_WARNING, _("%s saved as %s\n"), filename, newpath);
+ alpm_logaction("warning: %s saved as %s\n", filename, newpath);
+ }
+ }
}
+ } else if(hash_orig) {
+ /* the fun part */
+
+ if(strcmp(hash_orig, hash_local) == 0) {
+ /* installed file has NOT been changed by user */
+ if(strcmp(hash_orig, hash_pkg) != 0) {
+ _alpm_log(PM_LOG_DEBUG, "action: installing new file: %s\n",
+ entryname);
- /* libarchive requires this for extracting hard links */
- chdir(handle->root);
-
- targ_count = alpm_list_count(targ);
- /* call PROGRESS once with 0 percent, as we sort-of skip that here */
- PROGRESS(trans, (is_upgrade ? PM_TRANS_PROGRESS_UPGRADE_START : PM_TRANS_PROGRESS_ADD_START),
- newpkg->name, 0, pkg_count, (pkg_count - targ_count +1));
-
- for(i = 0; archive_read_next_header(archive, &entry) == ARCHIVE_OK; i++) {
- const char *entryname; /* the name of the file in the archive */
- char filename[PATH_MAX]; /* the actual file we're extracting */
- int needbackup = 0, notouch = 0;
- char *hash_orig = NULL;
- struct stat buf;
-
- entryname = archive_entry_pathname(entry);
-
- if(newpkg->size != 0) {
- /* Using compressed size for calculations here, as newpkg->isize is not
- * exact when it comes to comparing to the ACTUAL uncompressed size
- * (missing metadata sizes) */
- unsigned long pos = archive_position_compressed(archive);
- percent = (double)pos / (double)newpkg->size;
- _alpm_log(PM_LOG_DEBUG, "decompression progress: %f%% (%ld / %ld)", percent*100.0, pos, newpkg->size);
- if(percent >= 1.0) {
- percent = 1.0;
+ if(_alpm_copyfile(tempfile, filename)) {
+ _alpm_log(PM_LOG_ERROR, _("could not copy tempfile to %s (%s)\n"), filename, strerror(errno));
+ errors++;
}
+ archive_entry_set_pathname(entry, filename);
+ } else {
+ /* there's no sense in installing the same file twice, install
+ * ONLY is the original and package hashes differ */
+ _alpm_log(PM_LOG_DEBUG, "action: leaving existing file in place\n");
}
-
- PROGRESS(trans, (is_upgrade ? PM_TRANS_PROGRESS_UPGRADE_START : PM_TRANS_PROGRESS_ADD_START),
- newpkg->name, (int)(percent * 100), pkg_count, (pkg_count - targ_count +1));
-
- memset(filename, 0, PATH_MAX); /* just to be sure */
-
- if(strcmp(entryname, ".PKGINFO") == 0 || strcmp(entryname, ".FILELIST") == 0) {
- archive_read_data_skip(archive);
- continue;
- } else if(strcmp(entryname, ".INSTALL") == 0) {
- /* the install script goes inside the db */
- snprintf(filename, PATH_MAX, "%s/%s-%s/install", db->path,
- newpkg->name, newpkg->version);
- } else if(strcmp(entryname, ".CHANGELOG") == 0) {
- /* the changelog goes inside the db */
- snprintf(filename, PATH_MAX, "%s/%s-%s/changelog", db->path,
- newpkg->name, newpkg->version);
+ } else if(strcmp(hash_orig, hash_pkg) == 0) {
+ /* originally installed file and new file are the same - this
+ * implies the case above failed - i.e. the file was changed by a
+ * user */
+ _alpm_log(PM_LOG_DEBUG, "action: leaving existing file in place\n");
+ } else if(strcmp(hash_local, hash_pkg) == 0) {
+ /* this would be magical. The above two cases failed, but the
+ * user changes just so happened to make the new file exactly the
+ * same as the one in the package... skip it */
+ _alpm_log(PM_LOG_DEBUG, "action: leaving existing file in place\n");
+ } else {
+ char newpath[PATH_MAX];
+ _alpm_log(PM_LOG_DEBUG, "action: keeping current file and installing new one with .pacnew ending\n");
+ snprintf(newpath, PATH_MAX, "%s.pacnew", filename);
+ if(_alpm_copyfile(tempfile, newpath)) {
+ _alpm_log(PM_LOG_ERROR, _("could not install %s as %s: %s\n"), filename, newpath, strerror(errno));
+ alpm_logaction("error: could not install %s as %s: %s\n", filename, newpath, strerror(errno));
} else {
- /* build the new entryname relative to handle->root */
- snprintf(filename, PATH_MAX, "%s%s", handle->root, entryname);
+ _alpm_log(PM_LOG_WARNING, _("%s installed as %s\n"), filename, newpath);
+ alpm_logaction("warning: %s installed as %s\n", filename, newpath);
}
+ }
+ }
- /* if a file is in NoExtract then we never extract it */
- if(alpm_list_find_str(handle->noextract, entryname)) {
- _alpm_log(PM_LOG_DEBUG, _("%s is in NoExtract, skipping extraction"), entryname);
- alpm_logaction(_("%s is in NoExtract, skipping extraction"), entryname);
- archive_read_data_skip(archive);
- continue;
- }
+ FREE(hash_local);
+ FREE(hash_pkg);
+ FREE(hash_orig);
+ unlink(tempfile);
+ FREE(tempfile);
+ close(fd);
+ } else {
+ /* we didn't need a backup */
+ if(notouch) {
+ /* change the path to a .pacnew extension */
+ _alpm_log(PM_LOG_DEBUG, "%s is in NoUpgrade -- skipping\n", filename);
+ _alpm_log(PM_LOG_WARNING, _("extracting %s as %s.pacnew\n"), filename, filename);
+ alpm_logaction("warning: extracting %s as %s.pacnew\n", filename, filename);
+ strncat(filename, ".pacnew", PATH_MAX - strlen(filename));
+ } else {
+ _alpm_log(PM_LOG_DEBUG, "extracting %s\n", filename);
+ }
- /* if a file is in the add skiplist we never extract it */
- if(alpm_list_find_str(trans->skip_add, filename)) {
- _alpm_log(PM_LOG_DEBUG, _("%s is in trans->skip_add, skipping extraction"), entryname);
- archive_read_data_skip(archive);
- continue;
- }
+ if(trans->flags & PM_TRANS_FLAG_FORCE) {
+ /* if FORCE was used, unlink() each file (whether it's there
+ * or not) before extracting. This prevents the old "Text file busy"
+ * error that crops up if forcing a glibc or pacman upgrade. */
+ unlink(filename);
+ }
- /* check is file already exists */
- if(stat(filename, &buf) == 0 && !S_ISDIR(buf.st_mode)) {
- /* it does, is it a backup=() file?
- * always check the newpkg first, so when we do add a backup=() file,
- * we don't have to wait a full upgrade cycle */
- needbackup = alpm_list_find_str(alpm_pkg_get_backup(newpkg), entryname);
-
- if(is_upgrade) {
- hash_orig = _alpm_needbackup(entryname, alpm_pkg_get_backup(oldpkg));
- if(hash_orig) {
- needbackup = 1;
- }
- }
+ archive_entry_set_pathname(entry, filename);
+
+ int ret = archive_read_extract(archive, entry, archive_flags);
+ if(ret == ARCHIVE_WARN) {
+ /* operation succeeded but a non-critical error was encountered */
+ _alpm_log(PM_LOG_DEBUG, "warning extracting %s (%s)\n",
+ entryname, archive_error_string(archive));
+ } else if(ret != ARCHIVE_OK) {
+ _alpm_log(PM_LOG_ERROR, _("could not extract %s (%s)\n"),
+ entryname, archive_error_string(archive));
+ alpm_logaction("error: could not extract %s (%s)\n",
+ entryname, archive_error_string(archive));
+ return(1);
+ }
- /* this is kind of gross. if we force hash_orig to be non-NULL we can
- * catch the pro-active backup=() case (when the backup entry is in
- * the new package, and not the old */
- if(needbackup && !hash_orig) {
- hash_orig = strdup("");
- }
-
- /* NoUpgrade skips all this backup stuff, because it's just never
- * touched */
- if(alpm_list_find_str(handle->noupgrade, entryname)) {
- notouch = 1;
- needbackup = 0;
- }
- }
+ /* calculate an hash if this is in newpkg's backup */
+ alpm_list_t *b;
+ for(b = alpm_pkg_get_backup(newpkg); b; b = b->next) {
+ char *backup = NULL, *hash = NULL;
+ char *oldbackup = alpm_list_getdata(b);
+ /* length is tab char, null byte and MD5 (32 char) */
+ int backup_len = strlen(oldbackup) + 34;
- if(needbackup) {
- char *tempfile = NULL;
- char *hash_local = NULL, *hash_pkg = NULL;
- int fd;
+ if(!oldbackup || strcmp(oldbackup, entryname) != 0) {
+ continue;
+ }
+ _alpm_log(PM_LOG_DEBUG, "appending backup entry for %s\n", filename);
- /* extract the package's version to a temporary file and md5 it */
- tempfile = strdup("/tmp/alpm_XXXXXX");
- fd = mkstemp(tempfile);
-
- archive_entry_set_pathname(entry, tempfile);
+ hash = alpm_get_md5sum(filename);
+ backup = malloc(backup_len);
+ if(!backup) {
+ RET_ERR(PM_ERR_MEMORY, -1);
+ }
- if(archive_read_extract(archive, entry, ARCHIVE_EXTRACT_FLAGS) != ARCHIVE_OK) {
- _alpm_log(PM_LOG_ERROR, _("could not extract %s (%s)"), entryname, strerror(errno));
- alpm_logaction(_("could not extract %s (%s)"), entryname, strerror(errno));
- errors++;
- unlink(tempfile);
- FREE(hash_orig);
- close(fd);
- continue;
- }
+ sprintf(backup, "%s\t%s", oldbackup, hash);
+ backup[backup_len-1] = '\0';
+ FREE(hash);
+ FREE(oldbackup);
+ b->data = backup;
+ }
+ }
+ return(errors);
+}
- if(use_md5) {
- hash_local = _alpm_MDFile(filename);
- hash_pkg = _alpm_MDFile(tempfile);
- } else {
- hash_local = _alpm_SHAFile(filename);
- hash_pkg = _alpm_SHAFile(tempfile);
- }
+static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
+ pmtrans_t *trans, pmdb_t *db)
+{
+ int i, ret = 0, errors = 0;
+ struct archive *archive;
+ struct archive_entry *entry;
+ char cwd[PATH_MAX] = "";
+ char scriptlet[PATH_MAX+1];
+ int is_upgrade = 0;
+ double percent = 0.0;
+ pmpkg_t *oldpkg = NULL;
+
+ snprintf(scriptlet, PATH_MAX, "%s%s-%s/install", db->path,
+ alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
+
+ /* see if this is an upgrade. if so, remove the old package first */
+ pmpkg_t *local = _alpm_db_get_pkgfromcache(db, newpkg->name);
+ if(local) {
+ is_upgrade = 1;
+
+ EVENT(trans, PM_TRANS_EVT_UPGRADE_START, newpkg, NULL);
+ _alpm_log(PM_LOG_DEBUG, "upgrading package %s-%s\n",
+ newpkg->name, newpkg->version);
+
+ /* we'll need to save some record for backup checks later */
+ oldpkg = _alpm_pkg_dup(local);
+ /* copy over the install reason (unless alldeps is set) */
+ if(trans->flags & PM_TRANS_FLAG_ALLDEPS) {
+ newpkg->reason = PM_PKG_REASON_DEPEND;
+ } else {
+ newpkg->reason = alpm_pkg_get_reason(local);
+ }
- /* append the new md5 or sha1 hash to it's respective entry in newpkg's backup
- * (it will be the new orginal) */
- for(lp = alpm_pkg_get_backup(newpkg); lp; lp = lp->next) {
- if(!lp->data || strcmp(lp->data, entryname) != 0) {
- continue;
- }
- char *backup = NULL;
- int backup_len = strlen(lp->data) + 2; /* tab char and null byte */
-
- if(use_md5) {
- backup_len += 32; /* MD5s are 32 chars in length */
- } else {
- backup_len += 40; /* SHA1s are 40 chars in length */
- }
-
- backup = malloc(backup_len);
- if(!backup) {
- RET_ERR(PM_ERR_MEMORY, -1);
- }
-
- sprintf(backup, "%s\t%s", (char *)lp->data, hash_pkg);
- backup[backup_len-1] = '\0';
- FREE(lp->data);
- lp->data = backup;
- }
+ /* pre_upgrade scriptlet */
+ if(alpm_pkg_has_scriptlet(newpkg) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
+ _alpm_runscriptlet(handle->root, newpkg->origin_data.file,
+ "pre_upgrade", newpkg->version, oldpkg->version, trans);
+ }
+ } else {
+ is_upgrade = 0;
- if(use_md5) {
- _alpm_log(PM_LOG_DEBUG, _("checking md5 hashes for %s"), entryname);
- } else {
- _alpm_log(PM_LOG_DEBUG, _("checking sha1 hashes for %s"), entryname);
- }
- _alpm_log(PM_LOG_DEBUG, _("current: %s"), hash_local);
- _alpm_log(PM_LOG_DEBUG, _("new: %s"), hash_pkg);
- _alpm_log(PM_LOG_DEBUG, _("original: %s"), hash_orig);
-
- if(!is_upgrade) {
- /* looks like we have a local file that has a different hash as the
- * file in the package, move it to a .pacorig */
- if(strcmp(hash_local, hash_pkg) != 0) {
- char newpath[PATH_MAX];
- snprintf(newpath, PATH_MAX, "%s.pacorig", filename);
-
- /* move the existing file to the "pacorig" */
- if(rename(filename, newpath)) {
- archive_entry_set_pathname(entry, filename);
- _alpm_log(PM_LOG_ERROR, _("could not rename %s (%s)"), filename, strerror(errno));
- alpm_logaction(_("error: could not rename %s (%s)"), filename, strerror(errno));
- errors++;
- } else {
- /* copy the tempfile we extracted to the real path */
- if(_alpm_copyfile(tempfile, filename)) {
- archive_entry_set_pathname(entry, filename);
- _alpm_log(PM_LOG_ERROR, _("could not copy tempfile to %s (%s)"), filename, strerror(errno));
- alpm_logaction(_("error: could not copy tempfile to %s (%s)"), filename, strerror(errno));
- errors++;
- } else {
- archive_entry_set_pathname(entry, filename);
- _alpm_log(PM_LOG_WARNING, _("%s saved as %s"), filename, newpath);
- alpm_logaction(_("warning: %s saved as %s"), filename, newpath);
- }
- }
- }
- } else if(hash_orig) {
- /* the fun part */
-
- if(strcmp(hash_orig, hash_local) == 0) {
- /* installed file has NOT been changed by user */
- if(strcmp(hash_orig, hash_pkg) != 0) {
- _alpm_log(PM_LOG_DEBUG, _("action: installing new file: %s"), entryname);
-
- if(_alpm_copyfile(tempfile, filename)) {
- _alpm_log(PM_LOG_ERROR, _("could not copy tempfile to %s (%s)"), filename, strerror(errno));
- errors++;
- }
- archive_entry_set_pathname(entry, filename);
- } else {
- /* there's no sense in installing the same file twice, install
- * ONLY is the original and package hashes differ */
- _alpm_log(PM_LOG_DEBUG, _("action: leaving existing file in place"));
- }
- } else if(strcmp(hash_orig, hash_pkg) == 0) {
- /* originally installed file and new file are the same - this
- * implies the case above failed - i.e. the file was changed by a
- * user */
- _alpm_log(PM_LOG_DEBUG, _("action: leaving existing file in place"));
- } else if(strcmp(hash_local, hash_pkg) == 0) {
- /* this would be magical. The above two cases failed, but the
- * user changes just so happened to make the new file exactly the
- * same as the one in the package... skip it */
- _alpm_log(PM_LOG_DEBUG, _("action: leaving existing file in place"));
- } else {
- char newpath[PATH_MAX];
- _alpm_log(PM_LOG_DEBUG, _("action: keeping current file and installing new one with .pacnew ending"));
- snprintf(newpath, PATH_MAX, "%s.pacnew", filename);
- if(_alpm_copyfile(tempfile, newpath)) {
- _alpm_log(PM_LOG_ERROR, _("could not install %s as %s: %s"), filename, newpath, strerror(errno));
- alpm_logaction(_("error: could not install %s as %s: %s"), filename, newpath, strerror(errno));
- } else {
- _alpm_log(PM_LOG_WARNING, _("%s installed as %s"), filename, newpath);
- alpm_logaction(_("warning: %s installed as %s"), filename, newpath);
- }
- }
- }
+ EVENT(trans, PM_TRANS_EVT_ADD_START, newpkg, NULL);
+ _alpm_log(PM_LOG_DEBUG, "adding package %s-%s\n",
+ newpkg->name, newpkg->version);
- FREE(hash_local);
- FREE(hash_pkg);
- FREE(hash_orig);
- unlink(tempfile);
- FREE(tempfile);
- close(fd);
- } else { /* ! needbackup */
-
- if(notouch) {
- _alpm_log(PM_LOG_DEBUG, _("%s is in NoUpgrade -- skipping"), filename);
- _alpm_log(PM_LOG_WARNING, _("extracting %s as %s.pacnew"), filename, filename);
- alpm_logaction(_("warning: extracting %s as %s.pacnew"), filename, filename);
- strncat(filename, ".pacnew", PATH_MAX);
- } else {
- _alpm_log(PM_LOG_DEBUG, _("extracting %s"), filename);
- }
+ /* pre_install scriptlet */
+ if(alpm_pkg_has_scriptlet(newpkg) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
+ _alpm_runscriptlet(handle->root, newpkg->origin_data.file,
+ "pre_install", newpkg->version, NULL, trans);
+ }
+ }
- if(trans->flags & PM_TRANS_FLAG_FORCE) {
- /* if FORCE was used, then unlink() each file (whether it's there
- * or not) before extracting. this prevents the old "Text file busy"
- * error that crops up if one tries to --force a glibc or pacman
- * upgrade.
- */
- unlink(filename);
- }
+ if(oldpkg) {
+ /* set up fake remove transaction */
+ int ret = upgrade_remove(oldpkg, newpkg, trans, db);
+ if(ret != 0) {
+ return(ret);
+ }
+ }
- archive_entry_set_pathname(entry, filename);
+ if(!(trans->flags & PM_TRANS_FLAG_DBONLY)) {
+ _alpm_log(PM_LOG_DEBUG, "extracting files\n");
- int ret = archive_read_extract(archive, entry,
- ARCHIVE_EXTRACT_FLAGS | ARCHIVE_EXTRACT_NO_OVERWRITE);
- if(ret != ARCHIVE_OK && ret != ARCHIVE_WARN) {
- _alpm_log(PM_LOG_ERROR, _("could not extract %s (%s)"), filename, strerror(errno));
- alpm_logaction(_("error: could not extract %s (%s)"), filename, strerror(errno));
- errors++;
- }
+ if ((archive = archive_read_new()) == NULL) {
+ RET_ERR(PM_ERR_LIBARCHIVE_ERROR, -1);
+ }
- /* calculate an hash if this is in newpkg's backup */
- for(lp = alpm_pkg_get_backup(newpkg); lp; lp = lp->next) {
- char *backup = NULL, *hash = NULL;
- int backup_len = strlen(lp->data) + 2; /* tab char and null byte */
-
- if(!lp->data || strcmp(lp->data, entryname) != 0) {
- continue;
- }
- _alpm_log(PM_LOG_DEBUG, _("appending backup entry for %s"), filename);
-
- if(use_md5) {
- backup_len += 32; /* MD5s are 32 chars in length */
- hash = _alpm_MDFile(filename);
- } else {
- backup_len += 40; /* SHA1s are 40 chars in length */
- hash = _alpm_SHAFile(filename);
- }
-
- backup = malloc(backup_len);
- if(!backup) {
- RET_ERR(PM_ERR_MEMORY, -1);
- }
-
- sprintf(backup, "%s\t%s", (char *)lp->data, hash);
- backup[backup_len-1] = '\0';
- FREE(hash);
- FREE(lp->data);
- lp->data = backup;
- }
- }
- }
- archive_read_finish(archive);
+ archive_read_support_compression_all(archive);
+ archive_read_support_format_all(archive);
- /* restore the old cwd is we have it */
- if(strlen(cwd)) {
- chdir(cwd);
- }
+ if(archive_read_open_filename(archive, newpkg->origin_data.file,
+ ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) {
+ RET_ERR(PM_ERR_PKG_OPEN, -1);
+ }
- if(errors) {
- ret = 1;
- _alpm_log(PM_LOG_ERROR, _("errors occurred while %s %s"),
- (is_upgrade ? _("upgrading") : _("installing")), newpkg->name);
- alpm_logaction(_("errors occurred while %s %s"),
- (is_upgrade ? _("upgrading") : _("installing")), newpkg->name);
- }
+ /* save the cwd so we can restore it later */
+ if(getcwd(cwd, PATH_MAX) == NULL) {
+ _alpm_log(PM_LOG_ERROR, _("could not get current working directory\n"));
+ cwd[0] = 0;
}
- /* Update the requiredby field by scanning the whole database
- * looking for packages depending on the package to add */
- _alpm_pkg_update_requiredby(newpkg);
-
- /* special case: if our provides list has changed from oldpkg to newpkg AND
- * we get here, we need to make sure we find the actual provision that
- * still satisfies this case, and update its 'requiredby' field... ugh */
- alpm_list_t *provdiff, *prov;
- provdiff = alpm_list_diff(alpm_pkg_get_provides(oldpkg),
- alpm_pkg_get_provides(newpkg),
- _alpm_str_cmp);
- for(prov = provdiff; prov; prov = prov->next) {
- const char *provname = prov->data;
- _alpm_log(PM_LOG_DEBUG, _("provision '%s' has been removed from package %s (%s => %s)"),
- provname, alpm_pkg_get_name(oldpkg),
- alpm_pkg_get_version(oldpkg), alpm_pkg_get_version(newpkg));
-
- alpm_list_t *p = _alpm_db_whatprovides(handle->db_local, provname);
- if(p) {
- /* we now have all the provisions in the local DB for this virtual
- * package... seeing as we can't really determine which is the 'correct'
- * provision, we'll use the FIRST for now.
- * TODO figure out a way to find a "correct" provision */
- pmpkg_t *provpkg = p->data;
- const char *pkgname = alpm_pkg_get_name(provpkg);
- _alpm_log(PM_LOG_DEBUG, _("updating '%s' due to provision change (%s)"), pkgname, provname);
- _alpm_pkg_update_requiredby(provpkg);
-
- if(_alpm_db_write(db, provpkg, INFRQ_DEPENDS)) {
- _alpm_log(PM_LOG_ERROR, _("could not update provision '%s' from '%s'"), provname, pkgname);
- alpm_logaction(_("could not update provision '%s' from '%s'"), provname, pkgname);
- RET_ERR(PM_ERR_DB_WRITE, -1);
+ /* libarchive requires this for extracting hard links */
+ chdir(handle->root);
+
+ /* call PROGRESS once with 0 percent, as we sort-of skip that here */
+ if(is_upgrade) {
+ PROGRESS(trans, PM_TRANS_PROGRESS_UPGRADE_START,
+ alpm_pkg_get_name(newpkg), 0, pkg_count, pkg_current);
+ } else {
+ PROGRESS(trans, PM_TRANS_PROGRESS_ADD_START,
+ alpm_pkg_get_name(newpkg), 0, pkg_count, pkg_current);
+ }
+
+ for(i = 0; archive_read_next_header(archive, &entry) == ARCHIVE_OK; i++) {
+ if(newpkg->size != 0) {
+ /* Using compressed size for calculations here, as newpkg->isize is not
+ * exact when it comes to comparing to the ACTUAL uncompressed size
+ * (missing metadata sizes) */
+ unsigned long pos = archive_position_compressed(archive);
+ percent = (double)pos / (double)newpkg->size;
+ _alpm_log(PM_LOG_DEBUG, "decompression progress: %f%% (%ld / %ld)\n",
+ percent*100.0, pos, newpkg->size);
+ if(percent >= 1.0) {
+ percent = 1.0;
}
}
- }
- alpm_list_free(provdiff);
-
- /* make an install date (in UTC) */
- time_t t = time(NULL);
- strncpy(newpkg->installdate, asctime(gmtime(&t)), PKG_DATE_LEN);
- /* remove the extra line feed appended by asctime() */
- newpkg->installdate[strlen(newpkg->installdate)-1] = 0;
-
- _alpm_log(PM_LOG_DEBUG, _("updating database"));
- _alpm_log(PM_LOG_DEBUG, _("adding database entry '%s'"), newpkg->name);
-
- if(_alpm_db_write(db, newpkg, INFRQ_ALL)) {
- _alpm_log(PM_LOG_ERROR, _("could not update database entry %s-%s"),
- alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
- alpm_logaction(_("could not update database entry %s-%s"),
- alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
- RET_ERR(PM_ERR_DB_WRITE, -1);
- }
-
- if(_alpm_db_add_pkgincache(db, newpkg) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not add entry '%s' in cache"),
- alpm_pkg_get_name(newpkg));
- }
- /* update dependency packages' REQUIREDBY fields */
- _alpm_trans_update_depends(trans, newpkg);
+ if(is_upgrade) {
+ PROGRESS(trans, PM_TRANS_PROGRESS_UPGRADE_START,
+ alpm_pkg_get_name(newpkg), (int)(percent * 100), pkg_count,
+ pkg_current);
+ } else {
+ PROGRESS(trans, PM_TRANS_PROGRESS_ADD_START,
+ alpm_pkg_get_name(newpkg), (int)(percent * 100), pkg_count,
+ pkg_current);
+ }
+
+ /* extract the next file from the archive */
+ errors += extract_single_file(archive, entry, newpkg, oldpkg,
+ trans, db);
+ }
+ archive_read_finish(archive);
- PROGRESS(trans, (is_upgrade ? PM_TRANS_PROGRESS_UPGRADE_START : PM_TRANS_PROGRESS_ADD_START),
- alpm_pkg_get_name(newpkg), 100, pkg_count, (pkg_count - targ_count +1));
- EVENT(trans, PM_TRANS_EVT_EXTRACT_DONE, NULL, NULL);
+ /* restore the old cwd is we have it */
+ if(strlen(cwd)) {
+ chdir(cwd);
+ }
- /* run the post-install script if it exists */
- if(alpm_pkg_has_scriptlet(newpkg) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
+ if(errors) {
+ ret = 1;
if(is_upgrade) {
- _alpm_runscriptlet(handle->root, scriptlet, "post_upgrade",
- alpm_pkg_get_version(newpkg), oldpkg ? alpm_pkg_get_version(oldpkg) : NULL,
- trans);
+ _alpm_log(PM_LOG_ERROR, _("problem occurred while upgrading %s\n"),
+ newpkg->name);
+ alpm_logaction("error: problem occurred while upgrading %s\n",
+ newpkg->name);
} else {
- _alpm_runscriptlet(handle->root, scriptlet, "post_install",
- alpm_pkg_get_version(newpkg), NULL, trans);
+ _alpm_log(PM_LOG_ERROR, _("problem occurred while installing %s\n"),
+ newpkg->name);
+ alpm_logaction("error: problem occurred while installing %s\n",
+ newpkg->name);
}
}
+ }
- EVENT(trans, (is_upgrade) ? PM_TRANS_EVT_UPGRADE_DONE : PM_TRANS_EVT_ADD_DONE, newpkg, oldpkg);
+ /* make an install date (in UTC) */
+ newpkg->installdate = time(NULL);
- FREEPKG(oldpkg);
+ _alpm_log(PM_LOG_DEBUG, "updating database\n");
+ _alpm_log(PM_LOG_DEBUG, "adding database entry '%s'\n", newpkg->name);
+
+ if(_alpm_db_write(db, newpkg, INFRQ_ALL)) {
+ _alpm_log(PM_LOG_ERROR, _("could not update database entry %s-%s\n"),
+ alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
+ alpm_logaction("error: could not update database entry %s-%s\n",
+ alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
+ RET_ERR(PM_ERR_DB_WRITE, -1);
}
- /* run ldconfig if it exists */
- if(handle->trans->state != STATE_INTERRUPTED) {
- _alpm_log(PM_LOG_DEBUG, _("running \"ldconfig -r %s\""), handle->root);
- _alpm_ldconfig(handle->root);
+ if(_alpm_db_add_pkgincache(db, newpkg) == -1) {
+ _alpm_log(PM_LOG_ERROR, _("could not add entry '%s' in cache\n"),
+ alpm_pkg_get_name(newpkg));
}
+ if(is_upgrade) {
+ PROGRESS(trans, PM_TRANS_PROGRESS_UPGRADE_START,
+ alpm_pkg_get_name(newpkg), 100, pkg_count, pkg_current);
+ } else {
+ PROGRESS(trans, PM_TRANS_PROGRESS_ADD_START,
+ alpm_pkg_get_name(newpkg), 100, pkg_count, pkg_current);
+ }
+ EVENT(trans, PM_TRANS_EVT_EXTRACT_DONE, NULL, NULL);
+
+ /* run the post-install script if it exists */
+ if(alpm_pkg_has_scriptlet(newpkg)
+ && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
+ if(is_upgrade) {
+ _alpm_runscriptlet(handle->root, scriptlet, "post_upgrade",
+ alpm_pkg_get_version(newpkg),
+ oldpkg ? alpm_pkg_get_version(oldpkg) : NULL, trans);
+ } else {
+ _alpm_runscriptlet(handle->root, scriptlet, "post_install",
+ alpm_pkg_get_version(newpkg), NULL, trans);
+ }
+ }
+
+ if(is_upgrade) {
+ EVENT(trans, PM_TRANS_EVT_UPGRADE_DONE, newpkg, oldpkg);
+ } else {
+ EVENT(trans, PM_TRANS_EVT_ADD_DONE, newpkg, oldpkg);
+ }
+
+ _alpm_pkg_free(oldpkg);
+
+ return(0);
+}
+
+int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
+{
+ int pkg_count, pkg_current;
+ alpm_list_t *targ;
+
+ ALPM_LOG_FUNC;
+
+ ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+ ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
+
+ if(trans->packages == NULL) {
+ return(0);
+ }
+
+ pkg_count = alpm_list_count(trans->targets);
+ pkg_current = 1;
+
+ /* loop through our package list adding/upgrading one at a time */
+ for(targ = trans->packages; targ; targ = targ->next) {
+ if(handle->trans->state == STATE_INTERRUPTED) {
+ return(0);
+ }
+
+ pmpkg_t *newpkg = (pmpkg_t *)targ->data;
+ commit_single_pkg(newpkg, pkg_current, pkg_count, trans, db);
+ pkg_current++;
+ }
+
+ /* run ldconfig if it exists */
+ _alpm_log(PM_LOG_DEBUG, "running \"ldconfig -r %s\"\n", handle->root);
+ _alpm_ldconfig(handle->root);
+
return(0);
}
diff --git a/lib/libalpm/add.h b/lib/libalpm/add.h
index 4cd2e445..e576c075 100644
--- a/lib/libalpm/add.h
+++ b/lib/libalpm/add.h
@@ -1,8 +1,8 @@
/*
* add.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_ADD_H
diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c
index afb6226b..62bb8316 100644
--- a/lib/libalpm/alpm.c
+++ b/lib/libalpm/alpm.c
@@ -1,11 +1,11 @@
/*
* alpm.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
+ *
+ * Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -18,54 +18,20 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#include "config.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <ctype.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <time.h>
-#include <syslog.h>
-#include <limits.h> /* PATH_MAX */
-#include <stdarg.h>
-#include <libintl.h>
-
/* libalpm */
#include "alpm.h"
#include "alpm_list.h"
-#include "log.h"
#include "error.h"
-#include "versioncmp.h"
-#include "md5.h"
-#include "sha1.h"
-#include "package.h"
-#include "group.h"
-#include "util.h"
-#include "db.h"
-#include "cache.h"
-#include "deps.h"
-#include "conflict.h"
-#include "backup.h"
-#include "add.h"
-#include "remove.h"
-#include "sync.h"
#include "handle.h"
-#include "provide.h"
-#include "server.h"
-
-#define min(X, Y) ((X) < (Y) ? (X) : (Y))
+#include "util.h"
/* Globals */
-pmhandle_t *handle = NULL;
enum _pmerrno_t pm_errno SYMEXPORT;
/** \addtogroup alpm_interface Interface Functions
@@ -77,7 +43,7 @@ enum _pmerrno_t pm_errno SYMEXPORT;
* functions are called.
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int SYMEXPORT alpm_initialize()
+int SYMEXPORT alpm_initialize(void)
{
ASSERT(handle == NULL, RET_ERR(PM_ERR_HANDLE_NOT_NULL, -1));
@@ -86,1126 +52,35 @@ int SYMEXPORT alpm_initialize()
RET_ERR(PM_ERR_MEMORY, -1);
}
- return(0);
-}
-
-/** Release the library. This should be the last alpm call you make.
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int SYMEXPORT alpm_release()
-{
- int dbs_left = 0;
-
- ALPM_LOG_FUNC;
-
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
-
- /* free the transaction if there is any */
- if(handle->trans) {
- alpm_trans_release();
- }
-
- /* close local database */
- if(handle->db_local) {
- alpm_db_unregister(handle->db_local);
- handle->db_local = NULL;
- }
- /* and also sync ones */
- while((dbs_left = alpm_list_count(handle->dbs_sync)) > 0) {
- pmdb_t *db = (pmdb_t *)handle->dbs_sync->data;
- _alpm_log(PM_LOG_DEBUG, _("removing DB %s, %d remaining..."), db->treename, dbs_left);
- alpm_db_unregister(db);
- db = NULL;
- }
-
- FREEHANDLE(handle);
+#ifdef ENABLE_NLS
+ bindtextdomain("libalpm", LOCALEDIR);
+#endif
return(0);
}
-/** @} */
-
-/** \addtogroup alpm_databases Database Functions
- * @brief Functions to query and manipulate the database of libalpm
- * @{
- */
-
-/** Register a package database
- * @param treename the name of the repository
- * @return a pmdb_t* on success (the value), NULL on error
- */
-pmdb_t SYMEXPORT *alpm_db_register(char *treename)
-{
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, NULL));
- ASSERT(treename != NULL && strlen(treename) != 0, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
- /* Do not register a database if a transaction is on-going */
- ASSERT(handle->trans == NULL, RET_ERR(PM_ERR_TRANS_NOT_NULL, NULL));
-
- return(_alpm_db_register(treename, NULL));
-}
-
-/** Unregister a package database
- * @param db pointer to the package database to unregister
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int alpm_db_unregister(pmdb_t *db)
-{
- int found = 0;
-
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
- ASSERT(db != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
- /* Do not unregister a database if a transaction is on-going */
- ASSERT(handle->trans == NULL, RET_ERR(PM_ERR_TRANS_NOT_NULL, -1));
-
- if(db == handle->db_local) {
- handle->db_local = NULL;
- found = 1;
- } else {
- void *data;
- handle->dbs_sync = alpm_list_remove(handle->dbs_sync, db, _alpm_db_cmp, &data);
- if(data) {
- found = 1;
- }
- }
-
- if(!found) {
- RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
- }
-
- _alpm_log(PM_LOG_DEBUG, _("unregistering database '%s'"), db->treename);
-
- /* Cleanup */
- _alpm_db_free_pkgcache(db);
-
- _alpm_log(PM_LOG_DEBUG, _("closing database '%s'"), db->treename);
- _alpm_db_close(db);
-
- _alpm_db_free(db);
-
- return(0);
-}
-
-/** Set the serverlist of a database.
- * @param db database pointer
- * @param url url of the server
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int alpm_db_setserver(pmdb_t *db, const char *url)
-{
- int found = 0;
-
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
-
- if(strcmp(db->treename, "local") == 0) {
- if(handle->db_local != NULL) {
- found = 1;
- }
- } else {
- alpm_list_t *i;
- for(i = handle->dbs_sync; i && !found; i = i->next) {
- pmdb_t *sdb = i->data;
- if(strcmp(db->treename, sdb->treename) == 0) {
- found = 1;
- }
- }
- }
- if(!found) {
- RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
- }
-
- if(url && strlen(url)) {
- pmserver_t *server;
- if((server = _alpm_server_new(url)) == NULL) {
- /* pm_errno is set by _alpm_server_new */
- return(-1);
- }
- db->servers = alpm_list_add(db->servers, server);
- _alpm_log(PM_LOG_DEBUG, _("adding new server to database '%s': protocol '%s', server '%s', path '%s'"),
- db->treename, server->s_url->scheme, server->s_url->host, server->s_url->doc);
- } else {
- FREELIST(db->servers);
- _alpm_log(PM_LOG_DEBUG, _("serverlist flushed for '%s'"), db->treename);
- }
-
- return(0);
-}
-
-/** Update a package database
- * @param force if true, then forces the update, otherwise update only in case
- * the database isn't up to date
- * @param db pointer to the package database to update
- * @return 0 on success, > 0 on error (pm_errno is set accordingly), < 0 if up
- * to date
- */
-int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
-{
- alpm_list_t *lp;
- char path[PATH_MAX];
- alpm_list_t *files = NULL;
- char newmtime[16] = "";
- char lastupdate[16] = "";
- int ret;
-
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
- ASSERT(db != NULL && db != handle->db_local, RET_ERR(PM_ERR_WRONG_ARGS, -1));
- /* Verify we are in a transaction. This is done _mainly_ because we need a DB
- * lock - if we update without a db lock, we may kludge some other pacman
- * process that _has_ a lock.
- */
- ASSERT(handle->trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
- ASSERT(handle->trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
- ASSERT(handle->trans->type == PM_TRANS_TYPE_SYNC, RET_ERR(PM_ERR_TRANS_TYPE, -1));
-
- if(!alpm_list_find(handle->dbs_sync, db)) {
- RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
- }
-
- if(!force) {
- /* get the lastupdate time */
- _alpm_db_getlastupdate(db, lastupdate);
- if(strlen(lastupdate) == 0) {
- _alpm_log(PM_LOG_DEBUG, _("failed to get lastupdate time for %s (no big deal)"), db->treename);
- }
- }
-
- /* build a one-element list */
- snprintf(path, PATH_MAX, "%s" PM_EXT_DB, db->treename);
- files = alpm_list_add(files, strdup(path));
-
- snprintf(path, PATH_MAX, "%s%s", handle->root, handle->dbpath);
-
- ret = _alpm_downloadfiles_forreal(db->servers, path, files, lastupdate, newmtime);
- FREELIST(files);
- if(ret == 1) {
- /* mtimes match, do nothing */
- pm_errno = 0;
- return(1);
- } else if(ret == -1) {
- /* we use downloadLastErrString and downloadLastErrCode here, error returns from
- * libdownload */
- _alpm_log(PM_LOG_DEBUG, _("failed to sync db: %s [%d]"), downloadLastErrString, downloadLastErrCode);
- RET_ERR(PM_ERR_DB_SYNC, -1);
- } else {
- if(strlen(newmtime)) {
- _alpm_log(PM_LOG_DEBUG, _("sync: new mtime for %s: %s"), db->treename, newmtime);
- _alpm_db_setlastupdate(db, newmtime);
- }
- snprintf(path, PATH_MAX, "%s%s%s" PM_EXT_DB, handle->root, handle->dbpath, db->treename);
-
- /* remove the old dir */
- _alpm_log(PM_LOG_DEBUG, _("flushing database %s%s"), db->path);
- for(lp = _alpm_db_get_pkgcache(db); lp; lp = lp->next) {
- pmpkg_t *pkg = lp->data;
- if(pkg && _alpm_db_remove(db, pkg) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not remove database entry %s%s"), db->treename,
- alpm_pkg_get_name(pkg));
- RET_ERR(PM_ERR_DB_REMOVE, -1);
- }
- }
-
- /* Cache needs to be rebuild */
- _alpm_db_free_pkgcache(db);
-
- /* uncompress the sync database */
- if(_alpm_db_install(db, path) == -1) {
- return -1;
- }
- }
-
- return(0);
-}
-
-/** Get a package entry from a package database
- * @param db pointer to the package database to get the package from
- * @param name of the package
- * @return the package entry on success, NULL on error
- */
-pmpkg_t SYMEXPORT *alpm_db_get_pkg(pmdb_t *db, const char *name)
-{
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(db != NULL, return(NULL));
- ASSERT(name != NULL && strlen(name) != 0, return(NULL));
-
- return(_alpm_db_get_pkgfromcache(db, name));
-}
-
-/** Get the package cache of a package database
- * @param db pointer to the package database to get the package from
- * @return the list of packages on success, NULL on error
- */
-alpm_list_t SYMEXPORT *alpm_db_getpkgcache(pmdb_t *db)
-{
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(db != NULL, return(NULL));
-
- return(_alpm_db_get_pkgcache(db));
-}
-
-/** Get the list of packages that a package provides
- * @param db pointer to the package database to get the package from
- * @param name name of the package
- * @return the list of packages on success, NULL on error
- */
-alpm_list_t SYMEXPORT *alpm_db_whatprovides(pmdb_t *db, const char *name)
-{
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(db != NULL, return(NULL));
- ASSERT(name != NULL && strlen(name) != 0, return(NULL));
-
- return(_alpm_db_whatprovides(db, name));
-}
-
-/** Get a group entry from a package database
- * @param db pointer to the package database to get the group from
- * @param name of the group
- * @return the groups entry on success, NULL on error
- */
-pmgrp_t SYMEXPORT *alpm_db_readgrp(pmdb_t *db, const char *name)
-{
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(db != NULL, return(NULL));
- ASSERT(name != NULL && strlen(name) != 0, return(NULL));
-
- return(_alpm_db_get_grpfromcache(db, name));
-}
-
-/** Get the group cache of a package database
- * @param db pointer to the package database to get the group from
- * @return the list of groups on success, NULL on error
- */
-alpm_list_t SYMEXPORT *alpm_db_getgrpcache(pmdb_t *db)
-{
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(db != NULL, return(NULL));
-
- return(_alpm_db_get_grpcache(db));
-}
-
-/** @} */
-
-/** \addtogroup alpm_packages Package Functions
- * @brief Functions to manipulate libalpm packages
- * @{
- */
-
-/** Create a package from a file.
- * @param filename location of the package tarball
- * @param pkg address of the package pointer
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int SYMEXPORT alpm_pkg_load(char *filename, pmpkg_t **pkg)
-{
- _alpm_log(PM_LOG_FUNCTION, "enter alpm_pkg_load");
-
- /* Sanity checks */
- ASSERT(filename != NULL && strlen(filename) != 0, RET_ERR(PM_ERR_WRONG_ARGS, -1));
- ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
-
- *pkg = _alpm_pkg_load(filename);
- if(*pkg == NULL) {
- /* pm_errno is set by pkg_load */
- return(-1);
- }
-
- return(0);
-}
-
-/** Free a package.
- * @param pkg package pointer to free
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int SYMEXPORT alpm_pkg_free(pmpkg_t *pkg)
-{
- _alpm_log(PM_LOG_FUNCTION, "enter alpm_pkg_free");
-
- ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
-
- /* Only free packages loaded in user space */
- if(pkg->origin != PKG_FROM_CACHE) {
- _alpm_pkg_free(pkg);
- }
-
- return(0);
-}
-
-/** Check the integrity (with sha1) of a package from the sync cache.
- * @param pkg package pointer
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int alpm_pkg_checksha1sum(pmpkg_t *pkg)
-{
- char path[PATH_MAX];
- char *sha1sum = NULL;
- int retval = 0;
-
- ALPM_LOG_FUNC;
-
- ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
- /* We only inspect packages from sync repositories */
- ASSERT(pkg->origin == PKG_FROM_CACHE, RET_ERR(PM_ERR_PKG_INVALID, -1));
- ASSERT(pkg->data != handle->db_local, RET_ERR(PM_ERR_PKG_INVALID, -1));
-
- snprintf(path, PATH_MAX, "%s%s/%s-%s" PM_EXT_PKG,
- handle->root, handle->cachedir,
- alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
-
- sha1sum = _alpm_SHAFile(path);
- if(sha1sum == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not get sha1sum for package %s-%s"),
- alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
- pm_errno = PM_ERR_NOT_A_FILE;
- retval = -1;
- } else {
- if(strcmp(sha1sum, alpm_pkg_get_sha1sum(pkg)) == 0) {
- _alpm_log(PM_LOG_DEBUG, _("sha1sums for package %s-%s match"),
- alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
- } else {
- _alpm_log(PM_LOG_ERROR, _("sha1sums do not match for package %s-%s"),
- alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
- pm_errno = PM_ERR_PKG_INVALID;
- retval = -1;
- }
- }
-
- FREE(sha1sum);
-
- return(retval);
-}
-
-/** Check the integrity (with md5) of a package from the sync cache.
- * @param pkg package pointer
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int alpm_pkg_checkmd5sum(pmpkg_t *pkg)
-{
- char path[PATH_MAX];
- char *md5sum = NULL;
- int retval = 0;
-
- ALPM_LOG_FUNC;
-
- ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
- /* We only inspect packages from sync repositories */
- ASSERT(pkg->origin == PKG_FROM_CACHE, RET_ERR(PM_ERR_PKG_INVALID, -1));
- ASSERT(pkg->data != handle->db_local, RET_ERR(PM_ERR_PKG_INVALID, -1));
-
- snprintf(path, PATH_MAX, "%s%s/%s-%s" PM_EXT_PKG,
- handle->root, handle->cachedir,
- alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
-
- md5sum = _alpm_MDFile(path);
- if(md5sum == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not get md5sum for package %s-%s"),
- alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
- pm_errno = PM_ERR_NOT_A_FILE;
- retval = -1;
- } else {
- if(strcmp(md5sum, alpm_pkg_get_md5sum(pkg)) == 0) {
- _alpm_log(PM_LOG_DEBUG, _("md5sums for package %s-%s match"),
- alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
- } else {
- _alpm_log(PM_LOG_ERROR, _("md5sums do not match for package %s-%s"),
- alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
- pm_errno = PM_ERR_PKG_INVALID;
- retval = -1;
- }
- }
-
- FREE(md5sum);
-
- return(retval);
-}
-
-/** Compare versions.
- * @param ver1 first version
- * @param ver2 secont version
- * @return postive, 0 or negative if ver1 is less, equal or more
- * than ver2, respectively.
- */
-int SYMEXPORT alpm_pkg_vercmp(const char *ver1, const char *ver2)
-{
- ALPM_LOG_FUNC;
-
- return(_alpm_versioncmp(ver1, ver2));
-}
-
-/* internal */
-static char *_supported_archs[] = {
- "i586",
- "i686",
- "ppc",
- "x86_64",
-};
-
-char SYMEXPORT *alpm_pkg_name_hasarch(char *pkgname)
-{
- /* TODO remove this when we transfer everything over to -ARCH
- *
- * this parsing sucks... it's done to support
- * two package formats for the time being:
- * package-name-foo-1.0.0-1-i686
- * and
- * package-name-bar-1.2.3-1
- */
- size_t i = 0;
- char *arch, *cmp, *p;
-
- ALPM_LOG_FUNC;
-
- if((p = strrchr(pkgname, '-'))) {
- for(i=0; i < sizeof(_supported_archs)/sizeof(char*); ++i) {
- cmp = p+1;
- arch = _supported_archs[i];
-
- /* whee, case insensitive compare */
- while(*arch && *cmp && tolower(*arch++) == tolower(*cmp++)) ;
- if(*arch || *cmp) {
- continue;
- }
-
- return(p);
- }
- }
- return(NULL);
-}
-
-/** @} */
-
-/** \addtogroup alpm_sync Sync Functions
- * @brief Functions to get informations about libalpm syncs
- * @{
- */
-
-/** Searches a database
- * @param db pointer to the package database to search in
- * @param needles the list of strings to search for
- * @return the list of packages on success, NULL on error
- */
-alpm_list_t SYMEXPORT *alpm_db_search(pmdb_t *db, alpm_list_t* needles)
-{
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(db != NULL, return(NULL));
-
- return(_alpm_db_search(db, needles));
-}
-
-/** @} */
-
-/** \addtogroup alpm_trans Transaction Functions
- * @brief Functions to manipulate libalpm transactions
- * @{
- */
-
-/** Initialize the transaction.
- * @param type type of the transaction
- * @param flags flags of the transaction (like nodeps, etc)
- * @param event event callback function pointer
- * @param conv question callback function pointer
- * @param progress progress callback function pointer
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int SYMEXPORT alpm_trans_init(pmtranstype_t type, pmtransflag_t flags,
- alpm_trans_cb_event event, alpm_trans_cb_conv conv,
- alpm_trans_cb_progress progress)
-{
- char path[PATH_MAX];
-
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
-
- ASSERT(handle->trans == NULL, RET_ERR(PM_ERR_TRANS_NOT_NULL, -1));
-
- /* lock db */
- snprintf(path, PATH_MAX, "%s%s", handle->root, PM_LOCK);
- handle->lckfd = _alpm_lckmk(path);
- if(handle->lckfd == -1) {
- RET_ERR(PM_ERR_HANDLE_LOCK, -1);
- }
-
- handle->trans = _alpm_trans_new();
- if(handle->trans == NULL) {
- RET_ERR(PM_ERR_MEMORY, -1);
- }
-
- return(_alpm_trans_init(handle->trans, type, flags, event, conv, progress));
-}
-
-/** Search for packages to upgrade and add them to the transaction.
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int SYMEXPORT alpm_trans_sysupgrade()
-{
- pmtrans_t *trans;
-
- ALPM_LOG_FUNC;
-
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
-
- trans = handle->trans;
- ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
- ASSERT(trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
- ASSERT(trans->type == PM_TRANS_TYPE_SYNC, RET_ERR(PM_ERR_TRANS_TYPE, -1));
-
- return(_alpm_trans_sysupgrade(trans));
-}
-
-/** Add a target to the transaction.
- * @param target the name of the target to add
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int SYMEXPORT alpm_trans_addtarget(char *target)
-{
- pmtrans_t *trans;
-
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
- ASSERT(target != NULL && strlen(target) != 0, RET_ERR(PM_ERR_WRONG_ARGS, -1));
-
- trans = handle->trans;
- ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
- ASSERT(trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
-
- return(_alpm_trans_addtarget(trans, target));
-}
-
-/** Prepare a transaction.
- * @param data the address of a PM_LIST where detailed description
- * of an error can be dumped (ie. list of conflicting files)
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int SYMEXPORT alpm_trans_prepare(alpm_list_t **data)
-{
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
- ASSERT(data != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
-
- ASSERT(handle->trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
- ASSERT(handle->trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
-
- return(_alpm_trans_prepare(handle->trans, data));
-}
-
-/** Commit a transaction.
- * @param data the address of a PM_LIST where detailed description
- * of an error can be dumped (ie. list of conflicting files)
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int SYMEXPORT alpm_trans_commit(alpm_list_t **data)
-{
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
-
- ASSERT(handle->trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
- ASSERT(handle->trans->state == STATE_PREPARED, RET_ERR(PM_ERR_TRANS_NOT_PREPARED, -1));
-
- /* Check for database R/W permission */
- if(!(handle->trans->flags & PM_TRANS_FLAG_PRINTURIS)) {
- /* The print-uris operation is a bit odd. So we explicitly check for it */
- ASSERT(handle->access == PM_ACCESS_RW, RET_ERR(PM_ERR_BADPERMS, -1));
- }
-
- return(_alpm_trans_commit(handle->trans, data));
-}
-
-/** Release a transaction.
+/** Release the library. This should be the last alpm call you make.
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int SYMEXPORT alpm_trans_release()
+int SYMEXPORT alpm_release(void)
{
- pmtrans_t *trans;
- char path[PATH_MAX];
-
ALPM_LOG_FUNC;
- /* Sanity checks */
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
- trans = handle->trans;
- ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
- ASSERT(trans->state != STATE_IDLE, RET_ERR(PM_ERR_TRANS_NULL, -1));
-
- /* during a commit do not interrupt inmediatelly, just after a target */
- if(trans->state == STATE_COMMITING || trans->state == STATE_INTERRUPTED) {
- if(trans->state == STATE_COMMITING) {
- trans->state = STATE_INTERRUPTED;
- }
- pm_errno = PM_ERR_TRANS_COMMITING;
+ if(alpm_db_unregister_all() == -1) {
return(-1);
}
- FREETRANS(handle->trans);
-
- /* unlock db */
- if(handle->lckfd != -1) {
- close(handle->lckfd);
- handle->lckfd = -1;
- }
- snprintf(path, PATH_MAX, "%s%s", handle->root, PM_LOCK);
- if(_alpm_lckrm(path)) {
- _alpm_log(PM_LOG_WARNING, _("could not remove lock file %s"), path);
- alpm_logaction(_("warning: could not remove lock file %s"), path);
- }
+ _alpm_handle_free(handle);
return(0);
}
/** @} */
-/** \addtogroup alpm_log Logging Functions
- * @brief Functions to log using libalpm
- * @{
- */
-
-/** A printf-like function for logging.
- * @param fmt output format
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
- */
-int SYMEXPORT alpm_logaction(char *fmt, ...)
-{
- char str[LOG_STR_LEN];
- va_list args;
-
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
-
- va_start(args, fmt);
- vsnprintf(str, LOG_STR_LEN, fmt, args);
- va_end(args);
-
- /* TODO We should add a prefix to log strings depending on who called us.
- * If logaction was called by the frontend:
- * USER: <the frontend log>
- * and if called internally:
- * ALPM: <the library log>
- * Moreover, the frontend should be able to choose its prefix
- * (USER by default?):
- * pacman: "PACMAN"
- * kpacman: "KPACMAN"
- * This would allow us to share the log file between several frontends
- * and know who does what */
- return(_alpm_logaction(handle->usesyslog, handle->logfd, str));
-}
-/** @} */
-
-/** \addtogroup alpm_misc Miscellaneous Functions
+/** @defgroup alpm_misc Miscellaneous Functions
* @brief Various libalpm functions
- * @{
- */
-
-/** Get the md5 sum of file.
- * @param name name of the file
- * @return the checksum on success, NULL on error
- */
-char SYMEXPORT *alpm_get_md5sum(char *name)
-{
- ALPM_LOG_FUNC;
-
- ASSERT(name != NULL, return(NULL));
-
- return(_alpm_MDFile(name));
-}
-
-/** Get the sha1 sum of file.
- * @param name name of the file
- * @return the checksum on success, NULL on error
- */
-char SYMEXPORT *alpm_get_sha1sum(char *name)
-{
- ALPM_LOG_FUNC;
-
- ASSERT(name != NULL, return(NULL));
-
- return(_alpm_SHAFile(name));
-}
-
-/** Fetch a remote pkg.
- * @param url
- * @return the downloaded filename on success, NULL on error
- */
-char SYMEXPORT *alpm_fetch_pkgurl(char *url)
-{
- ALPM_LOG_FUNC;
-
- ASSERT(strstr(url, "://"), return(NULL));
-
- return(_alpm_fetch_pkgurl(url));
-}
-
-/** Parses a configuration file.
- * @param file path to the config file.
- * @param callback a function to be called upon new database creation
- * @param this_section the config current section being parsed
- * @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int SYMEXPORT alpm_parse_config(char *file, alpm_cb_db_register callback, const char *this_section)
-{
- FILE *fp = NULL;
- char line[PATH_MAX+1];
- char *ptr = NULL;
- char *key = NULL;
- int linenum = 0;
- char origkey[256];
- char section[256] = "";
- pmdb_t *db = NULL;
-
- ALPM_LOG_FUNC;
-
- fp = fopen(file, "r");
- if(fp == NULL) {
- return(0);
- }
-
- if(this_section != NULL && strlen(this_section) > 0) {
- strncpy(section, this_section, min(255, strlen(this_section)));
- if(!strcmp(section, "local")) {
- RET_ERR(PM_ERR_CONF_LOCAL, -1);
- }
- if(strcmp(section, "options")) {
- db = _alpm_db_register(section, callback);
- }
- }
-
- while(fgets(line, PATH_MAX, fp)) {
- linenum++;
- _alpm_strtrim(line);
- if(strlen(line) == 0 || line[0] == '#') {
- continue;
- }
- if(line[0] == '[' && line[strlen(line)-1] == ']') {
- /* new config section */
- ptr = line;
- ptr++;
- strncpy(section, ptr, min(255, strlen(ptr)-1));
- section[min(255, strlen(ptr)-1)] = '\0';
- _alpm_log(PM_LOG_DEBUG, _("config: new section '%s'"), section);
- if(!strlen(section)) {
- RET_ERR(PM_ERR_CONF_BAD_SECTION, -1);
- }
- if(!strcmp(section, "local")) {
- RET_ERR(PM_ERR_CONF_LOCAL, -1);
- }
- if(strcmp(section, "options")) {
- db = _alpm_db_register(section, callback);
- if(db == NULL) {
- /* pm_errno is set by alpm_db_register */
- return(-1);
- }
- }
- } else {
- /* directive */
- ptr = line;
- key = strsep(&ptr, "=");
- if(key == NULL) {
- RET_ERR(PM_ERR_CONF_BAD_SYNTAX, -1);
- }
- _alpm_strtrim(key);
- strncpy(origkey, key, min(255, strlen(key)));
- origkey[min(255, strlen(key))] = '\0';
- key = _alpm_strtoupper(key);
- if(!strlen(section) && strcmp(key, "INCLUDE")) {
- RET_ERR(PM_ERR_CONF_DIRECTIVE_OUTSIDE_SECTION, -1);
- }
- if(ptr == NULL) {
- if(strcmp(origkey, "NoPassiveFTP") == 0 || strcmp(key, "NOPASSIVEFTP") == 0) {
- alpm_option_set_nopassiveftp(1);
- _alpm_log(PM_LOG_DEBUG, _("config: nopassiveftp"));
- } else if(strcmp(origkey, "UseSyslog") == 0 || strcmp(key, "USESYSLOG") == 0) {
- alpm_option_set_usesyslog(1);
- _alpm_log(PM_LOG_DEBUG, _("config: usesyslog"));
- } else if(strcmp(origkey, "ILoveCandy") == 0 || strcmp(key, "ILOVECANDY") == 0) {
- alpm_option_set_chomp(1);
- _alpm_log(PM_LOG_DEBUG, _("config: chomp"));
- } else if(strcmp(origkey, "UseColor") == 0 || strcmp(key, "USECOLOR") == 0) {
- alpm_option_set_usecolor(1);
- _alpm_log(PM_LOG_DEBUG, _("config: usecolor"));
- } else {
- RET_ERR(PM_ERR_CONF_BAD_SYNTAX, -1);
- }
- } else {
- _alpm_strtrim(ptr);
- if(strcmp(origkey, "Include") == 0 || strcmp(key, "INCLUDE") == 0) {
- char conf[PATH_MAX];
- strncpy(conf, ptr, PATH_MAX);
- _alpm_log(PM_LOG_DEBUG, _("config: including %s"), conf);
- alpm_parse_config(conf, callback, section);
- } else if(strcmp(section, "options") == 0) {
- if(strcmp(origkey, "NoUpgrade") == 0 || strcmp(key, "NOUPGRADE") == 0) {
- char *p = ptr;
- char *q;
-
- while((q = strchr(p, ' '))) {
- *q = '\0';
- alpm_option_add_noupgrade(p);
- _alpm_log(PM_LOG_DEBUG, _("config: noupgrade: %s"), p);
- p = q;
- p++;
- }
- alpm_option_add_noupgrade(p);
- _alpm_log(PM_LOG_DEBUG, _("config: noupgrade: %s"), p);
- } else if(strcmp(origkey, "NoExtract") == 0 || strcmp(key, "NOEXTRACT") == 0) {
- char *p = ptr;
- char *q;
-
- while((q = strchr(p, ' '))) {
- *q = '\0';
- alpm_option_add_noextract(p);
- _alpm_log(PM_LOG_DEBUG, _("config: noextract: %s"), p);
- p = q;
- p++;
- }
- alpm_option_add_noextract(p);
- _alpm_log(PM_LOG_DEBUG, _("config: noextract: %s"), p);
- } else if(strcmp(origkey, "IgnorePkg") == 0 || strcmp(key, "IGNOREPKG") == 0) {
- char *p = ptr;
- char *q;
-
- while((q = strchr(p, ' '))) {
- *q = '\0';
- alpm_option_add_ignorepkg(p);
- _alpm_log(PM_LOG_DEBUG, _("config: ignorepkg: %s"), p);
- p = q;
- p++;
- }
- alpm_option_add_ignorepkg(p);
- _alpm_log(PM_LOG_DEBUG, _("config: ignorepkg: %s"), p);
- } else if(strcmp(origkey, "HoldPkg") == 0 || strcmp(key, "HOLDPKG") == 0) {
- char *p = ptr;
- char *q;
-
- while((q = strchr(p, ' '))) {
- *q = '\0';
- alpm_option_add_holdpkg(p);
- _alpm_log(PM_LOG_DEBUG, _("config: holdpkg: %s"), p);
- p = q;
- p++;
- }
- alpm_option_add_holdpkg(p);
- _alpm_log(PM_LOG_DEBUG, _("config: holdpkg: %s"), p);
- } else if(strcmp(origkey, "DBPath") == 0 || strcmp(key, "DBPATH") == 0) {
- /* shave off the leading slash, if there is one */
- if(*ptr == '/') {
- ptr++;
- }
- alpm_option_set_dbpath(ptr);
- _alpm_log(PM_LOG_DEBUG, _("config: dbpath: %s"), ptr);
- } else if(strcmp(origkey, "CacheDir") == 0 || strcmp(key, "CACHEDIR") == 0) {
- /* shave off the leading slash, if there is one */
- if(*ptr == '/') {
- ptr++;
- }
- alpm_option_set_cachedir(ptr);
- _alpm_log(PM_LOG_DEBUG, _("config: cachedir: %s"), ptr);
- } else if(strcmp(origkey, "RootDir") == 0 || strcmp(key, "ROOTDIR") == 0) {
- /* shave off the leading slash, if there is one */
- if(*ptr == '/') {
- ptr++;
- }
- alpm_option_set_root(ptr);
- _alpm_log(PM_LOG_DEBUG, _("config: rootdir: %s"), ptr);
- } else if (strcmp(origkey, "LogFile") == 0 || strcmp(key, "LOGFILE") == 0) {
- alpm_option_set_logfile(ptr);
- _alpm_log(PM_LOG_DEBUG, _("config: logfile: %s"), ptr);
- } else if (strcmp(origkey, "XferCommand") == 0 || strcmp(key, "XFERCOMMAND") == 0) {
- alpm_option_set_xfercommand(ptr);
- _alpm_log(PM_LOG_DEBUG, _("config: xfercommand: %s"), ptr);
- } else if (strcmp(origkey, "UpgradeDelay") == 0 || strcmp(key, "UPGRADEDELAY") == 0) {
- /* The config value is in days, we use seconds */
- time_t ud = atol(ptr) * 60 * 60 *24;
- alpm_option_set_upgradedelay(ud);
- _alpm_log(PM_LOG_DEBUG, _("config: upgradedelay: %d"), ud);
- } else {
- RET_ERR(PM_ERR_CONF_BAD_SYNTAX, -1);
- }
- } else {
- if(strcmp(origkey, "Server") == 0 || strcmp(key, "SERVER") == 0) {
- /* add to the list */
- if(alpm_db_setserver(db, ptr) != 0) {
- /* pm_errno is set by alpm_db_setserver */
- return(-1);
- }
- } else {
- RET_ERR(PM_ERR_CONF_BAD_SYNTAX, -1);
- }
- }
- line[0] = '\0';
- }
- }
- }
- fclose(fp);
-
- return(0);
-}
-
-/** @} */
-
-/* This function is mostly the same as sync.c find_replacements and sysupgrade
- * functions, and we should be able to combine them - this is an interim
- * solution made for -Qu operation */
-alpm_list_t SYMEXPORT *alpm_get_upgrades()
-{
- alpm_list_t *syncpkgs = NULL;
- alpm_list_t *i, *j, *k, *m;
-
- ALPM_LOG_FUNC;
-
- /* TODO holy nested loops, Batman! */
- /* check for "recommended" package replacements */
- _alpm_log(PM_LOG_DEBUG, _("checking for package replacements"));
- for(i = handle->dbs_sync; i; i = i->next) {
- for(j = _alpm_db_get_pkgcache(i->data); j; j = j->next) {
- pmpkg_t *spkg = j->data;
-
- for(k = alpm_pkg_get_replaces(spkg); k; k = k->next) {
-
- for(m = _alpm_db_get_pkgcache(handle->db_local); m; m = m->next) {
- pmpkg_t *lpkg = m->data;
-
- if(strcmp(k->data, alpm_pkg_get_name(lpkg)) == 0) {
- _alpm_log(PM_LOG_DEBUG, _("checking replacement '%s' for package '%s'"), k->data,
- alpm_pkg_get_name(spkg));
- if(alpm_list_find_str(handle->ignorepkg, alpm_pkg_get_name(lpkg))) {
- _alpm_log(PM_LOG_WARNING, _("%s-%s: ignoring package upgrade (to be replaced by %s-%s)"),
- alpm_pkg_get_name(lpkg), alpm_pkg_get_version(lpkg),
- alpm_pkg_get_name(spkg), alpm_pkg_get_version(spkg));
- } else {
- /* assume all replaces=() packages are accepted */
- pmsyncpkg_t *sync = NULL;
- pmpkg_t *dummy = _alpm_pkg_new(alpm_pkg_get_name(lpkg), NULL);
- if(dummy == NULL) {
- pm_errno = PM_ERR_MEMORY;
- goto error;
- }
- dummy->requiredby = alpm_list_strdup(alpm_pkg_get_requiredby(lpkg));
-
- pmsyncpkg_t *syncpkg;
- syncpkg = _alpm_sync_find(syncpkgs, alpm_pkg_get_name(spkg));
-
- if(syncpkg) {
- /* found it -- just append to the replaces list */
- sync->data = alpm_list_add(sync->data, dummy);
- } else {
- /* none found -- enter pkg into the final sync list */
- sync = _alpm_sync_new(PM_SYNC_TYPE_REPLACE, spkg, NULL);
- if(sync == NULL) {
- FREEPKG(dummy);
- pm_errno = PM_ERR_MEMORY;
- goto error;
- }
- sync->data = alpm_list_add(NULL, dummy);
- syncpkgs = alpm_list_add(syncpkgs, sync);
- }
- _alpm_log(PM_LOG_DEBUG, _("%s-%s elected for upgrade (to be replaced by %s-%s)"),
- alpm_pkg_get_name(lpkg), alpm_pkg_get_version(lpkg),
- alpm_pkg_get_name(spkg), alpm_pkg_get_version(spkg));
- }
- break;
- }
- }
- }
- }
- }
-
- /* now do normal upgrades */
- for(i = _alpm_db_get_pkgcache(handle->db_local); i; i = i->next) {
- int replace=0;
- pmpkg_t *local = i->data;
- pmpkg_t *spkg = NULL;
- pmsyncpkg_t *sync;
-
- for(j = handle->dbs_sync; !spkg && j; j = j->next) {
- spkg = _alpm_db_get_pkgfromcache(j->data, alpm_pkg_get_name(local));
- }
- if(spkg == NULL) {
- _alpm_log(PM_LOG_DEBUG, _("'%s' not found in sync db -- skipping"), alpm_pkg_get_name(local));
- continue;
- }
-
- /* we don't care about a to-be-replaced package's newer version */
- for(j = syncpkgs; j && !replace; j=j->next) {
- sync = j->data;
- if(sync->type == PM_SYNC_TYPE_REPLACE) {
- if(_alpm_pkg_find(alpm_pkg_get_name(spkg), sync->data)) {
- replace=1;
- }
- }
- }
- if(replace) {
- _alpm_log(PM_LOG_DEBUG, _("'%s' is already elected for removal -- skipping"),
- alpm_pkg_get_name(local));
- continue;
- }
-
- if(alpm_pkg_compare_versions(local, spkg)) {
- _alpm_log(PM_LOG_DEBUG, _("%s elected for upgrade (%s => %s)"),
- alpm_pkg_get_name(local), alpm_pkg_get_version(local),
- alpm_pkg_get_version(spkg));
-
- pmsyncpkg_t *syncpkg;
- syncpkg = _alpm_sync_find(syncpkgs, alpm_pkg_get_name(local));
-
- if(!syncpkg) {
- pmpkg_t *dummy = _alpm_pkg_new(alpm_pkg_get_name(local),
- alpm_pkg_get_version(local));
- if(dummy == NULL) {
- goto error;
- }
- sync = _alpm_sync_new(PM_SYNC_TYPE_UPGRADE, spkg, dummy);
- if(sync == NULL) {
- FREEPKG(dummy);
- goto error;
- }
- syncpkgs = alpm_list_add(syncpkgs, sync);
- }
- }
- }
-
- return(syncpkgs);
-error:
- if(syncpkgs) {
- alpm_list_free_inner(syncpkgs, _alpm_sync_free);
- alpm_list_free(syncpkgs);
- }
- return(NULL);
-}
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index fc4aed59..1e18ad95 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -1,11 +1,11 @@
/*
* alpm.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -18,7 +18,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_H
@@ -29,28 +29,23 @@ extern "C" {
#endif
#include <time.h> /* for time_t */
+#include <stdarg.h> /* for va_list */
+
+#include <alpm_list.h>
+
+#define DEPRECATED __attribute__((deprecated))
/*
* Arch Linux Package Management library
*/
-#define PM_ROOT "/"
-#define PM_DBPATH "var/lib/pacman/"
-#define PM_CACHEDIR "var/cache/pacman/pkg/"
-#define PM_LOCK "tmp/pacman.lck"
-
-
-#define PM_EXT_PKG ".pkg.tar.gz"
-#define PM_EXT_DB ".db.tar.gz"
-
-/*
+/*
* Structures
*/
-typedef struct __alpm_list_t alpm_list_t;
-
typedef struct __pmdb_t pmdb_t;
typedef struct __pmpkg_t pmpkg_t;
+typedef struct __pmdelta_t pmdelta_t;
typedef struct __pmgrp_t pmgrp_t;
typedef struct __pmserver_t pmserver_t;
typedef struct __pmtrans_t pmtrans_t;
@@ -58,12 +53,14 @@ typedef struct __pmsyncpkg_t pmsyncpkg_t;
typedef struct __pmdepend_t pmdepend_t;
typedef struct __pmdepmissing_t pmdepmissing_t;
typedef struct __pmconflict_t pmconflict_t;
+typedef struct __pmfileconflict_t pmfileconflict_t;
+typedef struct __pmgraph_t pmgraph_t;
/*
* Library
*/
-int alpm_initialize();
+int alpm_initialize(void);
int alpm_release(void);
/*
@@ -75,18 +72,18 @@ typedef enum _pmloglevel_t {
PM_LOG_ERROR = 0x01,
PM_LOG_WARNING = 0x02,
PM_LOG_DEBUG = 0x04,
- PM_LOG_DOWNLOAD = 0x08,
- PM_LOG_FUNCTION = 0x10
+ PM_LOG_FUNCTION = 0x08
} pmloglevel_t;
-typedef void (*alpm_cb_log)(unsigned short, char *);
+typedef void (*alpm_cb_log)(pmloglevel_t, char *, va_list);
int alpm_logaction(char *fmt, ...);
/*
* Downloading
*/
-typedef void (*alpm_cb_download)(const char *filename, int xfered, int total);
+typedef void (*alpm_cb_download)(const char *filename, int file_xfered,
+ int file_total, int list_xfered, int list_total);
/*
* Options
@@ -100,40 +97,45 @@ void alpm_option_set_logcb(alpm_cb_log cb);
alpm_cb_download alpm_option_get_dlcb();
void alpm_option_set_dlcb(alpm_cb_download cb);
-unsigned short alpm_option_get_logmask();
-void alpm_option_set_logmask(unsigned short mask);
-
const char *alpm_option_get_root();
-void alpm_option_set_root(const char *root);
+int alpm_option_set_root(const char *root);
const char *alpm_option_get_dbpath();
-void alpm_option_set_dbpath(const char *dbpath);
+int alpm_option_set_dbpath(const char *dbpath);
-const char *alpm_option_get_cachedir();
-void alpm_option_set_cachedir(const char *cachedir);
+alpm_list_t *alpm_option_get_cachedirs();
+int alpm_option_add_cachedir(const char *cachedir);
+void alpm_option_set_cachedirs(alpm_list_t *cachedirs);
const char *alpm_option_get_logfile();
-void alpm_option_set_logfile(const char *logfile);
+int alpm_option_set_logfile(const char *logfile);
+
+const char *alpm_option_get_lockfile();
+/* no set_lockfile, path is determined from dbpath */
unsigned short alpm_option_get_usesyslog();
void alpm_option_set_usesyslog(unsigned short usesyslog);
alpm_list_t *alpm_option_get_noupgrades();
-void alpm_option_add_noupgrade(char *pkg);
+void alpm_option_add_noupgrade(const char *pkg);
void alpm_option_set_noupgrades(alpm_list_t *noupgrade);
alpm_list_t *alpm_option_get_noextracts();
-void alpm_option_add_noextract(char *pkg);
+void alpm_option_add_noextract(const char *pkg);
void alpm_option_set_noextracts(alpm_list_t *noextract);
alpm_list_t *alpm_option_get_ignorepkgs();
-void alpm_option_add_ignorepkg(char *pkg);
+void alpm_option_add_ignorepkg(const char *pkg);
void alpm_option_set_ignorepkgs(alpm_list_t *ignorepkgs);
alpm_list_t *alpm_option_get_holdpkgs();
-void alpm_option_add_holdpkg(char *pkg);
+void alpm_option_add_holdpkg(const char *pkg);
void alpm_option_set_holdpkgs(alpm_list_t *holdpkgs);
+alpm_list_t *alpm_option_get_ignoregrps();
+void alpm_option_add_ignoregrp(const char *grp);
+void alpm_option_set_ignoregrps(alpm_list_t *ignoregrps);
+
time_t alpm_option_get_upgradedelay();
void alpm_option_set_upgradedelay(time_t delay);
@@ -142,16 +144,7 @@ void alpm_option_set_xfercommand(const char *cmd);
unsigned short alpm_option_get_nopassiveftp();
void alpm_option_set_nopassiveftp(unsigned short nopasv);
-
-unsigned short alpm_option_get_chomp();
-void alpm_option_set_chomp(unsigned short chomp);
-
-alpm_list_t *alpm_option_get_needles();
-void alpm_option_add_needle(char *needle);
-void alpm_option_set_needles(alpm_list_t *needles);
-
-unsigned short alpm_option_get_usecolor();
-void alpm_option_set_usecolor(unsigned short usecolor);
+void alpm_option_set_usedelta(unsigned short usedelta);
pmdb_t *alpm_option_get_localdb();
alpm_list_t *alpm_option_get_syncdbs();
@@ -160,14 +153,14 @@ alpm_list_t *alpm_option_get_syncdbs();
* Databases
*/
-/* Database registration callback */
-typedef void (*alpm_cb_db_register)(const char *, pmdb_t *);
-
-pmdb_t *alpm_db_register(char *treename);
+/* Preferred interfaces db_register_local and db_register_sync */
+pmdb_t *alpm_db_register_local(void);
+pmdb_t *alpm_db_register_sync(const char *treename);
int alpm_db_unregister(pmdb_t *db);
+int alpm_db_unregister_all(void);
-const char *alpm_db_get_name(pmdb_t *db);
-const char *alpm_db_get_url(pmdb_t *db);
+const char *alpm_db_get_name(const pmdb_t *db);
+const char *alpm_db_get_url(const pmdb_t *db);
int alpm_db_setserver(pmdb_t *db, const char *url);
@@ -179,7 +172,7 @@ alpm_list_t *alpm_db_whatprovides(pmdb_t *db, const char *name);
pmgrp_t *alpm_db_readgrp(pmdb_t *db, const char *name);
alpm_list_t *alpm_db_getgrpcache(pmdb_t *db);
-alpm_list_t *alpm_db_search(pmdb_t *db, alpm_list_t* needles);
+alpm_list_t *alpm_db_search(pmdb_t *db, const alpm_list_t* needles);
/*
* Packages
@@ -193,35 +186,22 @@ typedef enum _pmpkgreason_t {
PM_PKG_REASON_DEPEND = 1 /* installed as a dependency for another package */
} pmpkgreason_t;
-/* package name formats */
-/*
-typedef enum _pmpkghasarch_t {
- PM_PKG_WITHOUT_ARCH = 0, / pkgname-pkgver-pkgrel, used under PM_DBPATH /
- PM_PKG_WITH_ARCH = 1 / pkgname-pkgver-pkgrel-arch, used under PM_CACHEDIR /
-} pmpkghasarch_t;
-*/
-
-int alpm_pkg_load(char *filename, pmpkg_t **pkg);
+int alpm_pkg_load(const char *filename, unsigned short full, pmpkg_t **pkg);
int alpm_pkg_free(pmpkg_t *pkg);
int alpm_pkg_checkmd5sum(pmpkg_t *pkg);
-int alpm_pkg_checksha1sum(pmpkg_t *pkg);
-char *alpm_fetch_pkgurl(char *url);
-int alpm_parse_config(char *file, alpm_cb_db_register callback,
- const char *this_section);
+char *alpm_fetch_pkgurl(const char *url);
int alpm_pkg_vercmp(const char *ver1, const char *ver2);
-char *alpm_pkg_name_hasarch(char *pkgname);
+alpm_list_t *alpm_pkg_compute_requiredby(pmpkg_t *pkg);
const char *alpm_pkg_get_filename(pmpkg_t *pkg);
const char *alpm_pkg_get_name(pmpkg_t *pkg);
const char *alpm_pkg_get_version(pmpkg_t *pkg);
const char *alpm_pkg_get_desc(pmpkg_t *pkg);
const char *alpm_pkg_get_url(pmpkg_t *pkg);
-const char *alpm_pkg_get_builddate(pmpkg_t *pkg);
-const char *alpm_pkg_get_buildtype(pmpkg_t *pkg);
-const char *alpm_pkg_get_installdate(pmpkg_t *pkg);
+time_t alpm_pkg_get_builddate(pmpkg_t *pkg);
+time_t alpm_pkg_get_installdate(pmpkg_t *pkg);
const char *alpm_pkg_get_packager(pmpkg_t *pkg);
const char *alpm_pkg_get_md5sum(pmpkg_t *pkg);
-const char *alpm_pkg_get_sha1sum(pmpkg_t *pkg);
const char *alpm_pkg_get_arch(pmpkg_t *pkg);
unsigned long alpm_pkg_get_size(pmpkg_t *pkg);
unsigned long alpm_pkg_get_isize(pmpkg_t *pkg);
@@ -229,20 +209,32 @@ pmpkgreason_t alpm_pkg_get_reason(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_licenses(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_groups(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_depends(pmpkg_t *pkg);
-alpm_list_t *alpm_pkg_get_removes(pmpkg_t *pkg);
-alpm_list_t *alpm_pkg_get_requiredby(pmpkg_t *pkg);
+alpm_list_t *alpm_pkg_get_optdepends(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_conflicts(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_provides(pmpkg_t *pkg);
+alpm_list_t *alpm_pkg_get_deltas(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_replaces(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_files(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_backup(pmpkg_t *pkg);
unsigned short alpm_pkg_has_scriptlet(pmpkg_t *pkg);
+unsigned long alpm_pkg_download_size(pmpkg_t *newpkg, pmdb_t *db_local);
+
+/*
+ * Deltas
+ */
+
+const char *alpm_delta_get_from(pmdelta_t *delta);
+const char *alpm_delta_get_to(pmdelta_t *delta);
+unsigned long alpm_delta_get_size(pmdelta_t *delta);
+const char *alpm_delta_get_filename(pmdelta_t *delta);
+const char *alpm_delta_get_md5sum(pmdelta_t *delta);
+
/*
* Groups
*/
-const char *alpm_grp_get_name(pmgrp_t *grp);
-alpm_list_t *alpm_grp_get_pkgs(pmgrp_t *grp);
+const char *alpm_grp_get_name(const pmgrp_t *grp);
+const alpm_list_t *alpm_grp_get_pkgs(const pmgrp_t *grp);
/*
* Sync
@@ -255,9 +247,11 @@ typedef enum _pmsynctype_t {
PM_SYNC_TYPE_DEPEND
} pmsynctype_t;
-pmsynctype_t alpm_sync_get_type(pmsyncpkg_t *sync);
-pmpkg_t *alpm_sync_get_pkg(pmsyncpkg_t *sync);
-void *alpm_sync_get_data(pmsyncpkg_t *sync);
+pmsynctype_t alpm_sync_get_type(const pmsyncpkg_t *sync);
+pmpkg_t *alpm_sync_get_pkg(const pmsyncpkg_t *sync);
+void *alpm_sync_get_data(const pmsyncpkg_t *sync);
+int alpm_sync_sysupgrade(pmdb_t *db_local,
+ alpm_list_t *dbs_sync, alpm_list_t **syncpkgs);
/*
* Transactions
@@ -267,6 +261,7 @@ void *alpm_sync_get_data(pmsyncpkg_t *sync);
typedef enum _pmtranstype_t {
PM_TRANS_TYPE_ADD = 1,
PM_TRANS_TYPE_REMOVE,
+ PM_TRANS_TYPE_REMOVEUPGRADE,
PM_TRANS_TYPE_UPGRADE,
PM_TRANS_TYPE_SYNC
} pmtranstype_t;
@@ -276,7 +271,7 @@ typedef enum _pmtransflag_t {
PM_TRANS_FLAG_NODEPS = 0x01,
PM_TRANS_FLAG_FORCE = 0x02,
PM_TRANS_FLAG_NOSAVE = 0x04,
- PM_TRANS_FLAG_FRESHEN = 0x08,
+ /* 0x08 flag can go here */
PM_TRANS_FLAG_CASCADE = 0x10,
PM_TRANS_FLAG_RECURSE = 0x20,
PM_TRANS_FLAG_DBONLY = 0x40,
@@ -285,7 +280,8 @@ typedef enum _pmtransflag_t {
PM_TRANS_FLAG_DOWNLOADONLY = 0x200,
PM_TRANS_FLAG_NOSCRIPTLET = 0x400,
PM_TRANS_FLAG_NOCONFLICTS = 0x800,
- PM_TRANS_FLAG_PRINTURIS = 0x1000
+ PM_TRANS_FLAG_PRINTURIS = 0x1000,
+ PM_TRANS_FLAG_NEEDED = 0x2000
} pmtransflag_t;
/* Transaction Events */
@@ -294,8 +290,6 @@ typedef enum _pmtransevt_t {
PM_TRANS_EVT_CHECKDEPS_DONE,
PM_TRANS_EVT_FILECONFLICTS_START,
PM_TRANS_EVT_FILECONFLICTS_DONE,
- PM_TRANS_EVT_CLEANUP_START,
- PM_TRANS_EVT_CLEANUP_DONE,
PM_TRANS_EVT_RESOLVEDEPS_START,
PM_TRANS_EVT_RESOLVEDEPS_DONE,
PM_TRANS_EVT_INTERCONFLICTS_START,
@@ -309,9 +303,14 @@ typedef enum _pmtransevt_t {
PM_TRANS_EVT_EXTRACT_DONE,
PM_TRANS_EVT_INTEGRITY_START,
PM_TRANS_EVT_INTEGRITY_DONE,
+ PM_TRANS_EVT_DELTA_INTEGRITY_START,
+ PM_TRANS_EVT_DELTA_INTEGRITY_DONE,
+ PM_TRANS_EVT_DELTA_PATCHES_START,
+ PM_TRANS_EVT_DELTA_PATCHES_DONE,
+ PM_TRANS_EVT_DELTA_PATCH_START,
+ PM_TRANS_EVT_DELTA_PATCH_DONE,
+ PM_TRANS_EVT_DELTA_PATCH_FAILED,
PM_TRANS_EVT_SCRIPTLET_INFO,
- PM_TRANS_EVT_SCRIPTLET_START,
- PM_TRANS_EVT_SCRIPTLET_DONE,
PM_TRANS_EVT_PRINTURI,
PM_TRANS_EVT_RETRIEVE_START,
} pmtransevt_t;
@@ -323,7 +322,7 @@ typedef enum _pmtransconv_t {
PM_TRANS_CONV_CONFLICT_PKG = 0x04,
PM_TRANS_CONV_CORRUPTED_PKG = 0x08,
PM_TRANS_CONV_LOCAL_NEWER = 0x10,
- PM_TRANS_CONV_LOCAL_UPTODATE = 0x20,
+ /* 0x20 flag can go here */
PM_TRANS_CONV_REMOVE_HOLDPKG = 0x40
} pmtransconv_t;
@@ -356,6 +355,7 @@ int alpm_trans_sysupgrade(void);
int alpm_trans_addtarget(char *target);
int alpm_trans_prepare(alpm_list_t **data);
int alpm_trans_commit(alpm_list_t **data);
+int alpm_trans_interrupt(void);
int alpm_trans_release(void);
/*
@@ -369,41 +369,42 @@ typedef enum _pmdepmod_t {
PM_DEP_MOD_LE
} pmdepmod_t;
-typedef enum _pmdeptype_t {
- PM_DEP_TYPE_DEPEND = 1,
- PM_DEP_TYPE_CONFLICT
-} pmdeptype_t;
-
pmdepend_t *alpm_splitdep(const char *depstring);
int alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep);
+alpm_list_t *alpm_checkdeps(pmdb_t *db, int reversedeps,
+ alpm_list_t *remove, alpm_list_t *upgrade);
-const char *alpm_dep_get_target(pmdepmissing_t *miss);
-pmdeptype_t alpm_dep_get_type(pmdepmissing_t *miss);
-pmdepmod_t alpm_dep_get_mod(pmdepmissing_t *miss);
-const char *alpm_dep_get_name(pmdepmissing_t *miss);
-const char *alpm_dep_get_version(pmdepmissing_t *miss);
+const char *alpm_miss_get_target(const pmdepmissing_t *miss);
+pmdepend_t *alpm_miss_get_dep(pmdepmissing_t *miss);
+
+const char *alpm_conflict_get_package1(pmconflict_t *conflict);
+const char *alpm_conflict_get_package2(pmconflict_t *conflict);
+
+pmdepmod_t alpm_dep_get_mod(const pmdepend_t *dep);
+const char *alpm_dep_get_name(const pmdepend_t *dep);
+const char *alpm_dep_get_version(const pmdepend_t *dep);
+char *alpm_dep_get_string(const pmdepend_t *dep);
/*
* File conflicts
*/
-typedef enum _pmconflicttype_t {
- PM_CONFLICT_TYPE_TARGET = 1,
- PM_CONFLICT_TYPE_FILE
-} pmconflicttype_t;
+typedef enum _pmfileconflicttype_t {
+ PM_FILECONFLICT_TARGET = 1,
+ PM_FILECONFLICT_FILESYSTEM
+} pmfileconflicttype_t;
-const char *alpm_conflict_get_target(pmconflict_t *conflict);
-pmconflicttype_t alpm_conflict_get_type(pmconflict_t *conflict);
-const char *alpm_conflict_get_file(pmconflict_t *conflict);
-const char *alpm_conflict_get_ctarget(pmconflict_t *conflict);
+const char *alpm_fileconflict_get_target(pmfileconflict_t *conflict);
+pmfileconflicttype_t alpm_fileconflict_get_type(pmfileconflict_t *conflict);
+const char *alpm_fileconflict_get_file(pmfileconflict_t *conflict);
+const char *alpm_fileconflict_get_ctarget(pmfileconflict_t *conflict);
/*
* Helpers
*/
-/* md5sums */
-char *alpm_get_md5sum(char *name);
-char *alpm_get_sha1sum(char *name);
+/* checksums */
+char *alpm_get_md5sum(const char *name);
/*
* Errors
@@ -413,6 +414,7 @@ enum _pmerrno_t {
PM_ERR_SYSTEM,
PM_ERR_BADPERMS,
PM_ERR_NOT_A_FILE,
+ PM_ERR_NOT_A_DIR,
PM_ERR_WRONG_ARGS,
/* Interface */
PM_ERR_HANDLE_NULL,
@@ -455,6 +457,9 @@ enum _pmerrno_t {
PM_ERR_PKG_INVALID_NAME,
PM_ERR_PKG_CORRUPTED,
PM_ERR_PKG_REPO_NOT_FOUND,
+ /* Deltas */
+ PM_ERR_DLT_CORRUPTED,
+ PM_ERR_DLT_PATCHFAILED,
/* Groups */
PM_ERR_GRP_NOT_FOUND,
/* Dependencies */
@@ -465,15 +470,9 @@ enum _pmerrno_t {
PM_ERR_USER_ABORT,
PM_ERR_INTERNAL_ERROR,
PM_ERR_LIBARCHIVE_ERROR,
- PM_ERR_DISK_FULL,
PM_ERR_DB_SYNC,
PM_ERR_RETRIEVE,
PM_ERR_PKG_HOLD,
- /* Configuration file */
- PM_ERR_CONF_BAD_SECTION,
- PM_ERR_CONF_LOCAL,
- PM_ERR_CONF_BAD_SYNTAX,
- PM_ERR_CONF_DIRECTIVE_OUTSIDE_SECTION,
PM_ERR_INVALID_REGEX,
/* Downloading */
PM_ERR_CONNECT_FAILED,
@@ -482,9 +481,8 @@ enum _pmerrno_t {
extern enum _pmerrno_t pm_errno;
-char *alpm_strerror(int err);
-
-alpm_list_t *alpm_get_upgrades();
+const char *alpm_strerror(int err);
+const char *alpm_strerrorlast(void);
#ifdef __cplusplus
}
diff --git a/lib/libalpm/alpm_list.c b/lib/libalpm/alpm_list.c
index 54027455..a1e8861b 100644
--- a/lib/libalpm/alpm_list.c
+++ b/lib/libalpm/alpm_list.c
@@ -1,8 +1,8 @@
/*
* alpm_list.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -29,29 +29,41 @@
#include "alpm_list.h"
#include "util.h"
-/** \defgroup alpm_list functions */
-/*\@{*/
+/**
+ * @addtogroup alpm_list List Functions
+ * @brief Functions to manipulate alpm_list_t lists.
+ *
+ * These functions are designed to create, destroy, and modify lists of
+ * type alpm_list_t. This is an internal list type used by libalpm that is
+ * publicly exposed for use by frontends if desired.
+ *
+ * @{ */
/* Allocation */
-/** Allocate a new alpm_list_t
- * @return a new alpm_list_t item, or NULL on failure
+/**
+ * @brief Allocate a new alpm_list_t.
+ *
+ * @return a new alpm_list_t item, or NULL on failure
*/
-alpm_list_t *alpm_list_new()
+alpm_list_t SYMEXPORT *alpm_list_new()
{
alpm_list_t *list = NULL;
- list = (alpm_list_t *)malloc(sizeof(alpm_list_t));
+ list = malloc(sizeof(alpm_list_t));
if(list) {
list->data = NULL;
- list->prev = NULL;
+ list->prev = list; /* maintain a back reference to the tail pointer */
list->next = NULL;
}
+
return(list);
}
-/** Free a list, but not the contained data
- * @param list the list to free
+/**
+ * @brief Free a list, but not the contained data.
+ *
+ * @param list the list to free
*/
void SYMEXPORT alpm_list_free(alpm_list_t *list)
{
@@ -64,9 +76,11 @@ void SYMEXPORT alpm_list_free(alpm_list_t *list)
}
}
-/** Free the internal data of a list structure
- * @param list the list to free
- * @param fn a free function for the internal data
+/**
+ * @brief Free the internal data of a list structure.
+ *
+ * @param list the list to free
+ * @param fn a free function for the internal data
*/
void SYMEXPORT alpm_list_free_inner(alpm_list_t *list, alpm_list_fn_free fn)
{
@@ -83,10 +97,13 @@ void SYMEXPORT alpm_list_free_inner(alpm_list_t *list, alpm_list_fn_free fn)
/* Mutators */
-/** Add a new item to the list
- * @param list the list to add to
- * @param data the new item to be added to the list
- * @return the resultant list, or NULL on failure
+/**
+ * @brief Add a new item to the end of the list.
+ *
+ * @param list the list to add to
+ * @param data the new item to be added to the list
+ *
+ * @return the resultant list
*/
alpm_list_t SYMEXPORT *alpm_list_add(alpm_list_t *list, void *data)
{
@@ -110,6 +127,7 @@ alpm_list_t SYMEXPORT *alpm_list_add(alpm_list_t *list, void *data)
}
lp->next->prev = lp;
lp = lp->next;
+ list->prev = lp;
}
lp->data = data;
@@ -117,13 +135,16 @@ alpm_list_t SYMEXPORT *alpm_list_add(alpm_list_t *list, void *data)
return(ptr);
}
-/** Add items to a list in sorted order.
- * @param list the list to add to
- * @param data the new item to be added to the list
- * @param fn the comparison function to use to determine order
- * @return the resultant list, or NULL on failure
+/**
+ * @brief Add items to a list in sorted order.
+ *
+ * @param list the list to add to
+ * @param data the new item to be added to the list
+ * @param fn the comparison function to use to determine order
+ *
+ * @return the resultant list
*/
-alpm_list_t *alpm_list_add_sorted(alpm_list_t *list, void *data, alpm_list_fn_cmp fn)
+alpm_list_t SYMEXPORT *alpm_list_add_sorted(alpm_list_t *list, void *data, alpm_list_fn_cmp fn)
{
if(!fn) {
return alpm_list_add(list, data);
@@ -153,21 +174,63 @@ alpm_list_t *alpm_list_add_sorted(alpm_list_t *list, void *data, alpm_list_fn_cm
} else {
list = add; /* At beginning, or new list */
}
-
+
+ if(next == NULL) {
+ /* At end, adjust tail pointer on head node */
+ list->prev = add;
+ }
+
return(list);
}
}
-/** Merge the two sorted sublists into one sorted list
- * @param left the first list
+/**
+ * @brief Join two lists.
+ * The two lists must be independent. Do not free the original lists after
+ * calling this function, as this is not a copy operation. The list pointers
+ * passed in should be considered invalid after calling this function.
+ *
+ * @param first the first list
+ * @param second the second list
+ *
+ * @return the resultant joined list
+ */
+alpm_list_t SYMEXPORT *alpm_list_join(alpm_list_t *first, alpm_list_t *second)
+{
+ alpm_list_t *tmp;
+
+ if (first == NULL) {
+ return second;
+ }
+ if (second == NULL) {
+ return first;
+ }
+ /* tmp is the last element of the first list */
+ tmp = first->prev;
+ /* link the first list to the second */
+ tmp->next = second;
+ /* link the second list to the first */
+ first->prev = second->prev;
+ /* set the back reference to the tail */
+ second->prev = tmp;
+
+ return(first);
+}
+
+/**
+ * @brief Merge the two sorted sublists into one sorted list.
+ *
+ * @param left the first list
* @param right the second list
- * @param fn comparison function for determining merge order
+ * @param fn comparison function for determining merge order
+ *
+ * @return the resultant list
*/
-alpm_list_t *alpm_list_mmerge(alpm_list_t *left, alpm_list_t *right, alpm_list_fn_cmp fn)
+alpm_list_t SYMEXPORT *alpm_list_mmerge(alpm_list_t *left, alpm_list_t *right, alpm_list_fn_cmp fn)
{
alpm_list_t *newlist, *lp;
- if (left == NULL)
+ if (left == NULL)
return right;
if (right == NULL)
return left;
@@ -189,7 +252,7 @@ alpm_list_t *alpm_list_mmerge(alpm_list_t *left, alpm_list_t *right, alpm_list_f
lp->next = left;
left->prev = lp;
left = left->next;
- }
+ }
else {
lp->next = right;
right->prev = lp;
@@ -206,22 +269,35 @@ alpm_list_t *alpm_list_mmerge(alpm_list_t *left, alpm_list_t *right, alpm_list_f
lp->next = right;
right->prev = lp;
}
+
+ /* Find our tail pointer
+ * TODO maintain this in the algorithm itself */
+ lp = newlist;
+ while(lp && lp->next) {
+ lp = lp->next;
+ }
+ newlist->prev = lp;
+
return(newlist);
}
-/** Sort a list of size `n` using mergesort algorithm
- * @param list the list to sort
- * @param n the size of the list
- * @param fn the comparison function for determining order
+/**
+ * @brief Sort a list of size `n` using mergesort algorithm.
+ *
+ * @param list the list to sort
+ * @param n the size of the list
+ * @param fn the comparison function for determining order
+ *
+ * @return the resultant list
*/
-alpm_list_t* alpm_list_msort(alpm_list_t *list, int n, alpm_list_fn_cmp fn)
+alpm_list_t SYMEXPORT *alpm_list_msort(alpm_list_t *list, int n, alpm_list_fn_cmp fn)
{
if (n > 1) {
alpm_list_t *left = list;
alpm_list_t *lastleft = alpm_list_nth(list, n/2 - 1);
alpm_list_t *right = lastleft->next;
/* terminate first list */
- lastleft->next = NULL;
+ lastleft->next = NULL;
left = alpm_list_msort(left, n/2, fn);
right = alpm_list_msort(right, n - (n/2), fn);
@@ -230,15 +306,18 @@ alpm_list_t* alpm_list_msort(alpm_list_t *list, int n, alpm_list_fn_cmp fn)
return(list);
}
-/** Remove an item from the list
- * @param haystack the list to remove the item from
- * @param needle the data member of the item we're removing
- * @param fn the comparison function for searching
- * @param data output parameter containing the data member of the item removed
- * @return the resultant list, or NULL on failure
+/**
+ * @brief Remove an item from the list.
+ *
+ * @param haystack the list to remove the item from
+ * @param needle the data member of the item we're removing
+ * @param fn the comparison function for searching
+ * @param data output parameter containing data of the removed item
+ *
+ * @return the resultant list
*/
-alpm_list_t *alpm_list_remove(alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn, void **data)
-{ /* TODO I modified this to remove ALL matching items. Do we need a remove_first? */
+alpm_list_t SYMEXPORT *alpm_list_remove(alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn, void **data)
+{
alpm_list_t *i = haystack, *tmp = NULL;
if(data) {
@@ -252,16 +331,31 @@ alpm_list_t *alpm_list_remove(alpm_list_t *haystack, const void *needle, alpm_li
tmp = i->next;
if(fn(needle, i->data) == 0) {
/* we found a matching item */
- if(i->next) {
- i->next->prev = i->prev;
- }
- if(i->prev) {
- i->prev->next = i->next;
- }
-
if(i == haystack) {
- /* The item found is the first in the chain */
- haystack = haystack->next;
+ /* Special case: removing the head node which has a back reference to
+ * the tail node */
+ haystack = i->next;
+ if(haystack) {
+ haystack->prev = i->prev;
+ }
+ i->prev = NULL;
+ } else if(i == haystack->prev) {
+ /* Special case: removing the tail node, so we need to fix the back
+ * reference on the head node. We also know tail != head. */
+ if(i->prev) {
+ /* i->next should always be null */
+ i->prev->next = i->next;
+ haystack->prev = i->prev;
+ i->prev = NULL;
+ }
+ } else {
+ /* Normal case, non-head and non-tail node */
+ if(i->next) {
+ i->next->prev = i->prev;
+ }
+ if(i->prev) {
+ i->prev->next = i->next;
+ }
}
if(data) {
@@ -269,79 +363,117 @@ alpm_list_t *alpm_list_remove(alpm_list_t *haystack, const void *needle, alpm_li
}
i->data = NULL;
free(i);
+ i = NULL;
+ } else {
+ i = tmp;
}
- i = tmp;
}
return(haystack);
}
-/** Remove the passed in node from the list that it is a part of
- * @note this DOES NOT free the node
- * @param node the list node we're removing
- * @return the node which took the place of this one
+/**
+ * @brief Create a new list without any duplicates.
+ *
+ * This does NOT copy data members.
+ *
+ * @param list the list to copy
+ *
+ * @return a new list containing non-duplicate items
*/
-alpm_list_t *alpm_list_remove_node(alpm_list_t *node)
+alpm_list_t SYMEXPORT *alpm_list_remove_dupes(const alpm_list_t *list)
{
- if(!node) return(NULL);
-
- alpm_list_t *ret = NULL;
-
- if(node->prev) {
- node->prev->next = node->next;
- ret = node->prev;
- node->prev = NULL;
- }
- if(node->next) {
- node->next->prev = node->prev;
- ret = node->next;
- node->next = NULL;
+ const alpm_list_t *lp = list;
+ alpm_list_t *newlist = NULL;
+ while(lp) {
+ if(!alpm_list_find_ptr(newlist, lp->data)) {
+ newlist = alpm_list_add(newlist, lp->data);
+ }
+ lp = lp->next;
}
-
- return(ret);
+ return(newlist);
}
-/** Create a new list without any duplicates
- * @note DOES NOT copy data members
- * @param list the list to copy
- * @return a NEW list containing non-duplicated items
+/**
+ * @brief Copy a string list, including data.
+ *
+ * @param list the list to copy
+ *
+ * @return a copy of the original list
*/
-alpm_list_t SYMEXPORT *alpm_list_remove_dupes(alpm_list_t *list)
-{ /* TODO does removing the strdup here cause invalid free's anywhere? */
- alpm_list_t *lp = list, *newlist = NULL;
+alpm_list_t SYMEXPORT *alpm_list_strdup(const alpm_list_t *list)
+{
+ const alpm_list_t *lp = list;
+ alpm_list_t *newlist = NULL;
while(lp) {
- if(!alpm_list_find(newlist, lp->data)) {
- newlist = alpm_list_add(newlist, lp->data);
- }
+ newlist = alpm_list_add(newlist, strdup(lp->data));
lp = lp->next;
}
return(newlist);
}
-/** Copy a string list, including data
- * @note this is gross, assumes string data members
- * @param list the list to copy
- * @return a copy of the original list
+/**
+ * @brief Copy a list, without copying data.
+ *
+ * @param list the list to copy
+ *
+ * @return a copy of the original list
*/
-alpm_list_t *alpm_list_strdup(alpm_list_t *list)
+alpm_list_t SYMEXPORT *alpm_list_copy(const alpm_list_t *list)
{
- alpm_list_t *lp = list, *newlist = NULL;
+ const alpm_list_t *lp = list;
+ alpm_list_t *newlist = NULL;
while(lp) {
- newlist = alpm_list_add(newlist, strdup(lp->data));
+ newlist = alpm_list_add(newlist, lp->data);
lp = lp->next;
}
return(newlist);
}
-/** Create a new list in reverse order
- * @param list the list to copy
- * @return a NEW list in reverse order of the first
+/**
+ * @brief Copy a list and copy the data.
+ * Note that the data elements to be copied should not contain pointers
+ * and should also be of constant size.
+ *
+ * @param list the list to copy
+ * @param size the size of each data element
+ *
+ * @return a copy of the original list, data copied as well
*/
-alpm_list_t *alpm_list_reverse(alpm_list_t *list)
-{ /* TODO any invalid free's from NOT duplicating data here? */
- alpm_list_t *lp, *newlist = NULL;
+alpm_list_t SYMEXPORT *alpm_list_copy_data(const alpm_list_t *list,
+ size_t size)
+{
+ const alpm_list_t *lp = list;
+ alpm_list_t *newlist = NULL;
+ while(lp) {
+ void *newdata = calloc(1, size);
+ if(newdata) {
+ memcpy(newdata, lp->data, size);
+ newlist = alpm_list_add(newlist, newdata);
+ lp = lp->next;
+ }
+ }
+ return(newlist);
+}
+
+/**
+ * @brief Create a new list in reverse order.
+ *
+ * @param list the list to copy
+ *
+ * @return a new list in reverse order
+ */
+alpm_list_t SYMEXPORT *alpm_list_reverse(alpm_list_t *list)
+{
+ const alpm_list_t *lp;
+ alpm_list_t *newlist = NULL;
lp = alpm_list_last(list);
+ if(list) {
+ /* break our reverse circular list */
+ list->prev = NULL;
+ }
+
while(lp) {
newlist = alpm_list_add(newlist, lp->data);
lp = lp->prev;
@@ -351,65 +483,84 @@ alpm_list_t *alpm_list_reverse(alpm_list_t *list)
/* Accessors */
-/** Get the first element of a list.
+/**
+ * @brief Get the first element of a list.
+ *
* @param list the list
+ *
* @return the first element in the list
*/
-alpm_list_t SYMEXPORT *alpm_list_first(alpm_list_t *list)
+inline alpm_list_t SYMEXPORT *alpm_list_first(const alpm_list_t *list)
{
- return(list);
+ return((alpm_list_t*)list);
}
-/** Return nth element from list (starting with 0)
- * @param list the list to access
- * @param n the index of the item to find
- * @return an alpm_list_t node for index `n`
+/**
+ * @brief Return nth element from list (starting from 0).
+ *
+ * @param list the list
+ * @param n the index of the item to find
+ *
+ * @return an alpm_list_t node for index `n`
*/
-alpm_list_t *alpm_list_nth(alpm_list_t *list, int n)
+alpm_list_t SYMEXPORT *alpm_list_nth(const alpm_list_t *list, int n)
{
- alpm_list_t *i = list;
+ const alpm_list_t *i = list;
while(n--) {
i = i->next;
}
- return(i);
+ return((alpm_list_t*)i);
}
-/** Get the next element of a list.
- * @param entry the list entry
+/**
+ * @brief Get the next element of a list.
+ *
+ * @param node the list node
+ *
* @return the next element, or NULL when no more elements exist
*/
-alpm_list_t SYMEXPORT *alpm_list_next(alpm_list_t *entry)
+inline alpm_list_t SYMEXPORT *alpm_list_next(const alpm_list_t *node)
{
- return(entry->next);
+ return(node->next);
}
-/** Get the last item in the list.
- * @param list the list to operate on
- * @return the last element in the list
+
+/**
+ * @brief Get the last item in the list.
+ *
+ * @param list the list
+ *
+ * @return the last element in the list
*/
-alpm_list_t *alpm_list_last(alpm_list_t *list)
+alpm_list_t SYMEXPORT *alpm_list_last(const alpm_list_t *list)
{
- alpm_list_t *i = list;
- while(i && i->next) {
- i = i->next;
+ if(list) {
+ return(list->prev);
+ } else {
+ return(NULL);
}
- return(i);
}
-/** Get the data member of a list entry.
- * @param entry the list entry
+/**
+ * @brief Get the data member of a list node.
+ *
+ * @param node the list node
+ *
* @return the contained data, or NULL if none
*/
-void SYMEXPORT *alpm_list_getdata(const alpm_list_t *entry)
+void SYMEXPORT *alpm_list_getdata(const alpm_list_t *node)
{
- if(entry == NULL) return(NULL);
- return(entry->data);
+ if(node == NULL) return(NULL);
+ return(node->data);
}
/* Misc */
-/** Count the list items
- * @param list the list to operate on
- * @return the number of list items
+/**
+ * @brief Get the number of items in a list.
+ *
+ * @param list the list
+ *
+ * @return the number of list items
*/
int SYMEXPORT alpm_list_count(const alpm_list_t *list)
{
@@ -422,53 +573,80 @@ int SYMEXPORT alpm_list_count(const alpm_list_t *list)
return(i);
}
-/** Is an item in the list
- * @param needle the data to compare to (== comparison)
- * @param haystack the list to search
- * @return 1 if `needle` is found, 0 otherwise
+/**
+ * @brief Find an item in a list.
+ *
+ * @param needle the item to search
+ * @param haystack the list
+ * @param fn the comparison function for searching (!= NULL)
+ *
+ * @return `needle` if found, NULL otherwise
*/
-int SYMEXPORT alpm_list_find(alpm_list_t *haystack, const void *needle)
+void SYMEXPORT *alpm_list_find(const alpm_list_t *haystack, const void *needle,
+ alpm_list_fn_cmp fn)
{
- alpm_list_t *lp = haystack;
+ const alpm_list_t *lp = haystack;
while(lp) {
- if(lp->data == needle) {
- return(1);
+ if(lp->data && fn(lp->data, needle) == 0) {
+ return(lp->data);
}
lp = lp->next;
}
- return(0);
+ return(NULL);
+}
+
+/* trivial helper function for alpm_list_find_ptr */
+static int ptrcmp(const void *p, const void *q)
+{
+ return(p != q);
+}
+
+/**
+ * @brief Find an item in a list.
+ *
+ * Search for the item whos data matches that of the `needle`.
+ *
+ * @param needle the data to search for (== comparison)
+ * @param haystack the list
+ *
+ * @return `needle` if found, NULL otherwise
+ */
+void SYMEXPORT *alpm_list_find_ptr(const alpm_list_t *haystack, const void *needle)
+{
+ return(alpm_list_find(haystack, needle, ptrcmp));
}
-/* Test for existence of a string in a alpm_list_t
-*/
-/** Is a _string_ in the list (optimization of alpm_list_find for strings)
- * @param needle the string to compare
- * @param haystack the list to search
- * @return 1 if `needle` is found, 0 otherwise
+/**
+ * @brief Find a string in a list.
+ *
+ * @param needle the string to search for
+ * @param haystack the list
+ *
+ * @return `needle` if found, NULL otherwise
*/
-int SYMEXPORT alpm_list_find_str(alpm_list_t *haystack, const char *needle)
+char SYMEXPORT *alpm_list_find_str(const alpm_list_t *haystack, const char *needle)
{
- alpm_list_t *lp = haystack;
- while(lp) {
- if(lp->data && strcmp((const char *)lp->data, needle) == 0) {
- return(1);
- }
- lp = lp->next;
- }
- return(0);
+ return((char *)alpm_list_find(haystack, (const void*)needle, (alpm_list_fn_cmp)strcmp));
}
-/**
- * Calculate the items in list `lhs` that are not present in list `rhs`
- * @note Entries are not duplicated
+/**
+ * @brief Find the items in list `lhs` that are not present in list `rhs`.
+ *
+ * Entries are not duplicated. Operation is O(m*n). The first list is stepped
+ * through one node at a time, and for each node in the first list, each node
+ * in the second list is compared to it.
+ *
* @param lhs the first list
* @param rhs the second list
- * @param fn the comparison function
- * @return a list containing all items in lhs not present in rhs
+ * @param fn the comparison function
+ *
+ * @return a list containing all items in `lhs` not present in `rhs`
*/
-alpm_list_t *alpm_list_diff(alpm_list_t *lhs, alpm_list_t *rhs, alpm_list_fn_cmp fn)
+alpm_list_t SYMEXPORT *alpm_list_diff(const alpm_list_t *lhs,
+ const alpm_list_t *rhs, alpm_list_fn_cmp fn)
{
- alpm_list_t *i, *j, *ret = NULL;
+ const alpm_list_t *i, *j;
+ alpm_list_t *ret = NULL;
for(i = lhs; i; i = i->next) {
int found = 0;
for(j = rhs; j; j = j->next) {
diff --git a/lib/libalpm/alpm_list.h b/lib/libalpm/alpm_list.h
index 214deea4..39cbdd30 100644
--- a/lib/libalpm/alpm_list.h
+++ b/lib/libalpm/alpm_list.h
@@ -1,8 +1,8 @@
/*
- * alpm_alpm_list.h
- *
+ * alpm_list.h
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,25 +15,33 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_LIST_H
#define _ALPM_LIST_H
-#include "alpm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
-/* Chained list struct */
-struct __alpm_list_t {
+/**
+ * @brief Linked list type used by libalpm.
+ *
+ * It is exposed so front ends can use it to prevent the need to reimplement
+ * lists of their own; however, it is not required that the front end uses
+ * it.
+ */
+typedef struct __alpm_list_t {
+ /** data held by the list node */
void *data;
+ /** pointer to the previous node */
struct __alpm_list_t *prev;
+ /** pointer to the next node */
struct __alpm_list_t *next;
-};
+} alpm_list_t;
-/* TODO we should do away with these... they're messy*/
-#define _FREELIST(p, f) do { alpm_list_free_inner(p, f); alpm_list_free(p); p = NULL; } while(0)
-#define FREELIST(p) _FREELIST(p, free)
-#define FREELISTPTR(p) do { alpm_list_free(p); p = NULL; } while(0)
+#define FREELIST(p) do { alpm_list_free_inner(p, free); alpm_list_free(p); p = NULL; } while(0)
typedef void (*alpm_list_fn_free)(void *); /* item deallocation callback */
typedef int (*alpm_list_fn_cmp)(const void *, const void *); /* item comparison callback */
@@ -46,27 +54,33 @@ void alpm_list_free_inner(alpm_list_t *list, alpm_list_fn_free fn);
/* item mutators */
alpm_list_t *alpm_list_add(alpm_list_t *list, void *data);
alpm_list_t *alpm_list_add_sorted(alpm_list_t *list, void *data, alpm_list_fn_cmp fn);
+alpm_list_t *alpm_list_join(alpm_list_t *first, alpm_list_t *second);
alpm_list_t *alpm_list_mmerge(alpm_list_t *left, alpm_list_t *right, alpm_list_fn_cmp fn);
alpm_list_t *alpm_list_msort(alpm_list_t *list, int n, alpm_list_fn_cmp fn);
alpm_list_t *alpm_list_remove(alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn, void **data);
-alpm_list_t *alpm_list_remove_node(alpm_list_t *node);
-alpm_list_t *alpm_list_remove_dupes(alpm_list_t *list);
-alpm_list_t *alpm_list_strdup(alpm_list_t *list);
+alpm_list_t *alpm_list_remove_dupes(const alpm_list_t *list);
+alpm_list_t *alpm_list_strdup(const alpm_list_t *list);
+alpm_list_t *alpm_list_copy(const alpm_list_t *list);
+alpm_list_t *alpm_list_copy_data(const alpm_list_t *list, size_t size);
alpm_list_t *alpm_list_reverse(alpm_list_t *list);
/* item accessors */
-alpm_list_t *alpm_list_first(alpm_list_t *list);
-alpm_list_t *alpm_list_nth(alpm_list_t *list, int n);
-alpm_list_t *alpm_list_next(alpm_list_t *list);
-alpm_list_t *alpm_list_last(alpm_list_t *list);
+alpm_list_t *alpm_list_first(const alpm_list_t *list);
+alpm_list_t *alpm_list_nth(const alpm_list_t *list, int n);
+alpm_list_t *alpm_list_next(const alpm_list_t *list);
+alpm_list_t *alpm_list_last(const alpm_list_t *list);
void *alpm_list_getdata(const alpm_list_t *entry);
/* misc */
int alpm_list_count(const alpm_list_t *list);
-int alpm_list_find(alpm_list_t *haystack, const void *needle);
-int alpm_list_find_str(alpm_list_t *haystack,const char *needle);
-alpm_list_t *alpm_list_diff(alpm_list_t *lhs, alpm_list_t *rhs, alpm_list_fn_cmp fn);
+void *alpm_list_find(const alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn);
+void *alpm_list_find_ptr(const alpm_list_t *haystack, const void *needle);
+char *alpm_list_find_str(const alpm_list_t *haystack, const char *needle);
+alpm_list_t *alpm_list_diff(const alpm_list_t *lhs, const alpm_list_t *rhs, alpm_list_fn_cmp fn);
+#ifdef __cplusplus
+}
+#endif
#endif /* _ALPM_LIST_H */
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/backup.c b/lib/libalpm/backup.c
index aeb0dea7..731a59e6 100644
--- a/lib/libalpm/backup.c
+++ b/lib/libalpm/backup.c
@@ -1,11 +1,11 @@
/*
* backup.c
- *
+ *
* Copyright (c) 2005 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -18,7 +18,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -34,11 +34,11 @@
#include "util.h"
/* Look for a filename in a pmpkg_t.backup list. If we find it,
- * then we return the md5 or sha1 hash (parsed from the same line)
+ * then we return the md5 hash (parsed from the same line)
*/
-char *_alpm_needbackup(const char *file, alpm_list_t *backup)
+char *_alpm_needbackup(const char *file, const alpm_list_t *backup)
{
- alpm_list_t *lp;
+ const alpm_list_t *lp;
ALPM_LOG_FUNC;
@@ -46,11 +46,11 @@ char *_alpm_needbackup(const char *file, alpm_list_t *backup)
return(NULL);
}
- /* run through the backup list and parse out the md5 or sha1 hash for our file */
+ /* run through the backup list and parse out the md5 hash for our file */
for(lp = backup; lp; lp = lp->next) {
char *str = strdup(lp->data);
char *ptr;
-
+
/* tab delimiter */
ptr = strchr(str, '\t');
if(ptr == NULL) {
@@ -59,7 +59,7 @@ char *_alpm_needbackup(const char *file, alpm_list_t *backup)
}
*ptr = '\0';
ptr++;
- /* now str points to the filename and ptr points to the md5 or sha1 hash */
+ /* now str points to the filename and ptr points to the md5 hash */
if(strcmp(file, str) == 0) {
char *hash = strdup(ptr);
FREE(str);
diff --git a/lib/libalpm/backup.h b/lib/libalpm/backup.h
index dde907f0..8723abaf 100644
--- a/lib/libalpm/backup.h
+++ b/lib/libalpm/backup.h
@@ -1,8 +1,8 @@
/*
* backup.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_BACKUP_H
@@ -23,7 +23,7 @@
#include "alpm_list.h"
-char *_alpm_needbackup(const char *file, alpm_list_t *backup);
+char *_alpm_needbackup(const char *file, const alpm_list_t *backup);
#endif /* _ALPM_BACKUP_H */
diff --git a/lib/libalpm/be_files.c b/lib/libalpm/be_files.c
index f3619277..078136ed 100644
--- a/lib/libalpm/be_files.c
+++ b/lib/libalpm/be_files.c
@@ -1,9 +1,9 @@
/*
* be_files.c
- *
+ *
* Copyright (c) 2006 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -16,7 +16,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -27,16 +27,13 @@
#include <stdlib.h>
#include <errno.h>
#include <string.h>
-#ifdef __sun__
-#include <strings.h>
-#endif
+#include <stdint.h> /* uintmax_t */
#include <sys/stat.h>
#include <dirent.h>
-#include <libintl.h>
-#include <locale.h>
-#ifdef CYGWIN
+#include <ctype.h>
+#include <time.h>
#include <limits.h> /* PATH_MAX */
-#endif
+#include <locale.h> /* setlocale */
/* libalpm */
#include "db.h"
@@ -47,6 +44,8 @@
#include "error.h"
#include "handle.h"
#include "package.h"
+#include "delta.h"
+#include "deps.h"
/* This function is used to convert the downloaded db file to the proper backend
@@ -56,9 +55,9 @@ int _alpm_db_install(pmdb_t *db, const char *dbfile)
{
ALPM_LOG_FUNC;
- /* TODO we should not simply unpack the archive, but better parse it and
+ /* TODO we should not simply unpack the archive, but better parse it and
* db_write each entry (see sync_load_dbarchive to get archive content) */
- _alpm_log(PM_LOG_DEBUG, _("unpacking database '%s'"), dbfile);
+ _alpm_log(PM_LOG_DEBUG, "unpacking database '%s'\n", dbfile);
if(_alpm_unpack(dbfile, db->path, NULL)) {
RET_ERR(PM_ERR_SYSTEM, -1);
@@ -75,7 +74,7 @@ int _alpm_db_open(pmdb_t *db)
RET_ERR(PM_ERR_DB_NULL, -1);
}
- _alpm_log(PM_LOG_DEBUG, _("opening database from path '%s'"), db->path);
+ _alpm_log(PM_LOG_DEBUG, "opening database from path '%s'\n", db->path);
db->handle = opendir(db->path);
if(db->handle == NULL) {
RET_ERR(PM_ERR_DB_OPEN, -1);
@@ -109,6 +108,43 @@ void _alpm_db_rewind(pmdb_t *db)
rewinddir(db->handle);
}
+static int _alpm_db_splitname(const char *target, char *name, char *version)
+{
+ /* the format of a db entry is as follows:
+ * package-version-rel/
+ * package name can contain hyphens, so parse from the back- go back
+ * two hyphens and we have split the version from the name.
+ */
+ char *tmp, *p, *q;
+
+ if(target == NULL) {
+ return(-1);
+ }
+ tmp = strdup(target);
+ p = tmp + strlen(tmp);
+
+ /* do the magic parsing- find the beginning of the version string
+ * by doing two iterations of same loop to lop off two hyphens */
+ for(q = --p; *q && *q != '-'; q--);
+ for(p = --q; *p && *p != '-'; p--);
+ if(*p != '-' || p == tmp) {
+ return(-1);
+ }
+
+ /* copy into fields and return */
+ if(version) {
+ strncpy(version, p+1, PKG_VERSION_LEN);
+ }
+ /* insert a terminator at the end of the name (on hyphen)- then copy it */
+ *p = '\0';
+ if(name) {
+ strncpy(name, tmp, PKG_NAME_LEN);
+ }
+
+ free(tmp);
+ return(0);
+}
+
pmpkg_t *_alpm_db_scan(pmdb_t *db, const char *target)
{
struct dirent *ent = NULL;
@@ -142,7 +178,7 @@ pmpkg_t *_alpm_db_scan(pmdb_t *db, const char *target)
if(stat(path, &sbuf) || !S_ISDIR(sbuf.st_mode)) {
continue;
}
- STRNCPY(name, ent->d_name, PKG_FULLNAME_LEN);
+ strncpy(name, ent->d_name, PKG_FULLNAME_LEN);
/* truncate the string at the second-to-last hyphen, */
/* which will give us the package name */
if((ptr = rindex(name, '-'))) {
@@ -179,21 +215,25 @@ pmpkg_t *_alpm_db_scan(pmdb_t *db, const char *target)
pkg = _alpm_pkg_new(NULL, NULL);
if(pkg == NULL) {
- _alpm_log(PM_LOG_DEBUG, _("db scan could not find package: %s"), target);
+ _alpm_log(PM_LOG_DEBUG, "db scan could not find package: %s\n", target);
return(NULL);
}
- if(_alpm_pkg_splitname(ent->d_name, pkg->name, pkg->version, 0) == -1) {
- _alpm_log(PM_LOG_ERROR, _("invalid name for database entry '%s'"), ent->d_name);
- return(NULL);
+ /* split the db entry name */
+ if(_alpm_db_splitname(ent->d_name, pkg->name, pkg->version) != 0) {
+ _alpm_log(PM_LOG_ERROR, _("invalid name for database entry '%s'\n"),
+ ent->d_name);
+ alpm_pkg_free(pkg);
+ pkg = NULL;
+ continue;
}
/* explicitly read with only 'BASE' data, accessors will handle the rest */
if(_alpm_db_read(db, pkg, INFRQ_BASE) == -1) {
/* TODO removed corrupt entry from the FS here */
- FREEPKG(pkg);
+ _alpm_pkg_free(pkg);
} else {
- pkg->data = db;
pkg->origin = PKG_FROM_CACHE;
+ pkg->origin_data.db = db;
}
}
@@ -206,10 +246,6 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
struct stat buf;
char path[PATH_MAX+1];
char line[513];
- /*
- alpm_list_t *tmplist;
- char *locale;
- */
ALPM_LOG_FUNC;
@@ -218,12 +254,12 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
}
if(info == NULL || info->name[0] == 0 || info->version[0] == 0) {
- _alpm_log(PM_LOG_DEBUG, _("invalid package entry provided to _alpm_db_read, skipping"));
+ _alpm_log(PM_LOG_DEBUG, "invalid package entry provided to _alpm_db_read, skipping\n");
return(-1);
}
if(info->origin == PKG_FROM_FILE) {
- _alpm_log(PM_LOG_DEBUG, _("request to read database info for a file-based package '%s', skipping..."), info->name);
+ _alpm_log(PM_LOG_DEBUG, "request to read database info for a file-based package '%s', skipping...\n", info->name);
return(-1);
}
@@ -236,7 +272,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
/* already loaded this info, do nothing */
return(0);
}
- _alpm_log(PM_LOG_FUNCTION, _("loading package data for %s : level=%d"), info->name, inforeq);
+ _alpm_log(PM_LOG_FUNCTION, _("loading package data for %s : level=%d\n"), info->name, inforeq);
/* clear out 'line', to be certain - and to make valgrind happy */
memset(line, 0, 513);
@@ -244,7 +280,8 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
snprintf(path, PATH_MAX, "%s/%s-%s", db->path, info->name, info->version);
if(stat(path, &buf)) {
/* directory doesn't exist or can't be opened */
- _alpm_log(PM_LOG_DEBUG, _("cannot find '%s-%s' in db '%s'"), info->name, info->version, db->treename);
+ _alpm_log(PM_LOG_DEBUG, "cannot find '%s-%s' in db '%s'\n",
+ info->name, info->version, db->treename);
return(-1);
}
@@ -252,7 +289,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
if(inforeq & INFRQ_DESC) {
snprintf(path, PATH_MAX, "%s/%s-%s/desc", db->path, info->name, info->version);
if((fp = fopen(path, "r")) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s"), path, strerror(errno));
+ _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
goto error;
}
while(!feof(fp)) {
@@ -273,32 +310,6 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
if(fgets(info->desc, sizeof(info->desc), fp) == NULL) {
goto error;
}
- /*
- while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
- info->desc_localized = alpm_list_add(info->desc_localized, strdup(line));
- PKG_
- }
-
- if((locale = setlocale(LC_ALL, "")) == NULL) { //To fix segfault when locale invalid
- setenv("LC_ALL", "C", 1);
- locale = setlocale(LC_ALL, "");
- }
-
- if(info->desc_localized && !info->desc_localized->next) {
- snprintf(info->desc, 512, "%s", (char*)info->desc_localized->data);
- } else {
- for (tmplist = info->desc_localized; tmplist; tmplist = tmplist->next) {
- if (tmplist->data && strncmp(tmplist->data, locale, strlen(locale))) {
- strncpy(info->desc, (char *)info->desc_localized->data, sizeof(info->desc));
- } else {
- char *p = (char *)tmplist->data;
- p += strlen(locale) + 1;
- strncpy(info->desc, p, sizeof(info->desc));
- break;
- }
- }
- }
- */
_alpm_strtrim(info->desc);
} else if(!strcmp(line, "%GROUPS%")) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
@@ -319,20 +330,39 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
}
_alpm_strtrim(info->arch);
} else if(!strcmp(line, "%BUILDDATE%")) {
- if(fgets(info->builddate, sizeof(info->builddate), fp) == NULL) {
+ char tmp[32];
+ if(fgets(tmp, sizeof(tmp), fp) == NULL) {
goto error;
}
- _alpm_strtrim(info->builddate);
- } else if(!strcmp(line, "%BUILDTYPE%")) {
- if(fgets(info->buildtype, sizeof(info->buildtype), fp) == NULL) {
- goto error;
+ _alpm_strtrim(tmp);
+
+ char first = tolower(tmp[0]);
+ if(first > 'a' && first < 'z') {
+ struct tm tmp_tm = {0}; //initialize to null incase of failure
+ setlocale(LC_TIME, "C");
+ strptime(tmp, "%a %b %e %H:%M:%S %Y", &tmp_tm);
+ info->builddate = mktime(&tmp_tm);
+ setlocale(LC_TIME, "");
+ } else {
+ info->builddate = atol(tmp);
}
- _alpm_strtrim(info->buildtype);
} else if(!strcmp(line, "%INSTALLDATE%")) {
- if(fgets(info->installdate, sizeof(info->installdate), fp) == NULL) {
+ char tmp[32];
+ if(fgets(tmp, sizeof(tmp), fp) == NULL) {
goto error;
}
- _alpm_strtrim(info->installdate);
+ _alpm_strtrim(tmp);
+
+ char first = tolower(tmp[0]);
+ if(first > 'a' && first < 'z') {
+ struct tm tmp_tm = {0}; //initialize to null incase of failure
+ setlocale(LC_TIME, "C");
+ strptime(tmp, "%a %b %e %H:%M:%S %Y", &tmp_tm);
+ info->installdate = mktime(&tmp_tm);
+ setlocale(LC_TIME, "");
+ } else {
+ info->installdate = atol(tmp);
+ }
} else if(!strcmp(line, "%PACKAGER%")) {
if(fgets(info->packager, sizeof(info->packager), fp) == NULL) {
goto error;
@@ -357,6 +387,10 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
}
_alpm_strtrim(tmp);
info->size = atol(tmp);
+ /* also store this value to isize if isize is unset */
+ if(info->isize == 0) {
+ info->isize = atol(tmp);
+ }
} else if(!strcmp(line, "%ISIZE%")) {
/* ISIZE (installed size) tag only appears in sync repositories,
* not the local one. */
@@ -366,12 +400,6 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
}
_alpm_strtrim(tmp);
info->isize = atol(tmp);
- } else if(!strcmp(line, "%SHA1SUM%")) {
- /* SHA1SUM tag only appears in sync repositories,
- * not the local one. */
- if(fgets(info->sha1sum, sizeof(info->sha1sum), fp) == NULL) {
- goto error;
- }
} else if(!strcmp(line, "%MD5SUM%")) {
/* MD5SUM tag only appears in sync repositories,
* not the local one. */
@@ -398,7 +426,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
if(inforeq & INFRQ_FILES) {
snprintf(path, PATH_MAX, "%s/%s-%s/files", db->path, info->name, info->version);
if((fp = fopen(path, "r")) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s"), path, strerror(errno));
+ _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
goto error;
}
while(fgets(line, 256, fp)) {
@@ -421,7 +449,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
if(inforeq & INFRQ_DEPENDS) {
snprintf(path, PATH_MAX, "%s/%s-%s/depends", db->path, info->name, info->version);
if((fp = fopen(path, "r")) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s"), path, strerror(errno));
+ _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
goto error;
}
while(!feof(fp)) {
@@ -429,11 +457,12 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
_alpm_strtrim(line);
if(!strcmp(line, "%DEPENDS%")) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
- info->depends = alpm_list_add(info->depends, strdup(line));
+ pmdepend_t *dep = alpm_splitdep(line);
+ info->depends = alpm_list_add(info->depends, dep);
}
- } else if(!strcmp(line, "%REQUIREDBY%")) {
+ } else if(!strcmp(line, "%OPTDEPENDS%")) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
- info->requiredby = alpm_list_add(info->requiredby, strdup(line));
+ info->optdepends = alpm_list_add(info->optdepends, strdup(line));
}
} else if(!strcmp(line, "%CONFLICTS%")) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
@@ -451,7 +480,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
* not the local one. *
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
info->replaces = alpm_list_add(info->replaces, strdup(line));
- }
+ }
} else if(!strcmp(line, "%FORCE%")) {
* FORCE tag only appears in sync repositories,
* not the local one. *
@@ -462,6 +491,24 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
fp = NULL;
}
+ /* DELTAS */
+ if(inforeq & INFRQ_DELTAS) {
+ snprintf(path, PATH_MAX, "%s/%s-%s/deltas", db->path, info->name, info->version);
+ if((fp = fopen(path, "r"))) {
+ while(!feof(fp)) {
+ fgets(line, 255, fp);
+ _alpm_strtrim(line);
+ if(!strcmp(line, "%DELTAS%")) {
+ while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
+ info->deltas = alpm_list_add(info->deltas, _alpm_delta_parse(line));
+ }
+ }
+ }
+ fclose(fp);
+ fp = NULL;
+ }
+ }
+
/* INSTALL */
if(inforeq & INFRQ_SCRIPTLET) {
snprintf(path, PATH_MAX, "%s/%s-%s/install", db->path, info->name, info->version);
@@ -509,22 +556,17 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
/* DESC */
if(inforeq & INFRQ_DESC) {
- _alpm_log(PM_LOG_DEBUG, _("writing %s-%s DESC information back to db"), info->name, info->version);
+ _alpm_log(PM_LOG_DEBUG, "writing %s-%s DESC information back to db\n",
+ info->name, info->version);
snprintf(path, PATH_MAX, "%s/%s-%s/desc", db->path, info->name, info->version);
if((fp = fopen(path, "w")) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s"), path, strerror(errno));
+ _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
retval = -1;
goto cleanup;
}
fprintf(fp, "%%NAME%%\n%s\n\n"
"%%VERSION%%\n%s\n\n", info->name, info->version);
if(info->desc[0]) {
- /*fputs("%DESC%\n", fp);
- for(lp = info->desc_localized; lp; lp = lp->next) {
- fprintf(fp, "%s\n", (char *)lp->data);
- }
- fprintf(fp, "\n");
- */
fprintf(fp, "%%DESC%%\n"
"%s\n\n", info->desc);
}
@@ -551,17 +593,13 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
fprintf(fp, "%%ARCH%%\n"
"%s\n\n", info->arch);
}
- if(info->builddate[0]) {
+ if(info->builddate) {
fprintf(fp, "%%BUILDDATE%%\n"
- "%s\n\n", info->builddate);
- }
- if(info->buildtype[0]) {
- fprintf(fp, "%%BUILDTYPE%%\n"
- "%s\n\n", info->buildtype);
+ "%ju\n\n", (uintmax_t)info->builddate);
}
- if(info->installdate[0]) {
+ if(info->installdate) {
fprintf(fp, "%%INSTALLDATE%%\n"
- "%s\n\n", info->installdate);
+ "%ju\n\n", (uintmax_t)info->installdate);
}
if(info->packager[0]) {
fprintf(fp, "%%PACKAGER%%\n"
@@ -585,10 +623,7 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
fprintf(fp, "%%ISIZE%%\n"
"%lu\n\n", info->isize);
}
- if(info->sha1sum) {
- fprintf(fp, "%%SHA1SUM%%\n"
- "%s\n\n", info->sha1sum);
- } else if(info->md5sum) {
+ if(info->md5sum) {
fprintf(fp, "%%MD5SUM%%\n"
"%s\n\n", info->md5sum);
}
@@ -599,10 +634,11 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
/* FILES */
if(local && (inforeq & INFRQ_FILES)) {
- _alpm_log(PM_LOG_DEBUG, _("writing %s-%s FILES information back to db"), info->name, info->version);
+ _alpm_log(PM_LOG_DEBUG, "writing %s-%s FILES information back to db\n",
+ info->name, info->version);
snprintf(path, PATH_MAX, "%s/%s-%s/files", db->path, info->name, info->version);
if((fp = fopen(path, "w")) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s"), path, strerror(errno));
+ _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
retval = -1;
goto cleanup;
}
@@ -626,23 +662,26 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
/* DEPENDS */
if(inforeq & INFRQ_DEPENDS) {
- _alpm_log(PM_LOG_DEBUG, _("writing %s-%s DEPENDS information back to db"), info->name, info->version);
+ _alpm_log(PM_LOG_DEBUG, "writing %s-%s DEPENDS information back to db\n",
+ info->name, info->version);
snprintf(path, PATH_MAX, "%s/%s-%s/depends", db->path, info->name, info->version);
if((fp = fopen(path, "w")) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s"), path, strerror(errno));
+ _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
retval = -1;
goto cleanup;
}
if(info->depends) {
fputs("%DEPENDS%\n", fp);
for(lp = info->depends; lp; lp = lp->next) {
- fprintf(fp, "%s\n", (char *)lp->data);
+ char *depstring = alpm_dep_get_string(lp->data);
+ fprintf(fp, "%s\n", depstring);
+ free(depstring);
}
fprintf(fp, "\n");
}
- if(local && info->requiredby) {
- fputs("%REQUIREDBY%\n", fp);
- for(lp = info->requiredby; lp; lp = lp->next) {
+ if(info->optdepends) {
+ fputs("%OPTDEPENDS%\n", fp);
+ for(lp = info->optdepends; lp; lp = lp->next) {
fprintf(fp, "%s\n", (char *)lp->data);
}
fprintf(fp, "\n");
@@ -709,67 +748,63 @@ int _alpm_db_remove(pmdb_t *db, pmpkg_t *info)
return(0);
}
-/* reads dbpath/.lastupdate and populates *ts with the contents.
- * *ts should be malloc'ed and should be at least 15 bytes.
- *
- * Returns 0 on success, 1 on error
- *
+/*
+ * Return the last update time as number of seconds from the epoch.
+ * Returns 0 if the value is unknown or can't be read.
*/
-int _alpm_db_getlastupdate(pmdb_t *db, char *ts)
+time_t _alpm_db_getlastupdate(const pmdb_t *db)
{
FILE *fp;
char file[PATH_MAX];
+ time_t ret = 0;
ALPM_LOG_FUNC;
- if(db == NULL || ts == NULL) {
- return(-1);
+ if(db == NULL) {
+ return(ret);
}
- snprintf(file, PATH_MAX, "%s%s.lastupdate", handle->root, db->path);
+ snprintf(file, PATH_MAX, "%s.lastupdate", db->path);
/* get the last update time, if it's there */
if((fp = fopen(file, "r")) == NULL) {
- return(-1);
+ return(ret);
} else {
- char line[256];
+ char line[64];
if(fgets(line, sizeof(line), fp)) {
- STRNCPY(ts, line, 15); /* YYYYMMDDHHMMSS */
- ts[14] = '\0';
- } else {
- fclose(fp);
- return(-1);
+ ret = atol(line);
}
}
fclose(fp);
- return(0);
+ return(ret);
}
-/* writes the dbpath/.lastupdate with the contents of *ts
+/*
+ * writes the dbpath/.lastupdate file with the value in time
*/
-int _alpm_db_setlastupdate(pmdb_t *db, char *ts)
+int _alpm_db_setlastupdate(const pmdb_t *db, time_t time)
{
FILE *fp;
char file[PATH_MAX];
+ int ret = 0;
ALPM_LOG_FUNC;
- if(db == NULL || ts == NULL || strlen(ts) == 0) {
+ if(db == NULL || time == 0) {
return(-1);
}
- snprintf(file, PATH_MAX, "%s%s.lastupdate", handle->root, db->path);
+ snprintf(file, PATH_MAX, "%s.lastupdate", db->path);
if((fp = fopen(file, "w")) == NULL) {
return(-1);
}
- if(fputs(ts, fp) <= 0) {
- fclose(fp);
- return(-1);
+ if(fprintf(fp, "%ju", (uintmax_t)time) <= 0) {
+ ret = -1;
}
fclose(fp);
- return(0);
+ return(ret);
}
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/cache.c b/lib/libalpm/cache.c
index ed893470..1da65a49 100644
--- a/lib/libalpm/cache.c
+++ b/lib/libalpm/cache.c
@@ -1,8 +1,8 @@
/*
* cache.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -26,8 +26,6 @@
#include <stdlib.h>
#include <errno.h>
#include <string.h>
-#include <sys/stat.h>
-#include <libintl.h>
/* libalpm */
#include "cache.h"
@@ -56,15 +54,15 @@ int _alpm_db_load_pkgcache(pmdb_t *db)
_alpm_db_free_pkgcache(db);
- _alpm_log(PM_LOG_DEBUG, _("loading package cache for repository '%s'"),
+ _alpm_log(PM_LOG_DEBUG, "loading package cache for repository '%s'\n",
db->treename);
_alpm_db_rewind(db);
while((info = _alpm_db_scan(db, NULL)) != NULL) {
- _alpm_log(PM_LOG_FUNCTION, _("adding '%s' to package cache for db '%s'"),
+ _alpm_log(PM_LOG_FUNCTION, _("adding '%s' to package cache for db '%s'\n"),
alpm_pkg_get_name(info), db->treename);
info->origin = PKG_FROM_CACHE;
- info->data = db;
+ info->origin_data.db = db;
/* add to the collection */
db->pkgcache = alpm_list_add(db->pkgcache, info);
count++;
@@ -82,10 +80,15 @@ void _alpm_db_free_pkgcache(pmdb_t *db)
return;
}
- _alpm_log(PM_LOG_DEBUG, _("freeing package cache for repository '%s'"),
+ _alpm_log(PM_LOG_DEBUG, "freeing package cache for repository '%s'\n",
db->treename);
- FREELISTPKGS(db->pkgcache);
+ alpm_list_t *tmp;
+ for(tmp = db->pkgcache; tmp; tmp = alpm_list_next(tmp)) {
+ _alpm_pkg_free(tmp->data);
+ }
+ alpm_list_free(db->pkgcache);
+ db->pkgcache = NULL;
if(db->grpcache) {
_alpm_db_free_grpcache(db);
@@ -106,7 +109,7 @@ alpm_list_t *_alpm_db_get_pkgcache(pmdb_t *db)
/* hmmm, still NULL ?*/
if(!db->pkgcache) {
- _alpm_log(PM_LOG_DEBUG, _("error: pkgcache is NULL for db '%s'"), db->treename);
+ _alpm_log(PM_LOG_DEBUG, "error: pkgcache is NULL for db '%s'\n", db->treename);
}
return(db->pkgcache);
@@ -126,7 +129,7 @@ int _alpm_db_add_pkgincache(pmdb_t *db, pmpkg_t *pkg)
if(newpkg == NULL) {
return(-1);
}
- _alpm_log(PM_LOG_DEBUG, _("adding entry '%s' in '%s' cache"),
+ _alpm_log(PM_LOG_DEBUG, "adding entry '%s' in '%s' cache\n",
alpm_pkg_get_name(newpkg), db->treename);
db->pkgcache = alpm_list_add_sorted(db->pkgcache, newpkg, _alpm_pkg_cmp);
@@ -146,19 +149,19 @@ int _alpm_db_remove_pkgfromcache(pmdb_t *db, pmpkg_t *pkg)
return(-1);
}
- _alpm_log(PM_LOG_DEBUG, _("removing entry '%s' from '%s' cache"),
+ _alpm_log(PM_LOG_DEBUG, "removing entry '%s' from '%s' cache\n",
alpm_pkg_get_name(pkg), db->treename);
db->pkgcache = alpm_list_remove(db->pkgcache, pkg, _alpm_pkg_cmp, &vdata);
data = vdata;
if(data == NULL) {
/* package not found */
- _alpm_log(PM_LOG_DEBUG, _("cannot remove entry '%s' from '%s' cache: not found"),
+ _alpm_log(PM_LOG_DEBUG, "cannot remove entry '%s' from '%s' cache: not found\n",
alpm_pkg_get_name(pkg), db->treename);
return(-1);
}
- FREEPKG(data);
+ _alpm_pkg_free(data);
_alpm_db_free_grpcache(db);
@@ -175,7 +178,8 @@ pmpkg_t *_alpm_db_get_pkgfromcache(pmdb_t *db, const char *target)
alpm_list_t *pkgcache = _alpm_db_get_pkgcache(db);
if(!pkgcache) {
- _alpm_log(PM_LOG_DEBUG, _("error: failed to get '%s' from NULL pkgcache"), target);
+ _alpm_log(PM_LOG_DEBUG, "error: failed to get '%s' from NULL pkgcache\n",
+ target);
return(NULL);
}
@@ -198,10 +202,11 @@ int _alpm_db_load_grpcache(pmdb_t *db)
_alpm_db_load_pkgcache(db);
}
- _alpm_log(PM_LOG_DEBUG, _("loading group cache for repository '%s'"), db->treename);
+ _alpm_log(PM_LOG_DEBUG, "loading group cache for repository '%s'\n",
+ db->treename);
for(lp = _alpm_db_get_pkgcache(db); lp; lp = lp->next) {
- alpm_list_t *i;
+ const alpm_list_t *i;
pmpkg_t *pkg = lp->data;
for(i = alpm_pkg_get_groups(pkg); i; i = i->next) {
@@ -251,8 +256,10 @@ void _alpm_db_free_grpcache(pmdb_t *db)
for(lg = db->grpcache; lg; lg = lg->next) {
pmgrp_t *grp = lg->data;
- FREELISTPTR(grp->packages);
- FREEGRP(lg->data);
+ alpm_list_free(grp->packages);
+ grp->packages = NULL;
+ _alpm_grp_free(lg->data);
+ lg->data = NULL;
}
FREELIST(db->grpcache);
}
diff --git a/lib/libalpm/cache.h b/lib/libalpm/cache.h
index fa1fef32..2526afac 100644
--- a/lib/libalpm/cache.h
+++ b/lib/libalpm/cache.h
@@ -1,8 +1,8 @@
/*
* cache.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_CACHE_H
diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c
index 3ab4ee71..7b21c38a 100644
--- a/lib/libalpm/conflict.c
+++ b/lib/libalpm/conflict.c
@@ -1,12 +1,12 @@
/*
* conflict.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
* Copyright (c) 2006 by Christian Hamar <krics@linuxforum.hu>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -19,7 +19,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -30,11 +30,7 @@
#include <unistd.h>
#include <string.h>
#include <limits.h>
-#if defined(__APPLE__) || defined(__OpenBSD__)
-#include <sys/syslimits.h>
-#endif
#include <sys/stat.h>
-#include <libintl.h>
/* libalpm */
#include "conflict.h"
@@ -47,191 +43,145 @@
#include "cache.h"
#include "deps.h"
-
-/** See if potential conflict 'name' matches package 'pkg'.
- * @param target the name of the parent package we're checking
- * @param depname the name of the dependency we're checking
- * @param pkg the package to check
- * @param conflict the name of the possible conflict
- * @return A depmissing struct indicating the conflict
- * @note The first two paramters are here to simplify the addition
- * of new 'depmiss' objects.
- *
- * TODO WTF is a 'depmissing' doing indicating a conflict??
- */
-static pmdepmissing_t *does_conflict(const char *target, const char *depname,
- pmpkg_t *pkg, const char *conflict)
-{
- alpm_list_t *i;
-
- /* check the actual package name, easy */
- if(strcmp(alpm_pkg_get_name(pkg), conflict) == 0) {
- _alpm_log(PM_LOG_DEBUG, _(" found conflict '%s' : package '%s'"), conflict, target);
- return(_alpm_depmiss_new(target, PM_DEP_TYPE_CONFLICT,
- PM_DEP_MOD_ANY, depname, NULL));
- } else {
- /* check what this package provides, harder */
- for(i = alpm_pkg_get_provides(pkg); i; i = i->next) {
- const char *provision = i->data;
-
- if(strcmp(provision, conflict) == 0) {
- _alpm_log(PM_LOG_DEBUG, _(" found conflict '%s' : package '%s' provides '%s'"),
- conflict, target, provision);
- return(_alpm_depmiss_new(target, PM_DEP_TYPE_CONFLICT,
- PM_DEP_MOD_ANY, depname, NULL));
- }
- }
- }
- return(NULL); /* not a conflict */
-}
-
-static alpm_list_t *chk_pkg_vs_db(alpm_list_t *baddeps, pmpkg_t *pkg, pmdb_t *db)
+pmconflict_t *_alpm_conflict_new(const char *package1, const char *package2)
{
- pmdepmissing_t *miss = NULL;
- const char *pkgname;
- alpm_list_t *i, *j;
+ pmconflict_t *conflict;
- pkgname = alpm_pkg_get_name(pkg);
+ ALPM_LOG_FUNC;
- for(i = alpm_pkg_get_conflicts(pkg); i; i = i->next) {
- const char *conflict = i->data;
+ MALLOC(conflict, sizeof(pmconflict_t), RET_ERR(PM_ERR_MEMORY, NULL));
- if(strcmp(pkgname, conflict) == 0) {
- /* a package cannot conflict with itself -- that's just not nice */
- _alpm_log(PM_LOG_DEBUG, _("package '%s' conflicts with itself - packaging error"),
- pkgname);
- continue;
- }
+ strncpy(conflict->package1, package1, PKG_NAME_LEN);
+ strncpy(conflict->package2, package2, PKG_NAME_LEN);
- /* CHECK 1: check targets against database */
- _alpm_log(PM_LOG_DEBUG, _("checkconflicts: target '%s' vs db"), pkgname);
+ return(conflict);
+}
- for(j = _alpm_db_get_pkgcache(db); j; j = j->next) {
- pmpkg_t *dbpkg = j->data;
+int _alpm_conflict_isin(pmconflict_t *needle, alpm_list_t *haystack)
+{
+ alpm_list_t *i;
- if(strcmp(alpm_pkg_get_name(dbpkg), pkgname) == 0) {
- /* skip the package we're currently processing */
- continue;
- }
+ ALPM_LOG_FUNC;
- miss = does_conflict(pkgname, alpm_pkg_get_name(dbpkg), dbpkg, conflict);
- if(miss && !_alpm_depmiss_isin(miss, baddeps)) {
- baddeps = alpm_list_add(baddeps, miss);
- } else {
- FREE(miss);
- }
+ for(i = haystack; i; i = i->next) {
+ pmconflict_t *conflict = i->data;
+ char *cpkg1 = conflict->package1;
+ char *cpkg2 = conflict->package2;
+ char *npkg1 = needle->package1;
+ char *npkg2 = needle->package2;
+ if((!strcmp(cpkg1, npkg1) && !strcmp(cpkg2, npkg2))
+ || (!strcmp(cpkg1, npkg2) && !strcmp(cpkg2, npkg1))) {
+ return(1);
}
}
- return(baddeps);
+
+ return(0);
}
-static alpm_list_t *chk_pkg_vs_targets(alpm_list_t *baddeps,
- pmpkg_t *pkg, pmdb_t *db,
- alpm_list_t *targets)
+/** Check if pkg1 conflicts with pkg2
+ * @param pkg1 package we are looking at
+ * @param conflict name of the possible conflict
+ * @param pkg2 package to check
+ * @return 0 for no conflict, non-zero otherwise
+ */
+static int does_conflict(pmpkg_t *pkg1, const char *conflict, pmpkg_t *pkg2)
{
- pmdepmissing_t *miss = NULL;
- const char *pkgname;
- alpm_list_t *i, *j;
+ const char *pkg1name = alpm_pkg_get_name(pkg1);
+ const char *pkg2name = alpm_pkg_get_name(pkg2);
+ pmdepend_t *conf = alpm_splitdep(conflict);
+ int match = 0;
+
+ match = alpm_depcmp(pkg2, conf);
+ if(match) {
+ _alpm_log(PM_LOG_DEBUG, "package %s conflicts with %s (by %s)\n",
+ pkg1name, pkg2name, conflict);
+ }
+ FREE(conf);
+ return(match);
+}
- pkgname = alpm_pkg_get_name(pkg);
+/** Adds the pkg1/pkg2 conflict to the baddeps list
+ * @param *baddeps list to add conflict to
+ * @param pkg1 first package
+ * @param pkg2 package causing conflict
+ */
+static void add_conflict(alpm_list_t **baddeps, const char *pkg1,
+ const char *pkg2)
+{
+ pmconflict_t *conflict = _alpm_conflict_new(pkg1, pkg2);
+ if(conflict && !_alpm_conflict_isin(conflict, *baddeps)) {
+ *baddeps = alpm_list_add(*baddeps, conflict);
+ } else {
+ FREE(conflict);
+ }
+}
- for(i = alpm_pkg_get_conflicts(pkg); i; i = i->next) {
- const char *conflict = i->data;
+/** Check if packages from list1 conflict with packages from list2.
+ * This looks at the conflicts fields of all packages from list1, and sees
+ * if they match packages from list2.
+ * If a conflict (pkg1, pkg2) is found, it is added to the baddeps list
+ * in this order if order >= 0, or reverse order (pkg2,pkg1) otherwise.
+ *
+ * @param list1 first list of packages
+ * @param list2 second list of packages
+ * @param *baddeps list to store conflicts
+ * @param order if >= 0 the conflict order is preserved, if < 0 it's reversed
+ */
+static void check_conflict(alpm_list_t *list1, alpm_list_t *list2,
+ alpm_list_t **baddeps, int order) {
+ alpm_list_t *i, *j, *k;
- if(strcmp(pkgname, conflict) == 0) {
- /* a package cannot conflict with itself -- that's just not nice */
- _alpm_log(PM_LOG_DEBUG, _("package '%s' conflicts with itself - packaging error"),
- pkgname);
- continue;
- }
+ if(!baddeps) {
+ return;
+ }
+ for(i = list1; i; i = i->next) {
+ pmpkg_t *pkg1 = i->data;
+ const char *pkg1name = alpm_pkg_get_name(pkg1);
- /* CHECK 2: check targets against targets */
- _alpm_log(PM_LOG_DEBUG, _("checkconflicts: target '%s' vs all targets"), pkgname);
+ for(j = alpm_pkg_get_conflicts(pkg1); j; j = j->next) {
+ const char *conflict = j->data;
- for(j = targets; j; j = j->next) {
- const char *targetname;
- pmpkg_t *target = j->data;
- targetname = alpm_pkg_get_name(target);
+ for(k = list2; k; k = k->next) {
+ pmpkg_t *pkg2 = k->data;
+ const char *pkg2name = alpm_pkg_get_name(pkg2);
- if(strcmp(targetname, pkgname) == 0) {
- /* skip the package we're currently processing */
- continue;
- }
+ if(strcmp(pkg1name, pkg2name) == 0) {
+ /* skip the package we're currently processing */
+ continue;
+ }
- miss = does_conflict(pkgname, targetname, target, conflict);
- if(miss && !_alpm_depmiss_isin(miss, baddeps)) {
- baddeps = alpm_list_add(baddeps, miss);
- } else {
- FREE(miss);
+ if(does_conflict(pkg1, conflict, pkg2)) {
+ if(order >= 0) {
+ add_conflict(baddeps, pkg1name, pkg2name);
+ } else {
+ add_conflict(baddeps, pkg2name, pkg1name);
+ }
+ }
}
}
}
- return(baddeps);
}
-static alpm_list_t *chk_db_vs_targets(alpm_list_t *baddeps, pmpkg_t *pkg,
- pmdb_t *db, alpm_list_t *targets)
+/* Check for inter-conflicts */
+alpm_list_t *_alpm_innerconflicts(alpm_list_t *packages)
{
- pmdepmissing_t *miss = NULL;
- const char *pkgname;
- alpm_list_t *i, *j;
+ alpm_list_t *baddeps = NULL;
- pkgname = alpm_pkg_get_name(pkg);
-
- _alpm_log(PM_LOG_DEBUG, _("checkconflicts: db vs target '%s'"), pkgname);
-
- for(i = _alpm_db_get_pkgcache(db); i; i = i->next) {
- alpm_list_t *conflicts = NULL;
- const char *dbpkgname;
-
- pmpkg_t *dbpkg = i->data;
- dbpkgname = alpm_pkg_get_name(dbpkg);
-
- if(strcmp(dbpkgname, pkgname) == 0) {
- /* skip the package we're currently processing */
- continue;
- }
-
- /* is this db package in the targets? if so use the
- * new package's conflict list to pick up new changes */
- int use_newconflicts = 0;
- for(j = targets; j; j = j->next) {
- pmpkg_t *targ = j->data;
- if(strcmp(alpm_pkg_get_name(targ), dbpkgname) == 0) {
- _alpm_log(PM_LOG_DEBUG, _("target '%s' is also in target list, using NEW conflicts"),
- dbpkgname);
- conflicts = alpm_pkg_get_conflicts(targ);
- use_newconflicts = 1;
- break;
- }
- }
- /* if we didn't find newer conflicts, use the original list */
- if(!use_newconflicts) {
- conflicts = alpm_pkg_get_conflicts(dbpkg);
- }
-
- for(j = conflicts; j; j = j->next) {
- const char *conflict = j->data;
+ ALPM_LOG_FUNC;
+ _alpm_log(PM_LOG_DEBUG, "check targets vs targets\n");
+ check_conflict(packages, packages, &baddeps, 0);
- miss = does_conflict(pkgname, dbpkgname, pkg, conflict);
- if(miss && !_alpm_depmiss_isin(miss, baddeps)) {
- baddeps = alpm_list_add(baddeps, miss);
- } else {
- FREE(miss);
- }
- }
- }
return(baddeps);
}
-/* Returns a alpm_list_t* of pmdepmissing_t pointers.
- *
- * conflicts are always name only
+/* Check for target vs (db - target) conflicts
+ * In case of conflict the package1 field of pmdepconflict_t contains
+ * the target package, package2 field contains the local package
*/
-alpm_list_t *_alpm_checkconflicts(pmdb_t *db, alpm_list_t *packages)
+alpm_list_t *_alpm_outerconflicts(pmdb_t *db, alpm_list_t *packages)
{
- alpm_list_t *i, *baddeps = NULL;
+ alpm_list_t *baddeps = NULL;
ALPM_LOG_FUNC;
@@ -239,27 +189,23 @@ alpm_list_t *_alpm_checkconflicts(pmdb_t *db, alpm_list_t *packages)
return(NULL);
}
- for(i = packages; i; i = i->next) {
- pmpkg_t *pkg = i->data;
- if(pkg == NULL) {
- continue;
- }
-
- /* run three different conflict checks on each package */
- baddeps = chk_pkg_vs_db(baddeps, pkg, db);
- baddeps = chk_pkg_vs_targets(baddeps, pkg, db, packages);
- baddeps = chk_db_vs_targets(baddeps, pkg, db, packages);
- }
+ alpm_list_t *dblist = alpm_list_diff(_alpm_db_get_pkgcache(db), packages,
+ _alpm_pkg_cmp);
- /* debug loop */
- for(i = baddeps; i; i = i->next) {
- pmdepmissing_t *miss = i->data;
- _alpm_log(PM_LOG_DEBUG, _("\tCONFLICTS:: %s conflicts with %s"), miss->target, miss->depend.name);
- }
+ /* two checks to be done here for conflicts */
+ _alpm_log(PM_LOG_DEBUG, "check targets vs db\n");
+ check_conflict(packages, dblist, &baddeps, 1);
+ _alpm_log(PM_LOG_DEBUG, "check db vs targets\n");
+ check_conflict(dblist, packages, &baddeps, -1);
+ alpm_list_free(dblist);
return(baddeps);
}
+/* Check for transaction conflicts */
+alpm_list_t *_alpm_checkconflicts(pmdb_t *db, alpm_list_t *packages) {
+ return(alpm_list_join(_alpm_innerconflicts(packages), _alpm_outerconflicts(db, packages)));
+}
/* Returns a alpm_list_t* of file conflicts.
* Hooray for set-intersects!
@@ -335,32 +281,29 @@ static alpm_list_t *chk_filedifference(alpm_list_t *filesA, alpm_list_t *filesB)
return(ret);
}
-/* Adds pmconflict_t to a conflicts list. Pass the conflicts list, type (either
- * PM_CONFLICT_TYPE_TARGET or PM_CONFLICT_TYPE_FILE), a file string, and either
+/* Adds pmfileconflict_t to a conflicts list. Pass the conflicts list, type (either
+ * PM_FILECONFLICT_TARGET or PM_FILECONFLICT_FILESYSTEM), a file string, and either
* two package names or one package name and NULL. This is a wrapper for former
* functionality that was done inline.
*/
static alpm_list_t *add_fileconflict(alpm_list_t *conflicts,
- pmconflicttype_t type, const char *filestr,
+ pmfileconflicttype_t type, const char *filestr,
const char* name1, const char* name2)
{
- pmconflict_t *conflict = malloc(sizeof(pmconflict_t));
- if(conflict == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"),
- sizeof(pmconflict_t));
- return(conflicts);
- }
+ pmfileconflict_t *conflict;
+ MALLOC(conflict, sizeof(pmfileconflict_t), return(conflicts));
+
conflict->type = type;
- STRNCPY(conflict->target, name1, PKG_NAME_LEN);
- STRNCPY(conflict->file, filestr, CONFLICT_FILE_LEN);
+ strncpy(conflict->target, name1, PKG_NAME_LEN);
+ strncpy(conflict->file, filestr, CONFLICT_FILE_LEN);
if(name2) {
- STRNCPY(conflict->ctarget, name2, PKG_NAME_LEN);
+ strncpy(conflict->ctarget, name2, PKG_NAME_LEN);
} else {
conflict->ctarget[0] = '\0';
}
conflicts = alpm_list_add(conflicts, conflict);
- _alpm_log(PM_LOG_DEBUG, "found file conflict %s, packages %s and %s",
+ _alpm_log(PM_LOG_DEBUG, "found file conflict %s, packages %s and %s\n",
filestr, name1, name2 ? name2 : "(filesystem)");
return(conflicts);
@@ -369,11 +312,12 @@ static alpm_list_t *add_fileconflict(alpm_list_t *conflicts,
/* Find file conflicts that may occur during the transaction with two checks:
* 1: check every target against every target
* 2: check every target against the filesystem */
-alpm_list_t *_alpm_db_find_conflicts(pmdb_t *db, pmtrans_t *trans, char *root)
+alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans, char *root)
{
alpm_list_t *i, *conflicts = NULL;
alpm_list_t *targets = trans->packages;
int numtargs = alpm_list_count(targets);
+ int current;
ALPM_LOG_FUNC;
@@ -381,7 +325,11 @@ alpm_list_t *_alpm_db_find_conflicts(pmdb_t *db, pmtrans_t *trans, char *root)
return(NULL);
}
- for(i = targets; i; i = i->next) {
+ /* TODO this whole function needs a huge change, which hopefully will
+ * be possible with real transactions. Right now we only do half as much
+ * here as we do when we actually extract files in add.c with our 12
+ * different cases. */
+ for(current = 1, i = targets; i; i = i->next, current++) {
alpm_list_t *j, *k, *tmpfiles = NULL;
pmpkg_t *p1, *p2, *dbpkg;
char path[PATH_MAX+1];
@@ -391,37 +339,35 @@ alpm_list_t *_alpm_db_find_conflicts(pmdb_t *db, pmtrans_t *trans, char *root)
continue;
}
- double percent = (double)(alpm_list_count(targets) - alpm_list_count(i) + 1)
- / alpm_list_count(targets);
+ double percent = (double)current / numtargs;
PROGRESS(trans, PM_TRANS_PROGRESS_CONFLICTS_START, "", (percent * 100),
- numtargs, (numtargs - alpm_list_count(i) +1));
+ numtargs, current);
/* CHECK 1: check every target against every target */
for(j = i->next; j; j = j->next) {
p2 = j->data;
if(!p2) {
continue;
}
- _alpm_log(PM_LOG_DEBUG, "searching for file conflicts: %s and %s",
+ _alpm_log(PM_LOG_DEBUG, "searching for file conflicts: %s and %s\n",
alpm_pkg_get_name(p1), alpm_pkg_get_name(p2));
tmpfiles = chk_fileconflicts(alpm_pkg_get_files(p1), alpm_pkg_get_files(p2));
if(tmpfiles) {
for(k = tmpfiles; k; k = k->next) {
snprintf(path, PATH_MAX, "%s%s", root, (char *)k->data);
- conflicts = add_fileconflict(conflicts, PM_CONFLICT_TYPE_TARGET, path,
+ conflicts = add_fileconflict(conflicts, PM_FILECONFLICT_TARGET, path,
alpm_pkg_get_name(p1), alpm_pkg_get_name(p2));
}
- alpm_list_free_inner(tmpfiles, &free);
- alpm_list_free(tmpfiles);
+ FREELIST(tmpfiles);
}
}
/* declarations for second check */
- struct stat buf;
+ struct stat lsbuf, sbuf;
char *filestr = NULL;
/* CHECK 2: check every target against the filesystem */
- _alpm_log(PM_LOG_DEBUG, "searching for filesystem conflicts: %s", p1->name);
+ _alpm_log(PM_LOG_DEBUG, "searching for filesystem conflicts: %s\n", p1->name);
dbpkg = _alpm_db_get_pkgfromcache(db, p1->name);
/* Do two different checks here. f the package is currently installed,
@@ -441,22 +387,31 @@ alpm_list_t *_alpm_db_find_conflicts(pmdb_t *db, pmtrans_t *trans, char *root)
snprintf(path, PATH_MAX, "%s%s", root, filestr);
- /* stat the file - if it exists and is not a dir, do some checks */
- if(lstat(path, &buf) == 0 && !S_ISDIR(buf.st_mode)) {
- _alpm_log(PM_LOG_DEBUG, "checking possible conflict: %s", path);
+ /* stat the file - if it exists, do some checks */
+ if(_alpm_lstat(path, &lsbuf) != 0) {
+ continue;
+ }
+ stat(path, &sbuf);
+
+ if(S_ISDIR(lsbuf.st_mode)) {
+ _alpm_log(PM_LOG_DEBUG, "%s is a directory, not a conflict\n", path);
+ } else if(S_ISLNK(lsbuf.st_mode) && S_ISDIR(sbuf.st_mode)) {
+ _alpm_log(PM_LOG_DEBUG, "%s is a symlink to a dir, hopefully not a conflict\n", path);
+ } else {
+ _alpm_log(PM_LOG_DEBUG, "checking possible conflict: %s\n", path);
/* Make sure the possible conflict is not a symlink that points to a
* path in the old package. This is kind of dirty with inode usage */
+ /* TODO this seems ripe for a cleanup */
if(dbpkg) {
- struct stat buf2;
+ struct stat pkgbuf;
char str[PATH_MAX+1];
unsigned ok = 0;
for(k = dbpkg->files; k; k = k->next) {
snprintf(str, PATH_MAX, "%s%s", root, (char*)k->data);
- lstat(str, &buf2);
- if(buf.st_ino == buf2.st_ino) {
+ if(!_alpm_lstat(str, &pkgbuf) && lsbuf.st_ino == pkgbuf.st_ino) {
ok = 1;
- _alpm_log(PM_LOG_DEBUG, "conflict was a symlink: %s", path);
+ _alpm_log(PM_LOG_DEBUG, "conflict was a symlink: %s\n", path);
break;
}
}
@@ -487,7 +442,7 @@ alpm_list_t *_alpm_db_find_conflicts(pmdb_t *db, pmtrans_t *trans, char *root)
/* keep file intact if it is in backup array */
trans->skip_add = alpm_list_add(trans->skip_add, strdup(path));
trans->skip_remove = alpm_list_add(trans->skip_remove, strdup(path));
- _alpm_log(PM_LOG_DEBUG, "file in backup array, adding to add and remove skiplist: %s", filestr);
+ _alpm_log(PM_LOG_DEBUG, "file in backup array, adding to add and remove skiplist: %s\n", filestr);
resolved_conflict = 1;
break;
} else {
@@ -495,29 +450,48 @@ alpm_list_t *_alpm_db_find_conflicts(pmdb_t *db, pmtrans_t *trans, char *root)
* package from removing the file when it was already installed
* by its new owner */
trans->skip_remove = alpm_list_add(trans->skip_remove, strdup(path));
- _alpm_log(PM_LOG_DEBUG, "file changed packages, adding to remove skiplist: %s", filestr);
+ _alpm_log(PM_LOG_DEBUG, "file changed packages, adding to remove skiplist: %s\n", filestr);
resolved_conflict = 1;
break;
}
}
}
if(!resolved_conflict) {
- _alpm_log(PM_LOG_DEBUG, "file found in conflict: %s", path);
- conflicts = add_fileconflict(conflicts, PM_CONFLICT_TYPE_FILE,
+ _alpm_log(PM_LOG_DEBUG, "file found in conflict: %s\n", path);
+ conflicts = add_fileconflict(conflicts, PM_FILECONFLICT_FILESYSTEM,
path, p1->name, NULL);
}
- } else {
- _alpm_log(PM_LOG_DEBUG, "%s is a directory, not a conflict", path);
}
}
- alpm_list_free_inner(tmpfiles, &free);
- alpm_list_free(tmpfiles);
+ FREELIST(tmpfiles);
}
return(conflicts);
}
-const char SYMEXPORT *alpm_conflict_get_target(pmconflict_t *conflict)
+const char SYMEXPORT *alpm_conflict_get_package1(pmconflict_t *conflict)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, return(NULL));
+ ASSERT(conflict != NULL, return(NULL));
+
+ return conflict->package1;
+}
+
+const char SYMEXPORT *alpm_conflict_get_package2(pmconflict_t *conflict)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, return(NULL));
+ ASSERT(conflict != NULL, return(NULL));
+
+ return conflict->package2;
+}
+
+const char SYMEXPORT *alpm_fileconflict_get_target(pmfileconflict_t *conflict)
{
ALPM_LOG_FUNC;
@@ -528,7 +502,7 @@ const char SYMEXPORT *alpm_conflict_get_target(pmconflict_t *conflict)
return conflict->target;
}
-pmconflicttype_t SYMEXPORT alpm_conflict_get_type(pmconflict_t *conflict)
+pmfileconflicttype_t SYMEXPORT alpm_fileconflict_get_type(pmfileconflict_t *conflict)
{
ALPM_LOG_FUNC;
@@ -539,7 +513,7 @@ pmconflicttype_t SYMEXPORT alpm_conflict_get_type(pmconflict_t *conflict)
return conflict->type;
}
-const char SYMEXPORT *alpm_conflict_get_file(pmconflict_t *conflict)
+const char SYMEXPORT *alpm_fileconflict_get_file(pmfileconflict_t *conflict)
{
ALPM_LOG_FUNC;
@@ -550,7 +524,7 @@ const char SYMEXPORT *alpm_conflict_get_file(pmconflict_t *conflict)
return conflict->file;
}
-const char SYMEXPORT *alpm_conflict_get_ctarget(pmconflict_t *conflict)
+const char SYMEXPORT *alpm_fileconflict_get_ctarget(pmfileconflict_t *conflict)
{
ALPM_LOG_FUNC;
diff --git a/lib/libalpm/conflict.h b/lib/libalpm/conflict.h
index 8928de86..00a593e9 100644
--- a/lib/libalpm/conflict.h
+++ b/lib/libalpm/conflict.h
@@ -1,8 +1,8 @@
/*
* conflict.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_CONFLICT_H
@@ -28,14 +28,23 @@
#define CONFLICT_FILE_LEN 512
struct __pmconflict_t {
+ char package1[PKG_NAME_LEN];
+ char package2[PKG_NAME_LEN];
+};
+
+struct __pmfileconflict_t {
char target[PKG_NAME_LEN];
- pmconflicttype_t type;
+ pmfileconflicttype_t type;
char file[CONFLICT_FILE_LEN];
char ctarget[PKG_NAME_LEN];
};
+pmconflict_t *_alpm_conflict_new(const char *package1, const char *package2);
+int _alpm_conflict_isin(pmconflict_t *needle, alpm_list_t *haystack);
+alpm_list_t *_alpm_innerconflicts(alpm_list_t *packages);
+alpm_list_t *_alpm_outerconflicts(pmdb_t *db, alpm_list_t *packages);
alpm_list_t *_alpm_checkconflicts(pmdb_t *db, alpm_list_t *packages);
-alpm_list_t *_alpm_db_find_conflicts(pmdb_t *db, pmtrans_t *trans, char *root);
+alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans, char *root);
#endif /* _ALPM_CONFLICT_H */
diff --git a/lib/libalpm/db.c b/lib/libalpm/db.c
index 148c32dc..b772adde 100644
--- a/lib/libalpm/db.c
+++ b/lib/libalpm/db.c
@@ -1,12 +1,12 @@
/*
* db.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -19,7 +19,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -30,17 +30,11 @@
#include <stdlib.h>
#include <errno.h>
#include <string.h>
+#include <stdint.h> /* uintmax_t */
#include <sys/stat.h>
-#if defined(__APPLE__) || defined(__OpenBSD__)
-#include <sys/syslimits.h>
-#include <sys/stat.h>
-#endif
#include <dirent.h>
-#include <libintl.h>
#include <regex.h>
-#ifdef CYGWIN
-#include <limits.h> /* PATH_MAX */
-#endif
+#include <time.h>
/* libalpm */
#include "db.h"
@@ -53,38 +47,425 @@
#include "cache.h"
#include "alpm.h"
-pmdb_t *_alpm_db_new(const char *root, const char *dbpath, const char *treename)
+/** \addtogroup alpm_databases Database Functions
+ * @brief Functions to query and manipulate the database of libalpm
+ * @{
+ */
+
+/** Register a sync database of packages.
+ * @param treename the name of the sync repository
+ * @return a pmdb_t* on success (the value), NULL on error
+ */
+pmdb_t SYMEXPORT *alpm_db_register_sync(const char *treename)
{
- pmdb_t *db;
+ ALPM_LOG_FUNC;
+ /* Sanity checks */
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, NULL));
+ ASSERT(treename != NULL && strlen(treename) != 0, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
+ /* Do not register a database if a transaction is on-going */
+ ASSERT(handle->trans == NULL, RET_ERR(PM_ERR_TRANS_NOT_NULL, NULL));
+
+ return(_alpm_db_register_sync(treename));
+}
+
+/** Register the local package database.
+ * @return a pmdb_t* representing the local database, or NULL on error
+ */
+pmdb_t SYMEXPORT *alpm_db_register_local(void)
+{
ALPM_LOG_FUNC;
- db = calloc(1, sizeof(pmdb_t));
+ /* Sanity checks */
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, NULL));
+ /* Do not register a database if a transaction is on-going */
+ ASSERT(handle->trans == NULL, RET_ERR(PM_ERR_TRANS_NOT_NULL, NULL));
+
+ return(_alpm_db_register_local());
+}
+
+/* Helper function for alpm_db_unregister{_all} */
+static void _alpm_db_unregister(pmdb_t *db)
+{
if(db == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failed: could not allocate %d bytes"),
- sizeof(pmdb_t));
- RET_ERR(PM_ERR_MEMORY, NULL);
+ return;
+ }
+
+ _alpm_log(PM_LOG_DEBUG, "closing database '%s'\n", db->treename);
+ _alpm_db_close(db);
+
+ _alpm_log(PM_LOG_DEBUG, "unregistering database '%s'\n", db->treename);
+ _alpm_db_free(db);
+}
+
+/** Unregister all package databases
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
+int SYMEXPORT alpm_db_unregister_all(void)
+{
+ alpm_list_t *i;
+
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+ /* Do not unregister a database if a transaction is on-going */
+ ASSERT(handle->trans == NULL, RET_ERR(PM_ERR_TRANS_NOT_NULL, -1));
+
+ /* close local database */
+ _alpm_db_unregister(handle->db_local);
+ handle->db_local = NULL;
+
+ /* and also sync ones */
+ for(i = handle->dbs_sync; i; i = i->next) {
+ pmdb_t *db = i->data;
+ _alpm_db_unregister(db);
+ i->data = NULL;
+ }
+ FREELIST(handle->dbs_sync);
+ return(0);
+}
+
+/** Unregister a package database
+ * @param db pointer to the package database to unregister
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
+int SYMEXPORT alpm_db_unregister(pmdb_t *db)
+{
+ int found = 0;
+
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+ ASSERT(db != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
+ /* Do not unregister a database if a transaction is on-going */
+ ASSERT(handle->trans == NULL, RET_ERR(PM_ERR_TRANS_NOT_NULL, -1));
+
+ if(db == handle->db_local) {
+ handle->db_local = NULL;
+ found = 1;
+ } else {
+ /* Warning : this function shouldn't be used to unregister all sync
+ * databases by walking through the list returned by
+ * alpm_option_get_syncdbs, because the db is removed from that list here.
+ */
+ void *data;
+ handle->dbs_sync = alpm_list_remove(handle->dbs_sync,
+ db, _alpm_db_cmp, &data);
+ if(data) {
+ found = 1;
+ }
+ }
+
+ if(!found) {
+ RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
+ }
+
+ _alpm_db_unregister(db);
+ return(0);
+}
+
+/** Set the serverlist of a database.
+ * @param db database pointer
+ * @param url url of the server
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
+int SYMEXPORT alpm_db_setserver(pmdb_t *db, const char *url)
+{
+ alpm_list_t *i;
+ int found = 0;
+
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
+
+ for(i = handle->dbs_sync; i && !found; i = i->next) {
+ pmdb_t *sdb = i->data;
+ if(strcmp(db->treename, sdb->treename) == 0) {
+ found = 1;
+ }
+ }
+ if(!found) {
+ RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
+ }
+
+ if(url && strlen(url)) {
+ pmserver_t *server;
+ if((server = _alpm_server_new(url)) == NULL) {
+ /* pm_errno is set by _alpm_server_new */
+ return(-1);
+ }
+ db->servers = alpm_list_add(db->servers, server);
+ _alpm_log(PM_LOG_DEBUG, "adding new server to database '%s': protocol '%s', server '%s', path '%s'\n",
+ db->treename, server->s_url->scheme, server->s_url->host, server->s_url->doc);
+ } else {
+ FREELIST(db->servers);
+ _alpm_log(PM_LOG_DEBUG, "serverlist flushed for '%s'\n", db->treename);
+ }
+
+ return(0);
+}
+
+/** Update a package database
+ * @param force if true, then forces the update, otherwise update only in case
+ * the database isn't up to date
+ * @param db pointer to the package database to update
+ * @return 0 on success, > 0 on error (pm_errno is set accordingly), < 0 if up
+ * to date
+ */
+int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
+{
+ alpm_list_t *lp;
+ char path[PATH_MAX];
+ alpm_list_t *files = NULL;
+ time_t newmtime = 0, lastupdate = 0;
+ const char *dbpath;
+ int ret;
+
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+ ASSERT(db != NULL && db != handle->db_local, RET_ERR(PM_ERR_WRONG_ARGS, -1));
+ /* Verify we are in a transaction. This is done _mainly_ because we need a DB
+ * lock - if we update without a db lock, we may kludge some other pacman
+ * process that _has_ a lock.
+ */
+ ASSERT(handle->trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+ ASSERT(handle->trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
+ ASSERT(handle->trans->type == PM_TRANS_TYPE_SYNC, RET_ERR(PM_ERR_TRANS_TYPE, -1));
+
+ if(!alpm_list_find_ptr(handle->dbs_sync, db)) {
+ RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
}
- db->path = calloc(1, strlen(root)+strlen(dbpath)+strlen(treename)+2);
- if(db->path == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failed: could not allocate %d bytes"),
- strlen(root)+strlen(dbpath)+strlen(treename)+2);
- FREE(db);
- RET_ERR(PM_ERR_MEMORY, NULL);
+ if(!force) {
+ /* get the lastupdate time */
+ lastupdate = _alpm_db_getlastupdate(db);
+ if(lastupdate == 0) {
+ _alpm_log(PM_LOG_DEBUG, "failed to get lastupdate time for %s\n",
+ db->treename);
+ }
}
- sprintf(db->path, "%s%s%s/", root, dbpath, treename);
- STRNCPY(db->treename, treename, PATH_MAX);
+ /* build a one-element list */
+ snprintf(path, PATH_MAX, "%s" DBEXT, db->treename);
+ files = alpm_list_add(files, strdup(path));
+
+ dbpath = alpm_option_get_dbpath();
+
+ ret = _alpm_downloadfiles_forreal(db->servers, dbpath, files, lastupdate,
+ &newmtime, NULL, 0);
+ FREELIST(files);
+ if(ret == 1) {
+ /* mtimes match, do nothing */
+ pm_errno = 0;
+ return(1);
+ } else if(ret == -1) {
+ /* we use downloadLastErrString and downloadLastErrCode here, error returns from
+ * libdownload */
+ _alpm_log(PM_LOG_DEBUG, "failed to sync db: %s [%d]\n",
+ downloadLastErrString, downloadLastErrCode);
+ RET_ERR(PM_ERR_DB_SYNC, -1);
+ } else {
+ if(newmtime != 0) {
+ _alpm_log(PM_LOG_DEBUG, "sync: new mtime for %s: %ju\n",
+ db->treename, (uintmax_t)newmtime);
+ _alpm_db_setlastupdate(db, newmtime);
+ }
+ snprintf(path, PATH_MAX, "%s%s" DBEXT, dbpath, db->treename);
+
+ /* remove the old dir */
+ _alpm_log(PM_LOG_DEBUG, "flushing database %s\n", db->path);
+ for(lp = _alpm_db_get_pkgcache(db); lp; lp = lp->next) {
+ pmpkg_t *pkg = lp->data;
+ if(pkg && _alpm_db_remove(db, pkg) == -1) {
+ _alpm_log(PM_LOG_ERROR, _("could not remove database entry %s%s\n"), db->treename,
+ alpm_pkg_get_name(pkg));
+ RET_ERR(PM_ERR_DB_REMOVE, -1);
+ }
+ }
+
+ /* Cache needs to be rebuild */
+ _alpm_db_free_pkgcache(db);
+
+ /* uncompress the sync database */
+ if(_alpm_db_install(db, path) == -1) {
+ return -1;
+ }
+ }
+
+ return(0);
+}
+
+/** Get the name of a package database
+ * @param db pointer to the package database
+ * @return the name of the package database, NULL on error
+ */
+const char SYMEXPORT *alpm_db_get_name(const pmdb_t *db)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, return(NULL));
+ ASSERT(db != NULL, return(NULL));
+
+ return db->treename;
+}
+
+/** Get a download URL for the package database
+ * @param db pointer to the package database
+ * @return a fully-specified download URL, NULL on error
+ */
+const char SYMEXPORT *alpm_db_get_url(const pmdb_t *db)
+{
+ char path[PATH_MAX];
+ pmserver_t *s;
+
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, return(NULL));
+ ASSERT(db != NULL, return(NULL));
+
+ s = (pmserver_t*)db->servers->data;
+
+ snprintf(path, PATH_MAX, "%s://%s%s", s->s_url->scheme, s->s_url->host, s->s_url->doc);
+ return strdup(path);
+}
+
+
+/** Get a package entry from a package database
+ * @param db pointer to the package database to get the package from
+ * @param name of the package
+ * @return the package entry on success, NULL on error
+ */
+pmpkg_t SYMEXPORT *alpm_db_get_pkg(pmdb_t *db, const char *name)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, return(NULL));
+ ASSERT(db != NULL, return(NULL));
+ ASSERT(name != NULL && strlen(name) != 0, return(NULL));
+
+ return(_alpm_db_get_pkgfromcache(db, name));
+}
+
+/** Get the package cache of a package database
+ * @param db pointer to the package database to get the package from
+ * @return the list of packages on success, NULL on error
+ */
+alpm_list_t SYMEXPORT *alpm_db_getpkgcache(pmdb_t *db)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, return(NULL));
+ ASSERT(db != NULL, return(NULL));
+
+ return(_alpm_db_get_pkgcache(db));
+}
+
+/** Get the list of packages that a package provides
+ * @param db pointer to the package database to get the package from
+ * @param name name of the package
+ * @return the list of packages on success, NULL on error
+ */
+alpm_list_t SYMEXPORT *alpm_db_whatprovides(pmdb_t *db, const char *name)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, return(NULL));
+ ASSERT(db != NULL, return(NULL));
+ ASSERT(name != NULL && strlen(name) != 0, return(NULL));
+
+ return(_alpm_db_whatprovides(db, name));
+}
+
+/** Get a group entry from a package database
+ * @param db pointer to the package database to get the group from
+ * @param name of the group
+ * @return the groups entry on success, NULL on error
+ */
+pmgrp_t SYMEXPORT *alpm_db_readgrp(pmdb_t *db, const char *name)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, return(NULL));
+ ASSERT(db != NULL, return(NULL));
+ ASSERT(name != NULL && strlen(name) != 0, return(NULL));
+
+ return(_alpm_db_get_grpfromcache(db, name));
+}
+
+/** Get the group cache of a package database
+ * @param db pointer to the package database to get the group from
+ * @return the list of groups on success, NULL on error
+ */
+alpm_list_t SYMEXPORT *alpm_db_getgrpcache(pmdb_t *db)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, return(NULL));
+ ASSERT(db != NULL, return(NULL));
+
+ return(_alpm_db_get_grpcache(db));
+}
+
+/** Searches a database
+ * @param db pointer to the package database to search in
+ * @param needles the list of strings to search for
+ * @return the list of packages on success, NULL on error
+ */
+alpm_list_t SYMEXPORT *alpm_db_search(pmdb_t *db, const alpm_list_t* needles)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, return(NULL));
+ ASSERT(db != NULL, return(NULL));
+
+ return(_alpm_db_search(db, needles));
+}
+
+/** @} */
+
+pmdb_t *_alpm_db_new(const char *dbpath, const char *treename)
+{
+ pmdb_t *db;
+ const size_t pathsize = strlen(dbpath) + strlen(treename) + 2;
+
+ ALPM_LOG_FUNC;
+
+ CALLOC(db, 1, sizeof(pmdb_t), RET_ERR(PM_ERR_MEMORY, NULL));
+ CALLOC(db->path, 1, pathsize, RET_ERR(PM_ERR_MEMORY, NULL));
+
+ sprintf(db->path, "%s%s/", dbpath, treename);
+
+ strncpy(db->treename, treename, PATH_MAX);
return(db);
}
void _alpm_db_free(pmdb_t *db)
{
+ alpm_list_t *tmp;
+
ALPM_LOG_FUNC;
- _FREELIST(db->servers, _alpm_server_free);
+ /* cleanup pkgcache */
+ _alpm_db_free_pkgcache(db);
+ /* cleanup server list */
+ for(tmp = db->servers; tmp; tmp = alpm_list_next(tmp)) {
+ _alpm_server_free(tmp->data);
+ }
+ alpm_list_free(db->servers);
FREE(db->path);
FREE(db);
@@ -97,9 +478,10 @@ int _alpm_db_cmp(const void *db1, const void *db2)
return(strcmp(((pmdb_t *)db1)->treename, ((pmdb_t *)db2)->treename));
}
-alpm_list_t *_alpm_db_search(pmdb_t *db, alpm_list_t *needles)
+alpm_list_t *_alpm_db_search(pmdb_t *db, const alpm_list_t *needles)
{
- alpm_list_t *i, *j, *k, *ret = NULL;
+ const alpm_list_t *i, *j, *k;
+ alpm_list_t *ret = NULL;
ALPM_LOG_FUNC;
@@ -111,8 +493,8 @@ alpm_list_t *_alpm_db_search(pmdb_t *db, alpm_list_t *needles)
continue;
}
targ = i->data;
- _alpm_log(PM_LOG_DEBUG, "searching for target '%s'", targ);
-
+ _alpm_log(PM_LOG_DEBUG, "searching for target '%s'\n", targ);
+
if(regcomp(&reg, targ, REG_EXTENDED | REG_NOSUB | REG_ICASE | REG_NEWLINE) != 0) {
RET_ERR(PM_ERR_INVALID_REGEX, NULL);
}
@@ -125,6 +507,10 @@ alpm_list_t *_alpm_db_search(pmdb_t *db, alpm_list_t *needles)
if (regexec(&reg, alpm_pkg_get_name(pkg), 0, 0, 0) == 0) {
matched = alpm_pkg_get_name(pkg);
}
+ /* check plain text name */
+ else if (strstr(alpm_pkg_get_name(pkg), targ)) {
+ matched = alpm_pkg_get_name(pkg);
+ }
/* check desc */
else if (regexec(&reg, alpm_pkg_get_desc(pkg), 0, 0, 0) == 0) {
matched = alpm_pkg_get_desc(pkg);
@@ -142,7 +528,7 @@ alpm_list_t *_alpm_db_search(pmdb_t *db, alpm_list_t *needles)
}
if(matched != NULL) {
- _alpm_log(PM_LOG_DEBUG, " search target '%s' matched '%s'",
+ _alpm_log(PM_LOG_DEBUG, " search target '%s' matched '%s'\n",
targ, matched);
ret = alpm_list_add(ret, pkg);
}
@@ -154,90 +540,150 @@ alpm_list_t *_alpm_db_search(pmdb_t *db, alpm_list_t *needles)
return(ret);
}
-pmdb_t *_alpm_db_register(const char *treename, alpm_cb_db_register callback)
+pmdb_t *_alpm_db_register_local(void)
{
struct stat buf;
pmdb_t *db;
+ const char *dbpath;
char path[PATH_MAX];
ALPM_LOG_FUNC;
- if(strcmp(treename, "local") == 0) {
- if(handle->db_local != NULL) {
- _alpm_log(PM_LOG_WARNING, _("attempt to re-register the 'local' DB"));
- RET_ERR(PM_ERR_DB_NOT_NULL, NULL);
- }
- } else {
- alpm_list_t *i;
- for(i = handle->dbs_sync; i; i = i->next) {
- pmdb_t *sdb = i->data;
- if(strcmp(treename, sdb->treename) == 0) {
- _alpm_log(PM_LOG_DEBUG, _("attempt to re-register the '%s' database, using existing"), sdb->treename);
- return sdb;
- }
- }
+ if(handle->db_local != NULL) {
+ _alpm_log(PM_LOG_WARNING, _("attempt to re-register the 'local' DB\n"));
+ RET_ERR(PM_ERR_DB_NOT_NULL, NULL);
}
-
- _alpm_log(PM_LOG_DEBUG, _("registering database '%s'"), treename);
+
+ _alpm_log(PM_LOG_DEBUG, "registering local database\n");
/* make sure the database directory exists */
- snprintf(path, PATH_MAX, "%s%s/%s", handle->root, handle->dbpath, treename);
+ dbpath = alpm_option_get_dbpath();
+ if(!dbpath) {
+ _alpm_log(PM_LOG_ERROR, _("database path is undefined\n"));
+ RET_ERR(PM_ERR_DB_OPEN, NULL);
+ }
+ snprintf(path, PATH_MAX, "%slocal", dbpath);
+ /* TODO this is rediculous, we try to do this even if we can't */
if(stat(path, &buf) != 0 || !S_ISDIR(buf.st_mode)) {
- _alpm_log(PM_LOG_DEBUG, _("database directory '%s' does not exist, creating it"), path);
+ _alpm_log(PM_LOG_DEBUG, "database dir '%s' does not exist, creating it\n",
+ path);
if(_alpm_makepath(path) != 0) {
RET_ERR(PM_ERR_SYSTEM, NULL);
}
}
- db = _alpm_db_new(handle->root, handle->dbpath, treename);
+ db = _alpm_db_new(dbpath, "local");
if(db == NULL) {
RET_ERR(PM_ERR_DB_CREATE, NULL);
}
- _alpm_log(PM_LOG_DEBUG, _("opening database '%s'"), db->treename);
+ _alpm_log(PM_LOG_DEBUG, "opening database '%s'\n", db->treename);
if(_alpm_db_open(db) == -1) {
_alpm_db_free(db);
RET_ERR(PM_ERR_DB_OPEN, NULL);
}
- /* Only call callback on NEW registration. */
- if(callback) callback(treename, db);
+ handle->db_local = db;
+ return(db);
+}
- if(strcmp(treename, "local") == 0) {
- handle->db_local = db;
- } else {
- handle->dbs_sync = alpm_list_add(handle->dbs_sync, db);
+pmdb_t *_alpm_db_register_sync(const char *treename)
+{
+ struct stat buf;
+ pmdb_t *db;
+ const char *dbpath;
+ char path[PATH_MAX];
+ alpm_list_t *i;
+
+ ALPM_LOG_FUNC;
+
+ for(i = handle->dbs_sync; i; i = i->next) {
+ pmdb_t *sdb = i->data;
+ if(strcmp(treename, sdb->treename) == 0) {
+ _alpm_log(PM_LOG_DEBUG, "attempt to re-register the '%s' database, using existing\n", sdb->treename);
+ return sdb;
+ }
+ }
+
+ _alpm_log(PM_LOG_DEBUG, "registering sync database '%s'\n", treename);
+
+ /* make sure the database directory exists */
+ dbpath = alpm_option_get_dbpath();
+ if(!dbpath) {
+ _alpm_log(PM_LOG_ERROR, _("database path is undefined\n"));
+ RET_ERR(PM_ERR_DB_OPEN, NULL);
+ }
+ /* all sync DBs now reside in the sync/ subdir of the dbpath */
+ snprintf(path, PATH_MAX, "%ssync/%s", dbpath, treename);
+ /* TODO this is rediculous, we try to do this even if we can't */
+ if(stat(path, &buf) != 0 || !S_ISDIR(buf.st_mode)) {
+ _alpm_log(PM_LOG_DEBUG, "database dir '%s' does not exist, creating it\n",
+ path);
+ if(_alpm_makepath(path) != 0) {
+ RET_ERR(PM_ERR_SYSTEM, NULL);
+ }
+ }
+
+ /* Ensure the db gets the real path. */
+ path[0] = '\0';
+ snprintf(path, PATH_MAX, "%ssync/", dbpath);
+
+ db = _alpm_db_new(path, treename);
+ if(db == NULL) {
+ RET_ERR(PM_ERR_DB_CREATE, NULL);
+ }
+
+ _alpm_log(PM_LOG_DEBUG, "opening database '%s'\n", db->treename);
+ if(_alpm_db_open(db) == -1) {
+ _alpm_db_free(db);
+ RET_ERR(PM_ERR_DB_OPEN, NULL);
}
+ handle->dbs_sync = alpm_list_add(handle->dbs_sync, db);
return(db);
}
-const char SYMEXPORT *alpm_db_get_name(pmdb_t *db)
+/* helper function for alpm_list_find and _alpm_db_whatprovides
+ *
+ * @return "provision.name" == needle (as string)
+ */
+int _alpm_prov_cmp(const void *provision, const void *needle)
{
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(db != NULL, return(NULL));
+ char *tmpptr;
+ char *provname = strdup(provision);
+ int retval = 0;
+ tmpptr = strchr(provname, ' ');
- return db->treename;
+ if(tmpptr != NULL) { /* provision-version */
+ *tmpptr='\0';
+ }
+ retval = strcmp(provname, needle);
+ free(provname);
+ return(retval);
}
-const char *alpm_db_get_url(pmdb_t *db)
+/* return a alpm_list_t of packages in "db" that provide "package"
+ */
+alpm_list_t *_alpm_db_whatprovides(pmdb_t *db, const char *package)
{
- char path[PATH_MAX];
- pmserver_t *s;
+ alpm_list_t *pkgs = NULL;
+ alpm_list_t *lp;
ALPM_LOG_FUNC;
- /* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(db != NULL, return(NULL));
+ if(db == NULL || package == NULL || strlen(package) == 0) {
+ return(NULL);
+ }
- s = (pmserver_t*)db->servers->data;
+ for(lp = _alpm_db_get_pkgcache(db); lp; lp = lp->next) {
+ pmpkg_t *info = lp->data;
- snprintf(path, PATH_MAX, "%s://%s%s", s->s_url->scheme, s->s_url->host, s->s_url->doc);
- return strdup(path);
+ if(alpm_list_find(alpm_pkg_get_provides(info), (const void *)package, _alpm_prov_cmp)) {
+ pkgs = alpm_list_add(pkgs, info);
+ }
+ }
+
+ return(pkgs);
}
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/db.h b/lib/libalpm/db.h
index 26f1fdf4..3916e848 100644
--- a/lib/libalpm/db.h
+++ b/lib/libalpm/db.h
@@ -1,10 +1,10 @@
/*
* db.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -17,7 +17,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_DB_H
@@ -25,6 +25,7 @@
#include "alpm.h"
#include <limits.h>
+#include <time.h>
/* Database entries */
typedef enum _pmdbinfrq_t {
@@ -33,8 +34,9 @@ typedef enum _pmdbinfrq_t {
INFRQ_DEPENDS = 0x04,
INFRQ_FILES = 0x08,
INFRQ_SCRIPTLET = 0x10,
+ INFRQ_DELTAS = 0x20,
/* ALL should be sum of all above */
- INFRQ_ALL = 0x1F
+ INFRQ_ALL = 0x3F
} pmdbinfrq_t;
/* Database */
@@ -48,11 +50,16 @@ struct __pmdb_t {
};
/* db.c, database general calls */
-pmdb_t *_alpm_db_new(const char *root, const char *dbpath, const char *treename);
+pmdb_t *_alpm_db_new(const char *dbpath, const char *treename);
void _alpm_db_free(pmdb_t *db);
int _alpm_db_cmp(const void *db1, const void *db2);
-alpm_list_t *_alpm_db_search(pmdb_t *db, alpm_list_t *needles);
-pmdb_t *_alpm_db_register(const char *treename, alpm_cb_db_register callback);
+alpm_list_t *_alpm_db_search(pmdb_t *db, const alpm_list_t *needles);
+pmdb_t *_alpm_db_register_local(void);
+pmdb_t *_alpm_db_register_sync(const char *treename);
+
+/* Provision */
+int _alpm_prov_cmp(const void *provision, const void *needle);
+alpm_list_t *_alpm_db_whatprovides(pmdb_t *db, const char *package);
/* be.c, backend specific calls */
int _alpm_db_install(pmdb_t *db, const char *dbfile);
@@ -63,8 +70,8 @@ pmpkg_t *_alpm_db_scan(pmdb_t *db, const char *target);
int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq);
int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq);
int _alpm_db_remove(pmdb_t *db, pmpkg_t *info);
-int _alpm_db_getlastupdate(pmdb_t *db, char *ts);
-int _alpm_db_setlastupdate(pmdb_t *db, char *ts);
+time_t _alpm_db_getlastupdate(const pmdb_t *db);
+int _alpm_db_setlastupdate(const pmdb_t *db, time_t time);
#endif /* _ALPM_DB_H */
diff --git a/lib/libalpm/delta.c b/lib/libalpm/delta.c
new file mode 100644
index 00000000..8daac0c5
--- /dev/null
+++ b/lib/libalpm/delta.c
@@ -0,0 +1,266 @@
+/*
+ * delta.c
+ *
+ * Copyright (c) 2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+/* libalpm */
+#include "delta.h"
+#include "error.h"
+#include "util.h"
+#include "log.h"
+#include "alpm_list.h"
+#include "alpm.h"
+
+/** \addtogroup alpm_deltas Delta Functions
+ * @brief Functions to manipulate libalpm deltas
+ * @{
+ */
+
+const char SYMEXPORT *alpm_delta_get_from(pmdelta_t *delta)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(delta != NULL, return(NULL));
+
+ return(delta->from);
+}
+
+const char SYMEXPORT *alpm_delta_get_to(pmdelta_t *delta)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(delta != NULL, return(NULL));
+
+ return(delta->to);
+}
+
+unsigned long SYMEXPORT alpm_delta_get_size(pmdelta_t *delta)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(delta != NULL, return(-1));
+
+ return(delta->size);
+}
+
+const char SYMEXPORT *alpm_delta_get_filename(pmdelta_t *delta)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(delta != NULL, return(NULL));
+
+ return(delta->filename);
+}
+
+const char SYMEXPORT *alpm_delta_get_md5sum(pmdelta_t *delta)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(delta != NULL, return(NULL));
+
+ return(delta->md5sum);
+}
+
+/** @} */
+
+/** Calculates the combined size of a list of delta files.
+ *
+ * @param deltas the list of pmdelta_t * objects
+ *
+ * @return the combined size
+ */
+unsigned long _alpm_delta_path_size(alpm_list_t *deltas)
+{
+ unsigned long sum = 0;
+ alpm_list_t *dlts = deltas;
+
+ while(dlts) {
+ pmdelta_t *d = (pmdelta_t *)alpm_list_getdata(dlts);
+ sum += d->size;
+
+ dlts = alpm_list_next(dlts);
+ }
+
+ return(sum);
+}
+
+/** Calculates the combined size of a list of delta files that are not
+ * in the cache.
+ *
+ * @param deltas the list of pmdelta_t * objects
+ *
+ * @return the combined size
+ */
+unsigned long _alpm_delta_path_size_uncached(alpm_list_t *deltas)
+{
+ unsigned long sum = 0;
+ alpm_list_t *dlts = deltas;
+
+ while(dlts) {
+ pmdelta_t *d = (pmdelta_t *)alpm_list_getdata(dlts);
+ char *fname = _alpm_filecache_find(d->filename);
+
+ if(!fname) {
+ sum += d->size;
+ }
+
+ FREE(fname);
+
+ dlts = alpm_list_next(dlts);
+ }
+
+ return(sum);
+}
+
+/** Calculates the shortest path from one version to another.
+ *
+ * The shortest path is defined as the path with the smallest combined
+ * size, not the length of the path.
+ *
+ * The algorithm is based on Dijkstra's shortest path algorithm.
+ *
+ * @param deltas the list of pmdelta_t * objects that a package has
+ * @param from the version to start from
+ * @param to the version to end at
+ * @param path the current path
+ *
+ * @return the list of pmdelta_t * objects that has the smallest size.
+ * NULL (the empty list) is returned if there is no path between the
+ * versions.
+ */
+static alpm_list_t *shortest_delta_path(alpm_list_t *deltas,
+ const char *from, const char *to, alpm_list_t *path)
+{
+ alpm_list_t *d;
+ alpm_list_t *shortest = NULL;
+
+ /* Found the 'to' version, this is a good path so return it. */
+ if(strcmp(from, to) == 0) {
+ return(path);
+ }
+
+ for(d = deltas; d; d = alpm_list_next(d)) {
+ pmdelta_t *v = alpm_list_getdata(d);
+
+ /* If this vertex has already been visited in the path, go to the
+ * next vertex. */
+ if(alpm_list_find_ptr(path, v))
+ continue;
+
+ /* Once we find a vertex that starts at the 'from' version,
+ * recursively find the shortest path using the 'to' version of this
+ * current vertex as the 'from' version in the function call. */
+ if(strcmp(v->from, from) == 0) {
+ alpm_list_t *newpath = alpm_list_copy(path);
+ alpm_list_free(path);
+ newpath = alpm_list_add(newpath, v);
+ newpath = shortest_delta_path(deltas, v->to, to, newpath);
+
+ if(newpath != NULL) {
+ /* The path returned works, now use it unless there is already a
+ * shorter path found. */
+ if(shortest == NULL) {
+ shortest = newpath;
+ } else if(_alpm_delta_path_size(shortest) > _alpm_delta_path_size(newpath)) {
+ alpm_list_free(shortest);
+ shortest = newpath;
+ } else {
+ alpm_list_free(newpath);
+ }
+ }
+ }
+ }
+
+ return(shortest);
+}
+
+/** Calculates the shortest path from one version to another.
+ *
+ * The shortest path is defined as the path with the smallest combined
+ * size, not the length of the path.
+ *
+ * @param deltas the list of pmdelta_t * objects that a package has
+ * @param from the version to start from
+ * @param to the version to end at
+ *
+ * @return the list of pmdelta_t * objects that has the smallest size.
+ * NULL (the empty list) is returned if there is no path between the
+ * versions.
+ */
+alpm_list_t *_alpm_shortest_delta_path(alpm_list_t *deltas, const char *from,
+ const char *to)
+{
+ alpm_list_t *path = NULL;
+
+ path = shortest_delta_path(deltas, from, to, path);
+
+ return(path);
+}
+
+/** Parses the string representation of a pmdelta_t object.
+ *
+ * This function assumes that the string is in the correct format.
+ *
+ * @param line the string to parse
+ *
+ * @return A pointer to the new pmdelta_t object
+ */
+pmdelta_t *_alpm_delta_parse(char *line)
+{
+ pmdelta_t *delta;
+ char *tmp = line, *tmp2;
+
+ CALLOC(delta, 1, sizeof(pmdelta_t), RET_ERR(PM_ERR_MEMORY, NULL));
+
+ tmp2 = tmp;
+ tmp = strchr(tmp, ' ');
+ *(tmp++) = '\0';
+ strncpy(delta->from, tmp2, DLT_VERSION_LEN);
+
+ tmp2 = tmp;
+ tmp = strchr(tmp, ' ');
+ *(tmp++) = '\0';
+ strncpy(delta->to, tmp2, DLT_VERSION_LEN);
+
+ tmp2 = tmp;
+ tmp = strchr(tmp, ' ');
+ *(tmp++) = '\0';
+ delta->size = atol(tmp2);
+
+ tmp2 = tmp;
+ tmp = strchr(tmp, ' ');
+ *(tmp++) = '\0';
+ strncpy(delta->filename, tmp2, DLT_FILENAME_LEN);
+
+ strncpy(delta->md5sum, tmp, DLT_MD5SUM_LEN);
+
+ return(delta);
+}
+
+/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/upgrade.c b/lib/libalpm/delta.h
index a4c94bb7..d2dd361f 100644
--- a/src/pacman/upgrade.c
+++ b/lib/libalpm/delta.h
@@ -1,8 +1,8 @@
/*
- * upgrade.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ * delta.h
+ *
+ * Copyright (c) 2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,31 +15,31 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
+#ifndef _ALPM_DELTA_H
+#define _ALPM_DELTA_H
-#include "config.h"
-
-#include <stdlib.h>
-
-#include <alpm.h>
-#include <alpm_list.h>
+#include "alpm.h"
-/* pacman */
-#include "upgrade.h"
-#include "add.h"
-#include "conf.h"
+#define DLT_FILENAME_LEN 512
+#define DLT_VERSION_LEN 64
+#define DLT_MD5SUM_LEN 33
-extern config_t *config;
+struct __pmdelta_t {
+ char from[DLT_VERSION_LEN];
+ char to[DLT_VERSION_LEN];
+ unsigned long size;
+ char filename[DLT_FILENAME_LEN];
+ char md5sum[DLT_MD5SUM_LEN];
+};
-int pacman_upgrade(alpm_list_t *targets)
-{
- /* this is basically just a remove-then-add process. pacman_add() will */
- /* handle it */
- config->upgrade = 1;
- return(pacman_add(targets));
-}
+unsigned long _alpm_delta_path_size(alpm_list_t *deltas);
+unsigned long _alpm_delta_path_size_uncached(alpm_list_t *deltas);
+pmdelta_t *_alpm_delta_parse(char *line);
+alpm_list_t *_alpm_shortest_delta_path(alpm_list_t *deltas, const char *from, const char *to);
+#endif /* _ALPM_DELTA_H */
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c
index 9295fabe..7529ec98 100644
--- a/lib/libalpm/deps.c
+++ b/lib/libalpm/deps.c
@@ -1,10 +1,10 @@
/*
* deps.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -17,7 +17,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -26,11 +26,6 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#ifdef __sun__
-#include <strings.h>
-#endif
-#include <libintl.h>
-#include <math.h>
/* libalpm */
#include "deps.h"
@@ -41,32 +36,45 @@
#include "package.h"
#include "db.h"
#include "cache.h"
-#include "provide.h"
-#include "versioncmp.h"
#include "handle.h"
-extern pmhandle_t *handle;
+static pmgraph_t *_alpm_graph_new(void)
+{
+ pmgraph_t *graph = NULL;
+
+ MALLOC(graph, sizeof(pmgraph_t), RET_ERR(PM_ERR_MEMORY, NULL));
+
+ if(graph) {
+ graph->state = 0;
+ graph->data = NULL;
+ graph->parent = NULL;
+ graph->children = NULL;
+ graph->childptr = NULL;
+ }
+ return(graph);
+}
+
+static void _alpm_graph_free(void *data)
+{
+ pmgraph_t *graph = data;
+ alpm_list_free(graph->children);
+ free(graph);
+}
-pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdeptype_t type,
- pmdepmod_t depmod, const char *depname,
- const char *depversion)
+pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdepmod_t depmod,
+ const char *depname, const char *depversion)
{
pmdepmissing_t *miss;
ALPM_LOG_FUNC;
- miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t));
- if(miss == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(pmdepmissing_t));
- RET_ERR(PM_ERR_MEMORY, NULL);
- }
+ MALLOC(miss, sizeof(pmdepmissing_t), RET_ERR(PM_ERR_MEMORY, NULL));
- STRNCPY(miss->target, target, PKG_NAME_LEN);
- miss->type = type;
+ strncpy(miss->target, target, PKG_NAME_LEN);
miss->depend.mod = depmod;
- STRNCPY(miss->depend.name, depname, PKG_NAME_LEN);
+ strncpy(miss->depend.name, depname, PKG_NAME_LEN);
if(depversion) {
- STRNCPY(miss->depend.version, depversion, PKG_VERSION_LEN);
+ strncpy(miss->depend.version, depversion, PKG_VERSION_LEN);
} else {
miss->depend.version[0] = 0;
}
@@ -74,21 +82,43 @@ pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdeptype_t type,
return(miss);
}
-int _alpm_depmiss_isin(pmdepmissing_t *needle, alpm_list_t *haystack)
+/* Convert a list of pmpkg_t * to a graph structure,
+ * with a edge for each dependency.
+ * Returns a list of vertices (one vertex = one package)
+ * (used by alpm_sortbydeps)
+ */
+static alpm_list_t *_alpm_graph_init(alpm_list_t *targets)
{
- alpm_list_t *i;
-
- ALPM_LOG_FUNC;
+ alpm_list_t *i, *j, *k;
+ alpm_list_t *vertices = NULL;
+ /* We create the vertices */
+ for(i = targets; i; i = i->next) {
+ pmgraph_t *vertex = _alpm_graph_new();
+ vertex->data = (void *)i->data;
+ vertices = alpm_list_add(vertices, vertex);
+ }
- for(i = haystack; i; i = i->next) {
- pmdepmissing_t *miss = i->data;
- if(!memcmp(needle, miss, sizeof(pmdepmissing_t))
- && !memcmp(&needle->depend, &miss->depend, sizeof(pmdepend_t))) {
- return(1);
+ /* We compute the edges */
+ for(i = vertices; i; i = i->next) {
+ pmgraph_t *vertex_i = i->data;
+ pmpkg_t *p_i = vertex_i->data;
+ /* TODO this should be somehow combined with alpm_checkdeps */
+ for(j = vertices; j; j = j->next) {
+ pmgraph_t *vertex_j = j->data;
+ pmpkg_t *p_j = vertex_j->data;
+ int child = 0;
+ for(k = alpm_pkg_get_depends(p_i); k && !child; k = k->next) {
+ pmdepend_t *depend = k->data;
+ child = alpm_depcmp(p_j, depend);
+ }
+ if(child) {
+ vertex_i->children =
+ alpm_list_add(vertex_i->children, vertex_j);
+ }
}
+ vertex_i->childptr = vertex_i->children;
}
-
- return(0);
+ return(vertices);
}
/* Re-order a list of target packages with respect to their dependencies.
@@ -99,21 +129,19 @@ int _alpm_depmiss_isin(pmdepmissing_t *needle, alpm_list_t *haystack)
* Target order is A,B,C,D
*
* Should be re-ordered to C,A,B,D
- *
+ *
* mode should be either PM_TRANS_TYPE_ADD or PM_TRANS_TYPE_REMOVE. This
* affects the dependency order sortbydeps() will use.
*
* This function returns the new alpm_list_t* target list.
*
- */
+ */
alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode)
{
alpm_list_t *newtargs = NULL;
- alpm_list_t *i, *j, *k, *l;
- int change = 1;
- int numscans = 0;
- int numtargs = 0;
- int maxscans;
+ alpm_list_t *vertices = NULL;
+ alpm_list_t *vptr;
+ pmgraph_t *vertex;
ALPM_LOG_FUNC;
@@ -121,90 +149,86 @@ alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode)
return(NULL);
}
- for(i = targets; i; i = i->next) {
- newtargs = alpm_list_add(newtargs, i->data);
- numtargs++;
- }
+ _alpm_log(PM_LOG_DEBUG, "started sorting dependencies\n");
- maxscans = (int)sqrt(numtargs);
+ vertices = _alpm_graph_init(targets);
- _alpm_log(PM_LOG_DEBUG, _("started sorting dependencies"));
- while(change) {
- alpm_list_t *tmptargs = NULL;
- change = 0;
- if(numscans > maxscans) {
- _alpm_log(PM_LOG_DEBUG, _("possible dependency cycle detected"));
- continue;
- }
- numscans++;
- /* run thru targets, moving up packages as necessary */
- for(i = newtargs; i; i = i->next) {
- pmpkg_t *p = i->data;
- _alpm_log(PM_LOG_DEBUG, " sorting %s", alpm_pkg_get_name(p));
- for(j = alpm_pkg_get_depends(p); j; j = j->next) {
- pmdepend_t *depend = alpm_splitdep(j->data);
- pmpkg_t *q = NULL;
- if(depend == NULL) {
- continue;
- }
- /* look for depend->name -- if it's farther down in the list, then
- * move it up above p
- */
- for(k = i->next; k; k = k->next) {
- q = k->data;
- const char *qname = alpm_pkg_get_name(q);
- if(!strcmp(depend->name, qname)) {
- if(!_alpm_pkg_find(qname, tmptargs)) {
- change = 1;
- tmptargs = alpm_list_add(tmptargs, q);
- }
- break;
- }
- for(l = alpm_pkg_get_provides(q); l; l = l->next) {
- const char *provname = l->data;
- if(!strcmp(depend->name, provname)) {
- if(!_alpm_pkg_find(qname, tmptargs)) {
- change = 1;
- tmptargs = alpm_list_add(tmptargs, q);
- }
- break;
- }
- }
+ vptr = vertices;
+ vertex = vertices->data;
+ while(vptr) {
+ /* mark that we touched the vertex */
+ vertex->state = -1;
+ int found = 0;
+ while(vertex->childptr && !found) {
+ pmgraph_t *nextchild = (vertex->childptr)->data;
+ vertex->childptr = (vertex->childptr)->next;
+ if (nextchild->state == 0) {
+ found = 1;
+ nextchild->parent = vertex;
+ vertex = nextchild;
+ }
+ else if(nextchild->state == -1) {
+ pmpkg_t *vertexpkg = vertex->data;
+ pmpkg_t *childpkg = nextchild->data;
+ _alpm_log(PM_LOG_WARNING, _("dependency cycle detected:\n"));
+ if(mode == PM_TRANS_TYPE_REMOVE) {
+ _alpm_log(PM_LOG_WARNING, _("%s will be removed after its %s dependency\n"), vertexpkg->name, childpkg->name);
+ } else {
+ _alpm_log(PM_LOG_WARNING, _("%s will be installed before its %s dependency\n"), vertexpkg->name, childpkg->name);
}
- free(depend);
}
- if(!_alpm_pkg_find(alpm_pkg_get_name(p), tmptargs)) {
- tmptargs = alpm_list_add(tmptargs, p);
+ }
+ if(!found) {
+ newtargs = alpm_list_add(newtargs, vertex->data);
+ /* mark that we've left this vertex */
+ vertex->state = 1;
+ vertex = vertex->parent;
+ if(!vertex) {
+ vptr = vptr->next;
+ while(vptr) {
+ vertex = vptr->data;
+ if (vertex->state == 0) break;
+ vptr = vptr->next;
+ }
}
}
- FREELISTPTR(newtargs);
- newtargs = tmptargs;
}
- _alpm_log(PM_LOG_DEBUG, _("sorting dependencies finished"));
+
+ _alpm_log(PM_LOG_DEBUG, "sorting dependencies finished\n");
if(mode == PM_TRANS_TYPE_REMOVE) {
/* we're removing packages, so reverse the order */
alpm_list_t *tmptargs = alpm_list_reverse(newtargs);
/* free the old one */
- FREELISTPTR(newtargs);
+ alpm_list_free(newtargs);
newtargs = tmptargs;
}
+ alpm_list_free_inner(vertices, _alpm_graph_free);
+ alpm_list_free(vertices);
+
return(newtargs);
}
-/** Checks dependencies and returns missing ones in a list. Dependencies can include versions with depmod operators.
- * @param trans pointer to the transaction object
+/* Little helper function for alpm_list_find */
+static int satisfycmp(const void *pkg, const void *depend)
+{
+ return(!alpm_depcmp((pmpkg_t*) pkg, (pmdepend_t*) depend));
+}
+
+/** Checks dependencies and returns missing ones in a list.
+ * Dependencies can include versions with depmod operators.
* @param db pointer to the local package database
- * @param op transaction type
- * @param packages an alpm_list_t* of packages to be checked
- * @return an alpm_list_t* of missing_t pointers.
+ * @param reversedeps handles the backward dependencies
+ * @param remove an alpm_list_t* of packages to be removed
+ * @param upgrade an alpm_list_t* of packages to be upgraded (remove-then-upgrade)
+ * @return an alpm_list_t* of pmpkg_t* of missing_t pointers.
*/
-alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
- alpm_list_t *packages)
+alpm_list_t SYMEXPORT *alpm_checkdeps(pmdb_t *db, int reversedeps,
+ alpm_list_t *remove, alpm_list_t *upgrade)
{
- alpm_list_t *i, *j, *k, *l;
- int found = 0;
+ alpm_list_t *i, *j;
+ alpm_list_t *joined, *dblist;
alpm_list_t *baddeps = NULL;
pmdepmissing_t *miss = NULL;
@@ -214,376 +238,271 @@ alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
return(NULL);
}
- if(op == PM_TRANS_TYPE_UPGRADE) {
- /* PM_TRANS_TYPE_UPGRADE handles the backwards dependencies, ie, the packages
- * listed in the requiredby field.
- */
- for(i = packages; i; i = i->next) {
- pmpkg_t *newpkg = i->data;
- pmpkg_t *oldpkg;
- if(newpkg == NULL) {
- _alpm_log(PM_LOG_DEBUG, _("null package found in package list"));
- continue;
+ joined = alpm_list_join(alpm_list_copy(remove), alpm_list_copy(upgrade));
+ dblist = alpm_list_diff(_alpm_db_get_pkgcache(db), joined, _alpm_pkg_cmp);
+ alpm_list_free(joined);
+
+ /* look for unsatisfied dependencies of the upgrade list */
+ for(i = upgrade; i; i = i->next) {
+ pmpkg_t *tp = i->data;
+ _alpm_log(PM_LOG_DEBUG, "checkdeps: package %s-%s\n",
+ alpm_pkg_get_name(tp), alpm_pkg_get_version(tp));
+
+ for(j = alpm_pkg_get_depends(tp); j; j = j->next) {
+ pmdepend_t *depend = j->data;
+ /* 1. we check the upgrade list */
+ /* 2. we check database for untouched satisfying packages */
+ if(!alpm_list_find(upgrade, depend, satisfycmp) &&
+ !alpm_list_find(dblist, depend, satisfycmp)) {
+ /* Unsatisfied dependency in the upgrade list */
+ char *missdepstring = alpm_dep_get_string(depend);
+ _alpm_log(PM_LOG_DEBUG, "checkdeps: missing dependency '%s' for package '%s'\n",
+ missdepstring, alpm_pkg_get_name(tp));
+ free(missdepstring);
+ miss = _alpm_depmiss_new(alpm_pkg_get_name(tp), depend->mod,
+ depend->name, depend->version);
+ baddeps = alpm_list_add(baddeps, miss);
}
+ }
+ }
- if((oldpkg = _alpm_db_get_pkgfromcache(db, alpm_pkg_get_name(newpkg))) == NULL) {
- _alpm_log(PM_LOG_DEBUG, _("cannot find package installed '%s'"),
- alpm_pkg_get_name(newpkg));
- continue;
- }
- for(j = alpm_pkg_get_requiredby(oldpkg); j; j = j->next) {
- pmpkg_t *p;
- found = 0;
- if((p = _alpm_db_get_pkgfromcache(db, j->data)) == NULL) {
- /* hmmm... package isn't installed.. */
- continue;
- }
- if(_alpm_pkg_find(alpm_pkg_get_name(p), packages)) {
- /* this package also in the upgrade list, so don't worry about it */
- continue;
- }
- for(k = alpm_pkg_get_depends(p); k; k = k->next) {
- /* don't break any existing dependencies (possible provides) */
- pmdepend_t *depend = alpm_splitdep(k->data);
- if(depend == NULL) {
- continue;
- }
-
- /* if oldpkg satisfied this dep, and newpkg doesn't */
- if(alpm_depcmp(oldpkg, depend) && !alpm_depcmp(newpkg, depend)) {
- /* we've found a dep that was removed... see if any other package
- * still contains/provides the dep */
- int satisfied = 0;
- for(l = packages; l; l = l->next) {
- pmpkg_t *pkg = l->data;
-
- if(alpm_depcmp(pkg, depend)) {
- _alpm_log(PM_LOG_DEBUG, _("checkdeps: dependency '%s' has moved from '%s' to '%s'"),
- depend->name, alpm_pkg_get_name(oldpkg), alpm_pkg_get_name(pkg));
- satisfied = 1;
- break;
- }
- }
-
- if(!satisfied) {
- /* worst case... check installed packages to see if anything else
- * satisfies this... */
- for(l = _alpm_db_get_pkgcache(db); l; l = l->next) {
- pmpkg_t *pkg = l->data;
-
- if(strcmp(alpm_pkg_get_name(pkg), alpm_pkg_get_name(oldpkg)) == 0) {
- /* well, we know this one succeeds, but we're removing it... skip it */
- continue;
- }
-
- if(alpm_depcmp(pkg, depend)) {
- _alpm_log(PM_LOG_DEBUG, _("checkdeps: dependency '%s' satisfied by installed package '%s'"),
- depend->name, alpm_pkg_get_name(pkg));
- satisfied = 1;
- break;
- }
- }
- }
-
- if(!satisfied) {
- _alpm_log(PM_LOG_DEBUG, _("checkdeps: updated '%s' won't satisfy a dependency of '%s'"),
- alpm_pkg_get_name(oldpkg), alpm_pkg_get_name(p));
- miss = _alpm_depmiss_new(p->name, PM_DEP_TYPE_DEPEND, depend->mod,
- depend->name, depend->version);
- if(!_alpm_depmiss_isin(miss, baddeps)) {
- baddeps = alpm_list_add(baddeps, miss);
- } else {
- FREE(miss);
- }
- }
- }
- free(depend);
+ if(reversedeps) {
+ /* reversedeps handles the backwards dependencies, ie,
+ * the packages listed in the requiredby field. */
+
+ alpm_list_t *modified = alpm_list_diff(_alpm_db_get_pkgcache(db), dblist, _alpm_pkg_cmp);
+
+ for(i = dblist; i; i = i->next) {
+ pmpkg_t *lp = i->data;
+ for(j = alpm_pkg_get_depends(lp); j; j = j->next) {
+ pmdepend_t *depend = j->data;
+ /* we won't break this depend, if it is already broken, we ignore it */
+ /* 1. check upgrade list for satisfiers */
+ /* 2. check dblist for satisfiers */
+ if(alpm_list_find(modified, depend, satisfycmp) &&
+ !alpm_list_find(upgrade, depend, satisfycmp) &&
+ !alpm_list_find(dblist, depend, satisfycmp)) {
+ char *missdepstring = alpm_dep_get_string(depend);
+ _alpm_log(PM_LOG_DEBUG, "checkdeps: transaction would break '%s' dependency of '%s'\n",
+ missdepstring, alpm_pkg_get_name(lp));
+ free(missdepstring);
+ miss = _alpm_depmiss_new(lp->name, depend->mod,
+ depend->name, depend->version);
+ baddeps = alpm_list_add(baddeps, miss);
}
}
}
+ alpm_list_free(modified);
}
- if(op == PM_TRANS_TYPE_ADD || op == PM_TRANS_TYPE_UPGRADE) {
- /* DEPENDENCIES -- look for unsatisfied dependencies */
- for(i = packages; i; i = i->next) {
- pmpkg_t *tp = i->data;
- if(tp == NULL) {
- _alpm_log(PM_LOG_DEBUG, _("null package found in package list"));
- continue;
- }
+ alpm_list_free(dblist);
- for(j = alpm_pkg_get_depends(tp); j; j = j->next) {
- /* split into name/version pairs */
- pmdepend_t *depend = alpm_splitdep((char*)j->data);
- if(depend == NULL) {
- continue;
- }
-
- found = 0;
- /* check database for literal packages */
- for(k = _alpm_db_get_pkgcache(db); k && !found; k = k->next) {
- pmpkg_t *p = (pmpkg_t *)k->data;
- found = alpm_depcmp(p, depend);
- }
- /* check database for provides matches */
- if(!found) {
- alpm_list_t *m;
- for(m = _alpm_db_whatprovides(db, depend->name); m && !found; m = m->next) {
- /* look for a match that isn't one of the packages we're trying
- * to install. this way, if we match against a to-be-installed
- * package, we'll defer to the NEW one, not the one already
- * installed. */
- pmpkg_t *p = m->data;
- alpm_list_t *n;
- int skip = 0;
- for(n = packages; n && !skip; n = n->next) {
- pmpkg_t *ptp = n->data;
- if(strcmp(alpm_pkg_get_name(ptp), alpm_pkg_get_name(p)) == 0) {
- skip = 1;
- }
- }
- if(skip) {
- continue;
- }
-
- found = alpm_depcmp(p, depend);
- }
- FREELISTPTR(k);
- }
- /* check other targets */
- for(k = packages; k && !found; k = k->next) {
- pmpkg_t *p = k->data;
- found = alpm_depcmp(p, depend);
- }
- /* else if still not found... */
- if(!found) {
- _alpm_log(PM_LOG_DEBUG, _("missing dependency '%s' for package '%s'"),
- depend->name, alpm_pkg_get_name(tp));
- miss = _alpm_depmiss_new(alpm_pkg_get_name(tp), PM_DEP_TYPE_DEPEND, depend->mod,
- depend->name, depend->version);
- if(!_alpm_depmiss_isin(miss, baddeps)) {
- baddeps = alpm_list_add(baddeps, miss);
- } else {
- FREE(miss);
- }
- }
- free(depend);
- }
+ return(baddeps);
+}
+
+static int dep_vercmp(const char *version1, pmdepmod_t mod,
+ const char *version2)
+{
+ int equal = 0;
+
+ if(mod == PM_DEP_MOD_ANY) {
+ equal = 1;
+ } else {
+ int cmp = _alpm_versioncmp(version1, version2);
+ switch(mod) {
+ case PM_DEP_MOD_EQ: equal = (cmp == 0); break;
+ case PM_DEP_MOD_GE: equal = (cmp >= 0); break;
+ case PM_DEP_MOD_LE: equal = (cmp <= 0); break;
+ default: equal = 1; break;
}
- } else if(op == PM_TRANS_TYPE_REMOVE) {
- /* check requiredby fields */
- for(i = packages; i; i = i->next) {
- pmpkg_t *tp = i->data;
- if(tp == NULL) {
- continue;
- }
+ }
+ return(equal);
+}
- found=0;
- for(j = alpm_pkg_get_requiredby(tp); j; j = j->next) {
- /* Search for 'reqname' in packages for removal */
- char *reqname = j->data;
- alpm_list_t *x = NULL;
- for(x = packages; x; x = x->next) {
- pmpkg_t *xp = x->data;
- if(strcmp(reqname, alpm_pkg_get_name(xp)) == 0) {
- found = 1;
- break;
- }
- }
- if(!found) {
- /* check if a package in trans->packages provides this package */
- for(k = trans->packages; !found && k; k=k->next) {
- pmpkg_t *spkg = NULL;
- if(trans->type == PM_TRANS_TYPE_SYNC) {
- pmsyncpkg_t *sync = k->data;
- spkg = sync->pkg;
- } else {
- spkg = k->data;
- }
- if(spkg) {
- if(alpm_list_find_str(alpm_pkg_get_provides(spkg), tp->name)) {
- found = 1;
- }
- }
- }
- if(!found) {
- _alpm_log(PM_LOG_DEBUG, _("checkdeps: found %s as required by %s"),
- reqname, alpm_pkg_get_name(tp));
- miss = _alpm_depmiss_new(alpm_pkg_get_name(tp), PM_DEP_TYPE_DEPEND,
- PM_DEP_MOD_ANY, j->data, NULL);
- if(!_alpm_depmiss_isin(miss, baddeps)) {
- baddeps = alpm_list_add(baddeps, miss);
- } else {
- FREE(miss);
- }
- }
- }
- }
+int SYMEXPORT alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep)
+{
+ alpm_list_t *i;
+
+ ALPM_LOG_FUNC;
+
+ const char *pkgname = alpm_pkg_get_name(pkg);
+ const char *pkgversion = alpm_pkg_get_version(pkg);
+ int satisfy = 0;
+
+ /* check (pkg->name, pkg->version) */
+ satisfy = (strcmp(pkgname, dep->name) == 0
+ && dep_vercmp(pkgversion, dep->mod, dep->version));
+
+ /* check provisions, format : "name version" */
+ for(i = alpm_pkg_get_provides(pkg); i && !satisfy; i = i->next) {
+ char *provname = strdup(i->data);
+ char *provver = strchr(provname, ' ');
+
+ if(provver == NULL) { /* no provision version */
+ satisfy = (dep->mod == PM_DEP_MOD_ANY
+ && strcmp(provname, dep->name) == 0);
+ } else {
+ /* replace the space with a NULL byte, and advance ptr the version */
+ *provver = '\0';
+ provver += 1;
+ satisfy = (strcmp(provname, dep->name) == 0
+ && dep_vercmp(provver, dep->mod, dep->version));
}
+ free(provname);
}
- return(baddeps);
+ return(satisfy);
}
pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring)
{
pmdepend_t *depend;
char *ptr = NULL;
+ char *newstr = NULL;
if(depstring == NULL) {
return(NULL);
}
-
- depend = (pmdepend_t *)malloc(sizeof(pmdepend_t));
- if(depend == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(pmdepend_t));
- return(NULL);
- }
+ newstr = strdup(depstring);
+
+ MALLOC(depend, sizeof(pmdepend_t), return(NULL));
/* Find a version comparator if one exists. If it does, set the type and
* increment the ptr accordingly so we can copy the right strings. */
- if((ptr = strstr(depstring, ">="))) {
+ if((ptr = strstr(newstr, ">="))) {
depend->mod = PM_DEP_MOD_GE;
*ptr = '\0';
ptr += 2;
- } else if((ptr = strstr(depstring, "<="))) {
+ } else if((ptr = strstr(newstr, "<="))) {
depend->mod = PM_DEP_MOD_LE;
*ptr = '\0';
ptr += 2;
- } else if((ptr = strstr(depstring, "="))) {
+ } else if((ptr = strstr(newstr, "="))) {
depend->mod = PM_DEP_MOD_EQ;
*ptr = '\0';
ptr += 1;
} else {
/* no version specified - copy in the name and return it */
depend->mod = PM_DEP_MOD_ANY;
- strncpy(depend->name, depstring, PKG_NAME_LEN);
+ strncpy(depend->name, newstr, PKG_NAME_LEN);
depend->version[0] = '\0';
+ free(newstr);
return(depend);
}
/* if we get here, we have a version comparator, copy the right parts
* to the right places */
- strncpy(depend->name, depstring, PKG_NAME_LEN);
+ strncpy(depend->name, newstr, PKG_NAME_LEN);
strncpy(depend->version, ptr, PKG_VERSION_LEN);
+ free(newstr);
return(depend);
}
-/* These parameters are messy. We check if this package, given a list of
- * targets (and a db), is safe to remove. We do NOT remove it if it is in the
- * target list */
-static int can_remove_package(pmdb_t *db, pmpkg_t *pkg, alpm_list_t *targets)
+/* These parameters are messy. We check if this package, given a list of
+ * targets and a db is safe to remove. We do NOT remove it if it is in the
+ * target list, or if if the package was explictly installed and
+ * include_explicit == 0 */
+static int can_remove_package(pmdb_t *db, pmpkg_t *pkg, alpm_list_t *targets,
+ int include_explicit)
{
- alpm_list_t *i;
+ alpm_list_t *i, *requiredby;
if(_alpm_pkg_find(alpm_pkg_get_name(pkg), targets)) {
return(0);
}
- /* see if it was explicitly installed */
- if(alpm_pkg_get_reason(pkg) == PM_PKG_REASON_EXPLICIT) {
- _alpm_log(PM_LOG_DEBUG, _("excluding %s -- explicitly installed"), alpm_pkg_get_name(pkg));
- return(0);
+ if(!include_explicit) {
+ /* see if it was explicitly installed */
+ if(alpm_pkg_get_reason(pkg) == PM_PKG_REASON_EXPLICIT) {
+ _alpm_log(PM_LOG_DEBUG, "excluding %s -- explicitly installed\n",
+ alpm_pkg_get_name(pkg));
+ return(0);
+ }
}
+ /* TODO: checkdeps could be used here, it handles multiple providers
+ * better, but that also makes it slower.
+ * Also this would require to first add the package to the targets list,
+ * then call checkdeps with it, then remove the package from the targets list
+ * if checkdeps detected it would break something */
+
/* see if other packages need it */
- for(i = alpm_pkg_get_requiredby(pkg); i; i = i->next) {
+ requiredby = alpm_pkg_compute_requiredby(pkg);
+ for(i = requiredby; i; i = i->next) {
pmpkg_t *reqpkg = _alpm_db_get_pkgfromcache(db, i->data);
if(reqpkg && !_alpm_pkg_find(alpm_pkg_get_name(reqpkg), targets)) {
+ FREELIST(requiredby);
return(0);
}
}
+ FREELIST(requiredby);
/* it's ok to remove */
return(1);
}
-/* return a new alpm_list_t target list containing all packages in the original
- * target list, as well as all their un-needed dependencies. By un-needed,
- * I mean dependencies that are *only* required for packages in the target
- * list, so they can be safely removed. This function is recursive.
+/**
+ * @brief Adds unneeded dependencies to an existing list of packages.
+ * By unneeded, we mean dependencies that are only required by packages in the
+ * target list, so they can be safely removed.
+ * If the input list was topo sorted, the output list will be topo sorted too.
+ *
+ * @param db package database to do dependency tracing in
+ * @param *targs pointer to a list of packages
+ * @param include_explicit if 0, explicitly installed packages are not included
*/
-alpm_list_t *_alpm_removedeps(pmdb_t *db, alpm_list_t *targs)
+void _alpm_recursedeps(pmdb_t *db, alpm_list_t *targs, int include_explicit)
{
alpm_list_t *i, *j, *k;
- alpm_list_t *newtargs = targs;
ALPM_LOG_FUNC;
- if(db == NULL) {
- return(newtargs);
+ if(db == NULL || targs == NULL) {
+ return;
}
for(i = targs; i; i = i->next) {
pmpkg_t *pkg = i->data;
for(j = alpm_pkg_get_depends(pkg); j; j = j->next) {
- pmdepend_t *depend = alpm_splitdep(j->data);
- pmpkg_t *deppkg;
- if(depend == NULL) {
- continue;
- }
-
- deppkg = _alpm_db_get_pkgfromcache(db, depend->name);
- if(deppkg == NULL) {
- /* package not found... look for a provision instead */
- alpm_list_t *provides = _alpm_db_whatprovides(db, depend->name);
- if(!provides) {
- /* Not found, that's fine, carry on */
- _alpm_log(PM_LOG_DEBUG, _("cannot find package \"%s\" or anything that provides it!"), depend->name);
- continue;
- }
- for(k = provides; k; k = k->next) {
- pmpkg_t *provpkg = k->data;
- if(can_remove_package(db, provpkg, newtargs)) {
- pmpkg_t *pkg = _alpm_pkg_dup(provpkg);
-
- _alpm_log(PM_LOG_DEBUG, _("adding '%s' to the targets"), alpm_pkg_get_name(pkg));
-
+ pmdepend_t *depend = j->data;
+
+ for(k = _alpm_db_get_pkgcache(db); k; k = k->next) {
+ pmpkg_t *deppkg = k->data;
+ if(alpm_depcmp(deppkg,depend)
+ && can_remove_package(db, deppkg, targs, include_explicit)) {
+ _alpm_log(PM_LOG_DEBUG, "adding '%s' to the targets\n",
+ alpm_pkg_get_name(deppkg));
/* add it to the target list */
- newtargs = alpm_list_add(newtargs, pkg);
- newtargs = _alpm_removedeps(db, newtargs);
- }
+ targs = alpm_list_add(targs, _alpm_pkg_dup(deppkg));
}
- FREELISTPTR(provides);
- } else if(can_remove_package(db, deppkg, newtargs)) {
- pmpkg_t *pkg = _alpm_pkg_dup(deppkg);
-
- _alpm_log(PM_LOG_DEBUG, _("adding '%s' to the targets"), alpm_pkg_get_name(pkg));
-
- /* add it to the target list */
- newtargs = alpm_list_add(newtargs, pkg);
- newtargs = _alpm_removedeps(db, newtargs);
}
- free(depend);
}
}
-
- return(newtargs);
}
/* populates *list with packages that need to be installed to satisfy all
* dependencies (recursive) for syncpkg
*
- * make sure *list and *trail are already initialized
+ * @param remove contains packages elected for removal
+ * make sure **list is already initialized
*/
int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *syncpkg,
- alpm_list_t *list, alpm_list_t *trail, pmtrans_t *trans,
- alpm_list_t **data)
+ alpm_list_t **list, alpm_list_t *remove, pmtrans_t *trans, alpm_list_t **data)
{
- alpm_list_t *i, *j;
+ alpm_list_t *i, *j, *k;
alpm_list_t *targ;
alpm_list_t *deps = NULL;
ALPM_LOG_FUNC;
- if(local == NULL || dbs_sync == NULL || syncpkg == NULL) {
+ if(local == NULL || dbs_sync == NULL || syncpkg == NULL || list == NULL) {
return(-1);
}
- _alpm_log(PM_LOG_DEBUG, _("started resolving dependencies"));
+ _alpm_log(PM_LOG_DEBUG, "started resolving dependencies\n");
targ = alpm_list_add(NULL, syncpkg);
- deps = _alpm_checkdeps(trans, local, PM_TRANS_TYPE_ADD, targ);
- FREELISTPTR(targ);
+ deps = alpm_checkdeps(local, 0, remove, targ);
+ alpm_list_free(targ);
if(deps == NULL) {
return(0);
@@ -592,14 +511,17 @@ int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *syncpkg,
for(i = deps; i; i = i->next) {
int found = 0;
pmdepmissing_t *miss = i->data;
+ pmdepend_t *missdep = &(miss->depend);
pmpkg_t *sync = NULL;
- /* check if one of the packages in *list already provides this dependency */
- for(j = list; j && !found; j = j->next) {
+ /* check if one of the packages in *list already satisfies this dependency */
+ for(j = *list; j && !found; j = j->next) {
pmpkg_t *sp = j->data;
- if(alpm_list_find_str(alpm_pkg_get_provides(sp), miss->depend.name)) {
- _alpm_log(PM_LOG_DEBUG, _("%s provides dependency %s -- skipping"),
- alpm_pkg_get_name(sp), miss->depend.name);
+ if(alpm_depcmp(sp, missdep)) {
+ char *missdepstring = alpm_dep_get_string(missdep);
+ _alpm_log(PM_LOG_DEBUG, "%s satisfies dependency %s -- skipping\n",
+ alpm_pkg_get_name(sp), missdepstring);
+ free(missdepstring);
found = 1;
}
}
@@ -609,31 +531,53 @@ int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *syncpkg,
/* find the package in one of the repositories */
/* check literals */
- for(j = dbs_sync; !sync && j; j = j->next) {
- sync = _alpm_db_get_pkgfromcache(j->data, miss->depend.name);
+ for(j = dbs_sync; j && !found; j = j->next) {
+ sync = _alpm_db_get_pkgfromcache(j->data, missdep->name);
+ if(!sync) {
+ continue;
+ }
+ found = alpm_depcmp(sync, missdep) && !_alpm_pkg_find(alpm_pkg_get_name(sync), remove);
+ if(!found) {
+ continue;
+ }
+ /* If package is in the ignorepkg list, ask before we pull it */
+ if(_alpm_pkg_should_ignore(sync)) {
+ pmpkg_t *dummypkg = _alpm_pkg_new(miss->target, NULL);
+ QUESTION(trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, dummypkg, sync, NULL, &found);
+ _alpm_pkg_free(dummypkg);
+ }
}
- /*TODO this autoresolves the first 'provides' package... we should fix this
+ /*TODO this autoresolves the first 'satisfier' package... we should fix this
* somehow */
/* check provides */
- if(!sync) {
- for(j = dbs_sync; !sync && j; j = j->next) {
- alpm_list_t *provides;
- provides = _alpm_db_whatprovides(j->data, miss->depend.name);
- if(provides) {
- sync = provides->data;
+ for(j = dbs_sync; j && !found; j = j->next) {
+ for(k = _alpm_db_get_pkgcache(j->data); k && !found; k = k->next) {
+ sync = k->data;
+ if(!sync) {
+ continue;
+ }
+ found = alpm_depcmp(sync, missdep) && !_alpm_pkg_find(alpm_pkg_get_name(sync), remove);
+ if(!found) {
+ continue;
+ }
+ if(_alpm_pkg_should_ignore(sync)) {
+ pmpkg_t *dummypkg = _alpm_pkg_new(miss->target, NULL);
+ QUESTION(trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, dummypkg, sync, NULL, &found);
+ _alpm_pkg_free(dummypkg);
}
- FREELISTPTR(provides);
}
}
- if(!sync) {
- _alpm_log(PM_LOG_ERROR, _("cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"),
- miss->target, miss->depend.name);
+ if(!found) {
+ char *missdepstring = alpm_dep_get_string(missdep);
+ _alpm_log(PM_LOG_ERROR, _("cannot resolve \"%s\", a dependency of \"%s\"\n"),
+ missdepstring, miss->target);
+ free(missdepstring);
if(data) {
- if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(pmdepmissing_t));
- FREELIST(*data);
+ MALLOC(miss, sizeof(pmdepmissing_t),/*nothing*/);
+ if(!miss) {
pm_errno = PM_ERR_MEMORY;
+ FREELIST(*data);
goto error;
}
*miss = *(pmdepmissing_t *)i->data;
@@ -641,54 +585,17 @@ int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *syncpkg,
}
pm_errno = PM_ERR_UNSATISFIED_DEPS;
goto error;
- }
- if(_alpm_pkg_find(alpm_pkg_get_name(sync), list)) {
- /* this dep is already in the target list */
- _alpm_log(PM_LOG_DEBUG, _("dependency %s is already in the target list -- skipping"),
- alpm_pkg_get_name(sync));
- continue;
- }
-
- if(!_alpm_pkg_find(alpm_pkg_get_name(sync), trail)) {
- /* check pmo_ignorepkg and pmo_s_ignore to make sure we haven't pulled in
- * something we're not supposed to.
- */
- int usedep = 1;
- if(alpm_list_find_str(handle->ignorepkg, alpm_pkg_get_name(sync))) {
- pmpkg_t *dummypkg = _alpm_pkg_new(miss->target, NULL);
- QUESTION(trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, dummypkg, sync, NULL, &usedep);
- FREEPKG(dummypkg);
- }
- if(usedep) {
- trail = alpm_list_add(trail, sync);
- if(_alpm_resolvedeps(local, dbs_sync, sync, list, trail, trans, data)) {
- goto error;
- }
- _alpm_log(PM_LOG_DEBUG, _("pulling dependency %s (needed by %s)"),
- alpm_pkg_get_name(sync), alpm_pkg_get_name(syncpkg));
- list = alpm_list_add(list, sync);
- } else {
- _alpm_log(PM_LOG_ERROR, _("cannot resolve dependencies for \"%s\""), miss->target);
- if(data) {
- if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(pmdepmissing_t));
- FREELIST(*data);
- pm_errno = PM_ERR_MEMORY;
- goto error;
- }
- *miss = *(pmdepmissing_t *)i->data;
- *data = alpm_list_add(*data, miss);
- }
- pm_errno = PM_ERR_UNSATISFIED_DEPS;
+ } else {
+ _alpm_log(PM_LOG_DEBUG, "pulling dependency %s (needed by %s)\n",
+ alpm_pkg_get_name(sync), alpm_pkg_get_name(syncpkg));
+ *list = alpm_list_add(*list, sync);
+ if(_alpm_resolvedeps(local, dbs_sync, sync, list, remove, trans, data)) {
goto error;
}
- } else {
- /* cycle detected -- skip it */
- _alpm_log(PM_LOG_DEBUG, _("dependency cycle detected: %s"), sync->name);
}
}
-
- _alpm_log(PM_LOG_DEBUG, _("finished resolving dependencies"));
+
+ _alpm_log(PM_LOG_DEBUG, "finished resolving dependencies\n");
FREELIST(deps);
@@ -699,58 +606,95 @@ error:
return(-1);
}
-const char SYMEXPORT *alpm_dep_get_target(pmdepmissing_t *miss)
+const char SYMEXPORT *alpm_miss_get_target(const pmdepmissing_t *miss)
{
ALPM_LOG_FUNC;
/* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
ASSERT(miss != NULL, return(NULL));
return miss->target;
}
-pmdeptype_t SYMEXPORT alpm_dep_get_type(pmdepmissing_t *miss)
+pmdepend_t SYMEXPORT *alpm_miss_get_dep(pmdepmissing_t *miss)
{
ALPM_LOG_FUNC;
/* Sanity checks */
- ASSERT(handle != NULL, return(-1));
- ASSERT(miss != NULL, return(-1));
+ ASSERT(miss != NULL, return(NULL));
- return miss->type;
+ return &(miss->depend);
}
-pmdepmod_t SYMEXPORT alpm_dep_get_mod(pmdepmissing_t *miss)
+pmdepmod_t SYMEXPORT alpm_dep_get_mod(const pmdepend_t *dep)
{
ALPM_LOG_FUNC;
/* Sanity checks */
- ASSERT(handle != NULL, return(-1));
- ASSERT(miss != NULL, return(-1));
+ ASSERT(dep != NULL, return(-1));
- return miss->depend.mod;
+ return dep->mod;
}
-const char SYMEXPORT *alpm_dep_get_name(pmdepmissing_t *miss)
+const char SYMEXPORT *alpm_dep_get_name(const pmdepend_t *dep)
{
ALPM_LOG_FUNC;
/* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(miss != NULL, return(NULL));
+ ASSERT(dep != NULL, return(NULL));
- return miss->depend.name;
+ return dep->name;
}
-const char SYMEXPORT *alpm_dep_get_version(pmdepmissing_t *miss)
+const char SYMEXPORT *alpm_dep_get_version(const pmdepend_t *dep)
{
ALPM_LOG_FUNC;
/* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(miss != NULL, return(NULL));
+ ASSERT(dep != NULL, return(NULL));
+
+ return dep->version;
+}
+
+/** Reverse of splitdep; make a dep string from a pmdepend_t struct.
+ * The string must be freed!
+ * @param dep the depend to turn into a string
+ * @return a string-formatted dependency with operator if necessary
+ */
+char SYMEXPORT *alpm_dep_get_string(const pmdepend_t *dep)
+{
+ char *opr, *str = NULL;
+ size_t len;
+
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(dep != NULL, return(NULL));
+
+ switch(dep->mod) {
+ case PM_DEP_MOD_ANY:
+ opr = "";
+ break;
+ case PM_DEP_MOD_GE:
+ opr = ">=";
+ break;
+ case PM_DEP_MOD_LE:
+ opr = "<=";
+ break;
+ case PM_DEP_MOD_EQ:
+ opr = "=";
+ break;
+ default:
+ opr = "";
+ break;
+ }
+
+ /* we can always compute len and print the string like this because opr
+ * and ver will be empty when PM_DEP_MOD_ANY is the depend type */
+ len = strlen(dep->name) + strlen(opr) + strlen(dep->version) + 1;
+ MALLOC(str, len, RET_ERR(PM_ERR_MEMORY, NULL));
+ snprintf(str, len, "%s%s%s", dep->name, opr, dep->version);
- return miss->depend.version;
+ return(str);
}
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/deps.h b/lib/libalpm/deps.h
index 8f3a9b91..2da39b8b 100644
--- a/lib/libalpm/deps.h
+++ b/lib/libalpm/deps.h
@@ -1,10 +1,10 @@
/*
* deps.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -17,7 +17,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_DEPS_H
@@ -38,21 +38,24 @@ struct __pmdepend_t {
/* Missing dependency */
struct __pmdepmissing_t {
char target[PKG_NAME_LEN];
- pmdeptype_t type;
pmdepend_t depend;
};
-pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdeptype_t type,
- pmdepmod_t depmod, const char *depname,
- const char *depversion);
-int _alpm_depmiss_isin(pmdepmissing_t *needle, alpm_list_t *haystack);
+/* Graphs */
+struct __pmgraph_t {
+ int state; /* 0: untouched, -1: entered, other: leaving time */
+ void *data;
+ struct __pmgraph_t *parent; /* where did we come from? */
+ alpm_list_t *children;
+ alpm_list_t *childptr; /* points to a child in children list */
+};
+
+pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdepmod_t depmod,
+ const char *depname, const char *depversion);
alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode);
-alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
- alpm_list_t *packages);
-alpm_list_t *_alpm_removedeps(pmdb_t *db, alpm_list_t *targs);
+void _alpm_recursedeps(pmdb_t *db, alpm_list_t *targs, int include_explicit);
int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *syncpkg,
- alpm_list_t *list, alpm_list_t *trail, pmtrans_t *trans,
- alpm_list_t **data);
+ alpm_list_t **list, alpm_list_t *remove, pmtrans_t *trans, alpm_list_t **data);
#endif /* _ALPM_DEPS_H */
diff --git a/lib/libalpm/error.c b/lib/libalpm/error.c
index ece8a521..9ced6775 100644
--- a/lib/libalpm/error.c
+++ b/lib/libalpm/error.c
@@ -1,11 +1,11 @@
/*
* error.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -18,21 +18,24 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#include "config.h"
-#include <libintl.h>
-
/* libalpm */
#include "error.h"
#include "util.h"
#include "alpm.h"
/* TODO does this really need a file all on its own? */
-char SYMEXPORT *alpm_strerror(int err)
+const char SYMEXPORT *alpm_strerrorlast(void)
+{
+ return alpm_strerror(pm_errno);
+}
+
+const char SYMEXPORT *alpm_strerror(int err)
{
switch(err) {
/* System */
@@ -44,6 +47,8 @@ char SYMEXPORT *alpm_strerror(int err)
return _("insufficient privileges");
case PM_ERR_NOT_A_FILE:
return _("could not find or read file");
+ case PM_ERR_NOT_A_DIR:
+ return _("could not find or read directory");
case PM_ERR_WRONG_ARGS:
return _("wrong or NULL argument passed");
/* Interface */
@@ -118,6 +123,11 @@ char SYMEXPORT *alpm_strerror(int err)
return _("corrupted package");
case PM_ERR_PKG_REPO_NOT_FOUND:
return _("no such repository");
+ /* Deltas */
+ case PM_ERR_DLT_CORRUPTED:
+ return _("corrupted delta");
+ case PM_ERR_DLT_PATCHFAILED:
+ return _("delta patch failed");
/* Groups */
case PM_ERR_GRP_NOT_FOUND:
return _("group not found");
@@ -135,20 +145,9 @@ char SYMEXPORT *alpm_strerror(int err)
return _("internal error");
case PM_ERR_LIBARCHIVE_ERROR:
return _("libarchive error");
- case PM_ERR_DISK_FULL:
- return _("not enough space on disk");
case PM_ERR_PKG_HOLD:
/* TODO wow this is not descriptive at all... what does this mean? */
return _("not confirmed");
- /* Configuration file */
- case PM_ERR_CONF_BAD_SECTION:
- return _("bad configuration section name");
- case PM_ERR_CONF_LOCAL:
- return _("'local' is reserved and cannot be used as a repository name");
- case PM_ERR_CONF_BAD_SYNTAX:
- return _("syntax error in config file");
- case PM_ERR_CONF_DIRECTIVE_OUTSIDE_SECTION:
- return _("all directives must belong to a section");
case PM_ERR_INVALID_REGEX:
return _("invalid regular expression");
/* Downloading */
diff --git a/lib/libalpm/error.h b/lib/libalpm/error.h
index 6294f05b..7692a944 100644
--- a/lib/libalpm/error.h
+++ b/lib/libalpm/error.h
@@ -1,8 +1,8 @@
/*
* error.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,14 +15,14 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_ERROR_H
#define _ALPM_ERROR_H
#define RET_ERR(err, ret) do { pm_errno = (err); \
- _alpm_log(PM_LOG_DEBUG, _("returning error %d from %s : %s\n"), err, __func__, alpm_strerror(err)); \
+ _alpm_log(PM_LOG_DEBUG, "returning error %d from %s : %s\n", err, __func__, alpm_strerrorlast()); \
return(ret); } while(0)
#endif /* _ALPM_ERROR_H */
diff --git a/lib/libalpm/group.c b/lib/libalpm/group.c
index cce05213..4ad39d6d 100644
--- a/lib/libalpm/group.c
+++ b/lib/libalpm/group.c
@@ -24,7 +24,6 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <libintl.h>
/* libalpm */
#include "group.h"
@@ -40,20 +39,13 @@ pmgrp_t *_alpm_grp_new()
ALPM_LOG_FUNC;
- grp = calloc(1, sizeof(pmgrp_t));
- if(grp == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"),
- sizeof(pmgrp_t));
- RET_ERR(PM_ERR_MEMORY, NULL);
- }
+ CALLOC(grp, 1, sizeof(pmgrp_t), RET_ERR(PM_ERR_MEMORY, NULL));
return(grp);
}
-void _alpm_grp_free(void *data)
+void _alpm_grp_free(pmgrp_t *grp)
{
- pmgrp_t *grp = data;
-
ALPM_LOG_FUNC;
if(grp == NULL) {
@@ -62,8 +54,6 @@ void _alpm_grp_free(void *data)
FREELIST(grp->packages);
FREE(grp);
-
- return;
}
/* Helper function for sorting groups
@@ -76,7 +66,7 @@ int _alpm_grp_cmp(const void *g1, const void *g2)
return(strcmp(grp1->name, grp2->name));
}
-const char SYMEXPORT *alpm_grp_get_name(pmgrp_t *grp)
+const char SYMEXPORT *alpm_grp_get_name(const pmgrp_t *grp)
{
ALPM_LOG_FUNC;
@@ -86,7 +76,7 @@ const char SYMEXPORT *alpm_grp_get_name(pmgrp_t *grp)
return grp->name;
}
-alpm_list_t SYMEXPORT *alpm_grp_get_pkgs(pmgrp_t *grp)
+const alpm_list_t SYMEXPORT *alpm_grp_get_pkgs(const pmgrp_t *grp)
{
ALPM_LOG_FUNC;
diff --git a/lib/libalpm/group.h b/lib/libalpm/group.h
index c5366e64..477e701c 100644
--- a/lib/libalpm/group.h
+++ b/lib/libalpm/group.h
@@ -1,8 +1,8 @@
/*
* group.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_GROUP_H
@@ -31,11 +31,8 @@ struct __pmgrp_t {
alpm_list_t *packages; /* List of strings */
};
-#define FREEGRP(p) do { if(p) { _alpm_grp_free(p); p = NULL; } } while(0)
-#define FREELISTGRPS(p) _FREELIST(p, _alpm_grp_free)
-
pmgrp_t *_alpm_grp_new(void);
-void _alpm_grp_free(void *data);
+void _alpm_grp_free(pmgrp_t *grp);
int _alpm_grp_cmp(const void *g1, const void *g2);
#endif /* _ALPM_GROUP_H */
diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c
index a6bb5bc8..755eefb3 100644
--- a/lib/libalpm/handle.c
+++ b/lib/libalpm/handle.c
@@ -1,10 +1,10 @@
/*
* handle.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -17,7 +17,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -29,8 +29,9 @@
#include <limits.h>
#include <sys/types.h>
#include <syslog.h>
-#include <libintl.h>
#include <time.h>
+#include <sys/stat.h>
+#include <errno.h>
/* libalpm */
#include "handle.h"
@@ -42,62 +43,44 @@
#include "alpm.h"
#include "server.h"
+/* global var for handle (private to libalpm) */
+pmhandle_t *handle = NULL;
+
pmhandle_t *_alpm_handle_new()
{
pmhandle_t *handle;
- handle = (pmhandle_t *)malloc(sizeof(pmhandle_t));
- if(handle == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(pmhandle_t));
- RET_ERR(PM_ERR_MEMORY, NULL);
- }
+ ALPM_LOG_FUNC;
+
+ CALLOC(handle, 1, sizeof(pmhandle_t), RET_ERR(PM_ERR_MEMORY, NULL));
- memset(handle, 0, sizeof(pmhandle_t));
handle->lckfd = -1;
+ handle->logstream = NULL;
-#ifndef CYGWIN
/* see if we're root or not */
handle->uid = geteuid();
-//#ifndef FAKEROOT
-// if(!handle->uid && getenv("FAKEROOTKEY")) {
-// /* fakeroot doesn't count, we're non-root */
-// handle->uid = 99;
-// }
-//#endif
-//
-// /* see if we're root or not (fakeroot does not count) */
-//#ifndef FAKEROOT
-// if(handle->uid == 0 && !getenv("FAKEROOTKEY")) {
-// /* } make vim indent work - stupid ifdef's */
-//#else
-// if(handle->uid == 0) {
-//#endif
-// handle->access = PM_ACCESS_RW;
-// } else {
-// handle->access = PM_ACCESS_RO;
-// }
-//#else
- handle->access = PM_ACCESS_RW;
-#endif
-
- handle->root = strdup(PM_ROOT);
- handle->dbpath = strdup(PM_DBPATH);
- handle->cachedir = strdup(PM_CACHEDIR);
- handle->logmask = PM_LOG_ERROR | PM_LOG_WARNING;
+ handle->root = NULL;
+ handle->dbpath = NULL;
+ handle->cachedirs = NULL;
+ handle->lockfile = NULL;
+ handle->logfile = NULL;
+ handle->usedelta = 0;
return(handle);
}
-int _alpm_handle_free(pmhandle_t *handle)
+void _alpm_handle_free(pmhandle_t *handle)
{
ALPM_LOG_FUNC;
- ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+ if(handle == NULL) {
+ return;
+ }
- /* close logfiles */
- if(handle->logfd) {
- fclose(handle->logfd);
- handle->logfd = NULL;
+ /* close logfile */
+ if(handle->logstream) {
+ fclose(handle->logstream);
+ handle->logstream= NULL;
}
if(handle->usesyslog) {
handle->usesyslog = 0;
@@ -105,197 +88,419 @@ int _alpm_handle_free(pmhandle_t *handle)
}
/* free memory */
- FREETRANS(handle->trans);
+ _alpm_trans_free(handle->trans);
FREE(handle->root);
FREE(handle->dbpath);
- FREE(handle->cachedir);
+ FREELIST(handle->cachedirs);
FREE(handle->logfile);
+ FREE(handle->lockfile);
FREE(handle->xfercommand);
FREELIST(handle->dbs_sync);
FREELIST(handle->noupgrade);
FREELIST(handle->noextract);
FREELIST(handle->ignorepkg);
FREELIST(handle->holdpkg);
+ FREELIST(handle->ignoregrp);
FREE(handle);
+}
- return(0);
+alpm_cb_log SYMEXPORT alpm_option_get_logcb()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->logcb;
+}
+
+alpm_cb_download SYMEXPORT alpm_option_get_dlcb()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->dlcb;
+}
+
+const char SYMEXPORT *alpm_option_get_root()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->root;
+}
+
+const char SYMEXPORT *alpm_option_get_dbpath()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->dbpath;
+}
+
+alpm_list_t SYMEXPORT *alpm_option_get_cachedirs()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->cachedirs;
+}
+
+const char SYMEXPORT *alpm_option_get_logfile()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->logfile;
+}
+
+const char SYMEXPORT *alpm_option_get_lockfile()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->lockfile;
+}
+
+unsigned short SYMEXPORT alpm_option_get_usesyslog()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return -1;
+ }
+ return handle->usesyslog;
+}
+
+alpm_list_t SYMEXPORT *alpm_option_get_noupgrades()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->noupgrade;
+}
+
+alpm_list_t SYMEXPORT *alpm_option_get_noextracts()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->noextract;
+}
+
+alpm_list_t SYMEXPORT *alpm_option_get_ignorepkgs()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->ignorepkg;
+}
+
+alpm_list_t SYMEXPORT *alpm_option_get_holdpkgs()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->holdpkg;
+}
+
+alpm_list_t SYMEXPORT *alpm_option_get_ignoregrps()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->ignoregrp;
+}
+
+time_t SYMEXPORT alpm_option_get_upgradedelay()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return -1;
+ }
+ return handle->upgradedelay;
+}
+
+const char SYMEXPORT *alpm_option_get_xfercommand()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->xfercommand;
+}
+
+unsigned short SYMEXPORT alpm_option_get_nopassiveftp()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return -1;
+ }
+ return handle->nopassiveftp;
+}
+
+pmdb_t SYMEXPORT *alpm_option_get_localdb()
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
+ return handle->db_local;
}
-alpm_cb_log alpm_option_get_logcb() { return (handle ? handle->logcb : NULL); }
-alpm_cb_download alpm_option_get_dlcb() { return (handle ? handle->dlcb : NULL); }
-unsigned short SYMEXPORT alpm_option_get_logmask() { return handle->logmask; }
-const char SYMEXPORT *alpm_option_get_root() { return handle->root; }
-const char SYMEXPORT *alpm_option_get_dbpath() { return handle->dbpath; }
-const char SYMEXPORT *alpm_option_get_cachedir() { return handle->cachedir; }
-const char *alpm_option_get_logfile() { return handle->logfile; }
-unsigned short alpm_option_get_usesyslog() { return handle->usesyslog; }
-alpm_list_t *alpm_option_get_noupgrades() { return handle->noupgrade; }
-alpm_list_t *alpm_option_get_noextracts() { return handle->noextract; }
-alpm_list_t *alpm_option_get_ignorepkgs() { return handle->ignorepkg; }
-alpm_list_t *alpm_option_get_holdpkgs() { return handle->holdpkg; }
-time_t alpm_option_get_upgradedelay() { return handle->upgradedelay; }
-const char *alpm_option_get_xfercommand() { return handle->xfercommand; }
-unsigned short alpm_option_get_nopassiveftp() { return handle->nopassiveftp; }
-unsigned short SYMEXPORT alpm_option_get_chomp() { return handle->chomp; }
-unsigned short alpm_option_get_usecolor() { return handle->use_color; }
-
-pmdb_t SYMEXPORT *alpm_option_get_localdb() { return handle->db_local; }
alpm_list_t SYMEXPORT *alpm_option_get_syncdbs()
{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return NULL;
+ }
return handle->dbs_sync;
}
-void SYMEXPORT alpm_option_set_logcb(alpm_cb_log cb) { handle->logcb = cb; }
-
-void SYMEXPORT alpm_option_set_dlcb(alpm_cb_download cb) { handle->dlcb = cb; }
+void SYMEXPORT alpm_option_set_logcb(alpm_cb_log cb)
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return;
+ }
+ handle->logcb = cb;
+}
-void SYMEXPORT alpm_option_set_logmask(unsigned short mask) { handle->logmask = mask; }
+void SYMEXPORT alpm_option_set_dlcb(alpm_cb_download cb)
+{
+ if (handle == NULL) {
+ pm_errno = PM_ERR_HANDLE_NULL;
+ return;
+ }
+ handle->dlcb = cb;
+}
-void SYMEXPORT alpm_option_set_root(const char *root)
+int SYMEXPORT alpm_option_set_root(const char *root)
{
- if(handle->root) FREE(handle->root);
- /* According to the man page, realpath is safe to use IFF the second arg is
- * NULL. */
- char *realroot = realpath(root, NULL);
- if(realroot) {
- root = realroot;
- } else {
- _alpm_log(PM_LOG_ERROR, _("cannot canonicalize specified root path '%s'"), root);
+ struct stat st;
+ char *realroot;
+ size_t rootlen;
+
+ ALPM_LOG_FUNC;
+
+ if(!root) {
+ pm_errno = PM_ERR_WRONG_ARGS;
+ return(-1);
+ }
+ if(stat(root, &st) == -1 || !S_ISDIR(st.st_mode)) {
+ pm_errno = PM_ERR_NOT_A_DIR;
+ return(-1);
}
- if(root) {
- /* verify root ends in a '/' */
- int rootlen = strlen(realroot);
- if(realroot[rootlen-1] != '/') {
- rootlen += 1;
- }
- handle->root = calloc(rootlen+1, sizeof(char));
- strncpy(handle->root, realroot, rootlen);
- handle->root[rootlen-1] = '/';
- _alpm_log(PM_LOG_DEBUG, _("option 'root' = %s"), handle->root);
+ realroot = calloc(PATH_MAX+1, sizeof(char));
+ if(!realpath(root, realroot)) {
+ pm_errno = PM_ERR_NOT_A_DIR;
+ return(-1);
+ }
+ /* verify root ends in a '/' */
+ rootlen = strlen(realroot);
+ if(realroot[rootlen-1] != '/') {
+ rootlen += 1;
}
- if(realroot) {
- free(realroot);
+ if(handle->root) {
+ FREE(handle->root);
}
+ handle->root = calloc(rootlen + 1, sizeof(char));
+ strncpy(handle->root, realroot, rootlen);
+ handle->root[rootlen-1] = '/';
+ FREE(realroot);
+ _alpm_log(PM_LOG_DEBUG, "option 'root' = %s\n", handle->root);
+ return(0);
}
-void SYMEXPORT alpm_option_set_dbpath(const char *dbpath)
+int SYMEXPORT alpm_option_set_dbpath(const char *dbpath)
{
- if(handle->dbpath) FREE(handle->dbpath);
- if(dbpath) {
- /* verify dbpath ends in a '/' */
- int dbpathlen = strlen(dbpath);
- if(dbpath[dbpathlen-1] != '/') {
- dbpathlen += 1;
- }
- handle->dbpath = calloc(dbpathlen+1, sizeof(char));
- strncpy(handle->dbpath, dbpath, dbpathlen);
- handle->dbpath[dbpathlen-1] = '/';
- _alpm_log(PM_LOG_DEBUG, _("option 'dbpath' = %s"), handle->dbpath);
+ struct stat st;
+ size_t dbpathlen, lockfilelen;
+ const char *lf = "db.lck";
+
+ ALPM_LOG_FUNC;
+
+ if(!dbpath) {
+ pm_errno = PM_ERR_WRONG_ARGS;
+ return(-1);
+ }
+ if(stat(dbpath, &st) == -1 || !S_ISDIR(st.st_mode)) {
+ pm_errno = PM_ERR_NOT_A_DIR;
+ return(-1);
+ }
+ /* verify dbpath ends in a '/' */
+ dbpathlen = strlen(dbpath);
+ if(dbpath[dbpathlen-1] != '/') {
+ dbpathlen += 1;
+ }
+ if(handle->dbpath) {
+ FREE(handle->dbpath);
}
+ handle->dbpath = calloc(dbpathlen+1, sizeof(char));
+ strncpy(handle->dbpath, dbpath, dbpathlen);
+ handle->dbpath[dbpathlen-1] = '/';
+ _alpm_log(PM_LOG_DEBUG, "option 'dbpath' = %s\n", handle->dbpath);
+
+ if(handle->lockfile) {
+ FREE(handle->lockfile);
+ }
+ lockfilelen = strlen(handle->dbpath) + strlen(lf) + 1;
+ handle->lockfile = calloc(lockfilelen, sizeof(char));
+ snprintf(handle->lockfile, lockfilelen, "%s%s", handle->dbpath, lf);
+ _alpm_log(PM_LOG_DEBUG, "option 'lockfile' = %s\n", handle->lockfile);
+ return(0);
}
-void SYMEXPORT alpm_option_set_cachedir(const char *cachedir)
+int SYMEXPORT alpm_option_add_cachedir(const char *cachedir)
{
- if(handle->cachedir) FREE(handle->cachedir);
- if(cachedir) {
- /* verify cachedir ends in a '/' */
- int cachedirlen = strlen(cachedir);
- if(cachedir[cachedirlen-1] != '/') {
- cachedirlen += 1;
- }
- handle->cachedir = calloc(cachedirlen+1, sizeof(char));
- strncpy(handle->cachedir, cachedir, cachedirlen);
- handle->cachedir[cachedirlen-1] = '/';
- _alpm_log(PM_LOG_DEBUG, _("option 'cachedir' = %s"), handle->cachedir);
+ struct stat st;
+ char *newcachedir;
+ size_t cachedirlen;
+
+ ALPM_LOG_FUNC;
+
+ if(!cachedir) {
+ pm_errno = PM_ERR_WRONG_ARGS;
+ return(-1);
+ }
+ if(stat(cachedir, &st) == -1 || !S_ISDIR(st.st_mode)) {
+ pm_errno = PM_ERR_NOT_A_DIR;
+ return(-1);
+ }
+ /* verify cachedir ends in a '/' */
+ cachedirlen = strlen(cachedir);
+ if(cachedir[cachedirlen-1] != '/') {
+ cachedirlen += 1;
}
+ newcachedir = calloc(cachedirlen + 1, sizeof(char));
+ strncpy(newcachedir, cachedir, cachedirlen);
+ newcachedir[cachedirlen-1] = '/';
+ handle->cachedirs = alpm_list_add(handle->cachedirs, newcachedir);
+ _alpm_log(PM_LOG_DEBUG, "option 'cachedir' = %s\n", newcachedir);
+ return(0);
+}
+
+void SYMEXPORT alpm_option_set_cachedirs(alpm_list_t *cachedirs)
+{
+ if(handle->cachedirs) FREELIST(handle->cachedirs);
+ if(cachedirs) handle->cachedirs = cachedirs;
}
-void alpm_option_set_logfile(const char *logfile)
+int SYMEXPORT alpm_option_set_logfile(const char *logfile)
{
+ char *oldlogfile = handle->logfile;
+
ALPM_LOG_FUNC;
- if(handle->logfile) {
- FREE(handle->logfile);
- if(handle->logfd) {
- fclose(handle->logfd);
- handle->logfd = NULL;
- }
+ if(!logfile) {
+ pm_errno = PM_ERR_WRONG_ARGS;
+ return(-1);
+ }
+
+ handle->logfile = strdup(logfile);
+
+ /* free the old logfile path string, and close the stream so logaction
+ * will reopen a new stream on the new logfile */
+ if(oldlogfile) {
+ FREE(oldlogfile);
}
- if(logfile) {
- handle->logfile = strdup(logfile);
- handle->logfd = fopen(logfile, "a");
+ if(handle->logstream) {
+ fclose(handle->logstream);
}
+ _alpm_log(PM_LOG_DEBUG, "option 'logfile' = %s\n", handle->logfile);
+ return(0);
}
-void alpm_option_set_usesyslog(unsigned short usesyslog)
+void SYMEXPORT alpm_option_set_usesyslog(unsigned short usesyslog)
{
handle->usesyslog = usesyslog;
}
-void alpm_option_add_noupgrade(char *pkg)
+void SYMEXPORT alpm_option_add_noupgrade(const char *pkg)
{
handle->noupgrade = alpm_list_add(handle->noupgrade, strdup(pkg));
}
-void alpm_option_set_noupgrades(alpm_list_t *noupgrade)
+void SYMEXPORT alpm_option_set_noupgrades(alpm_list_t *noupgrade)
{
if(handle->noupgrade) FREELIST(handle->noupgrade);
if(noupgrade) handle->noupgrade = noupgrade;
}
-void alpm_option_add_noextract(char *pkg)
+void SYMEXPORT alpm_option_add_noextract(const char *pkg)
{
handle->noextract = alpm_list_add(handle->noextract, strdup(pkg));
}
-void alpm_option_set_noextracts(alpm_list_t *noextract)
+
+void SYMEXPORT alpm_option_set_noextracts(alpm_list_t *noextract)
{
if(handle->noextract) FREELIST(handle->noextract);
if(noextract) handle->noextract = noextract;
}
-void SYMEXPORT alpm_option_add_ignorepkg(char *pkg)
+void SYMEXPORT alpm_option_add_ignorepkg(const char *pkg)
{
handle->ignorepkg = alpm_list_add(handle->ignorepkg, strdup(pkg));
}
+
void alpm_option_set_ignorepkgs(alpm_list_t *ignorepkgs)
{
if(handle->ignorepkg) FREELIST(handle->ignorepkg);
if(ignorepkgs) handle->ignorepkg = ignorepkgs;
}
-void alpm_option_add_holdpkg(char *pkg)
+void SYMEXPORT alpm_option_add_holdpkg(const char *pkg)
{
handle->holdpkg = alpm_list_add(handle->holdpkg, strdup(pkg));
}
-void alpm_option_set_holdpkgs(alpm_list_t *holdpkgs)
+
+void SYMEXPORT alpm_option_set_holdpkgs(alpm_list_t *holdpkgs)
{
if(handle->holdpkg) FREELIST(handle->holdpkg);
if(holdpkgs) handle->holdpkg = holdpkgs;
}
-void alpm_option_set_upgradedelay(time_t delay)
+void SYMEXPORT alpm_option_add_ignoregrp(const char *grp)
+{
+ handle->ignoregrp = alpm_list_add(handle->ignoregrp, strdup(grp));
+}
+
+void alpm_option_set_ignoregrps(alpm_list_t *ignoregrps)
+{
+ if(handle->ignoregrp) FREELIST(handle->ignoregrp);
+ if(ignoregrps) handle->ignoregrp = ignoregrps;
+}
+
+void SYMEXPORT alpm_option_set_upgradedelay(time_t delay)
{
handle->upgradedelay = delay;
}
-void alpm_option_set_xfercommand(const char *cmd)
+void SYMEXPORT alpm_option_set_xfercommand(const char *cmd)
{
if(handle->xfercommand) FREE(handle->xfercommand);
if(cmd) handle->xfercommand = strdup(cmd);
}
-void alpm_option_set_nopassiveftp(unsigned short nopasv)
+void SYMEXPORT alpm_option_set_nopassiveftp(unsigned short nopasv)
{
handle->nopassiveftp = nopasv;
}
-void alpm_option_set_chomp(unsigned short chomp) { handle->chomp = chomp; }
-
-void alpm_option_set_usecolor(unsigned short usecolor)
+void SYMEXPORT alpm_option_set_usedelta(unsigned short usedelta)
{
- handle->use_color = usecolor;
+ handle->usedelta = usedelta;
}
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/handle.h b/lib/libalpm/handle.h
index 35e5eb23..fb3ced3c 100644
--- a/lib/libalpm/handle.h
+++ b/lib/libalpm/handle.h
@@ -1,8 +1,8 @@
/*
* handle.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,13 +15,14 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_HANDLE_H
#define _ALPM_HANDLE_H
-#include <stdio.h>
+#include <stdio.h>
+#include <sys/types.h>
#include "alpm_list.h"
#include "db.h"
@@ -29,50 +30,46 @@
#include "alpm.h"
#include "trans.h"
-typedef enum _pmaccess_t {
- PM_ACCESS_RO,
- PM_ACCESS_RW
-} pmaccess_t;
-
typedef struct _pmhandle_t {
- /* Internal */
- pmaccess_t access;
- uid_t uid;
- pmdb_t *db_local;
- alpm_list_t *dbs_sync; /* List of (pmdb_t *) */
- FILE *logfd;
- int lckfd;
+ /* internal usage */
+ uid_t uid; /* current UID */ /* TODO is this used? */
+ pmdb_t *db_local; /* local db pointer */
+ alpm_list_t *dbs_sync; /* List of (pmdb_t *) */
+ FILE *logstream; /* log file stream pointer */
+ int lckfd; /* lock file descriptor if one exists */
pmtrans_t *trans;
-
- /* options */
- alpm_cb_log logcb; /* Log callback function */
- alpm_cb_download dlcb; /* Download callback function */
- unsigned short logmask; /* Output mask for logging functions */
- char *root; /* Root path, default '/' */
- char *dbpath; /* Base path to pacman's DBs */
- char *cachedir; /* Base path to pacman's cache */
- char *logfile; /* Name of the file to log to */ /*TODO is this used?*/
- unsigned short usesyslog; /* Use syslog instead of logfile? */
-
- alpm_list_t *noupgrade; /* List of packages NOT to be upgraded */
- alpm_list_t *noextract; /* List of packages NOT to extrace */ /*TODO is this used?*/
- alpm_list_t *ignorepkg; /* List of packages to ignore */
- alpm_list_t *holdpkg; /* List of packages which 'hold' pacman */
- time_t upgradedelay; /* Amount of time to wait before upgrading a package*/
- /* servers */
- char *xfercommand; /* External download command */
+ /* callback functions */
+ alpm_cb_log logcb; /* Log callback function */
+ alpm_cb_download dlcb; /* Download callback function */
+
+ /* filesystem paths */
+ char *root; /* Root path, default '/' */
+ char *dbpath; /* Base path to pacman's DBs */
+ char *logfile; /* Name of the log file */
+ char *lockfile; /* Name of the lock file */
+ alpm_list_t *cachedirs; /* Paths to pacman cache directories */
+
+ /* package lists */
+ alpm_list_t *noupgrade; /* List of packages NOT to be upgraded */
+ alpm_list_t *noextract; /* List of packages NOT to extract */ /*TODO is this used?*/
+ alpm_list_t *ignorepkg; /* List of packages to ignore */
+ alpm_list_t *holdpkg; /* List of packages which 'hold' pacman */
+ alpm_list_t *ignoregrp; /* List of groups to ignore */
+
+ /* options */
+ unsigned short usesyslog; /* Use syslog instead of logfile? */ /* TODO move to frontend */
unsigned short nopassiveftp; /* Don't use PASV ftp connections */
- unsigned short chomp; /* I Love Candy! */
- unsigned short use_color; /* enable colorful output */
+ time_t upgradedelay; /* Time to wait before upgrading a package */
+ char *xfercommand; /* External download command */
+ unsigned short usedelta; /* Download deltas if possible */
} pmhandle_t;
+/* global handle variable */
extern pmhandle_t *handle;
-#define FREEHANDLE(p) do { if (p) { _alpm_handle_free(p); p = NULL; } } while (0)
-
pmhandle_t *_alpm_handle_new();
-int _alpm_handle_free(pmhandle_t *handle);
+void _alpm_handle_free(pmhandle_t *handle);
#endif /* _ALPM_HANDLE_H */
diff --git a/lib/libalpm/log.c b/lib/libalpm/log.c
index b59ec64e..f666a099 100644
--- a/lib/libalpm/log.c
+++ b/lib/libalpm/log.c
@@ -1,8 +1,8 @@
/*
* log.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -23,29 +23,85 @@
#include <stdio.h>
#include <stdarg.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
#include <time.h>
/* libalpm */
#include "log.h"
+#include "handle.h"
+#include "util.h"
+#include "error.h"
#include "alpm.h"
+/** \addtogroup alpm_log Logging Functions
+ * @brief Functions to log using libalpm
+ * @{
+ */
+
+/** A printf-like function for logging.
+ * @param fmt output format
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
+int SYMEXPORT alpm_logaction(char *fmt, ...)
+{
+ int ret;
+ va_list args;
+
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+
+ /* check if the logstream is open already, opening it if needed */
+ if(handle->logstream == NULL) {
+ handle->logstream = fopen(handle->logfile, "a");
+ /* if we couldn't open it, we have an issue */
+ if(handle->logstream == NULL) {
+ if(errno == EACCES) {
+ pm_errno = PM_ERR_BADPERMS;
+ } else if(errno == ENOENT) {
+ pm_errno = PM_ERR_NOT_A_DIR;
+ } else {
+ pm_errno = PM_ERR_SYSTEM;
+ }
+ return(-1);
+ }
+ }
+
+ va_start(args, fmt);
+ ret = _alpm_logaction(handle->usesyslog, handle->logstream, fmt, args);
+ va_end(args);
+
+ /* TODO We should add a prefix to log strings depending on who called us.
+ * If logaction was called by the frontend:
+ * USER: <the frontend log>
+ * and if called internally:
+ * ALPM: <the library log>
+ * Moreover, the frontend should be able to choose its prefix
+ * (USER by default?):
+ * pacman: "PACMAN"
+ * kpacman: "KPACMAN"
+ * This would allow us to share the log file between several frontends
+ * and know who does what */
+ return(ret);
+}
+
+/** @} */
+
void _alpm_log(pmloglevel_t flag, char *fmt, ...)
{
+ va_list args;
alpm_cb_log logcb = alpm_option_get_logcb();
+
if(logcb == NULL) {
return;
}
- if(flag & alpm_option_get_logmask()) {
- char str[LOG_STR_LEN];
- va_list args;
-
- va_start(args, fmt);
- vsnprintf(str, LOG_STR_LEN, fmt, args);
- va_end(args);
-
- logcb(flag, str);
- }
+ va_start(args, fmt);
+ logcb(flag, fmt, args);
+ va_end(args);
}
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/log.h b/lib/libalpm/log.h
index eb0b718d..00bb8152 100644
--- a/lib/libalpm/log.h
+++ b/lib/libalpm/log.h
@@ -1,8 +1,8 @@
/*
* log.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_LOG_H
@@ -23,16 +23,14 @@
#include "alpm.h"
-#define LOG_STR_LEN 1024
-
#ifdef PACMAN_DEBUG
/* Log funtion entry points if debugging is enabled */
-#define ALPM_LOG_FUNC _alpm_log(PM_LOG_FUNCTION, "Enter %s", __func__)
+#define ALPM_LOG_FUNC _alpm_log(PM_LOG_FUNCTION, "Enter %s\n", __func__)
#else
#define ALPM_LOG_FUNC
#endif
-void _alpm_log(pmloglevel_t flag, char *fmt, ...);
+void _alpm_log(pmloglevel_t flag, char *fmt, ...) __attribute__((format(printf,2,3)));
#endif /* _ALPM_LOG_H */
diff --git a/lib/libalpm/md5.c b/lib/libalpm/md5.c
index 6d5aa6a3..2d111c9d 100644
--- a/lib/libalpm/md5.c
+++ b/lib/libalpm/md5.c
@@ -1,307 +1,335 @@
-/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm
+/*
+ * RFC 1321 compliant MD5 implementation
+ *
+ * Copyright (C) 2006-2007 Christophe Devine
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License, version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
*/
-
-/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
-
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
+/*
+ * The MD5 algorithm was designed by Ron Rivest in 1991.
+ *
+ * http://www.ietf.org/rfc/rfc1321.txt
*/
+/*
+ * Pacman Notes:
+ *
+ * Taken from the XySSL project at www.xyssl.org under terms of the
+ * LGPL. This is from version 0.7 of the library, and has been modified
+ * as following, which may be helpful for future updates:
+ * * change include from "xyssl/md5.h" to "md5.h"
+ * * removal of HMAC code
+ * * removal of SELF_TEST code
+ * * removal of ipad and opad from the md5_context struct in md5.h
+ * * change of md5_file prototype from
+ * int md5_file( char *path, unsigned char *output )
+ * to
+ * int md5_file( const char *path, unsigned char *output )
+ */
+
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE 1
+#endif
#include <string.h>
+#include <stdio.h>
#include "md5.h"
-/* Constants for MD5Transform routine.
+/*
+ * 32-bit integer manipulation macros (little endian)
*/
+#ifndef GET_UINT32_LE
+#define GET_UINT32_LE(n,b,i) \
+{ \
+ (n) = ( (unsigned long) (b)[(i) ] ) \
+ | ( (unsigned long) (b)[(i) + 1] << 8 ) \
+ | ( (unsigned long) (b)[(i) + 2] << 16 ) \
+ | ( (unsigned long) (b)[(i) + 3] << 24 ); \
+}
+#endif
+
+#ifndef PUT_UINT32_LE
+#define PUT_UINT32_LE(n,b,i) \
+{ \
+ (b)[(i) ] = (unsigned char) ( (n) ); \
+ (b)[(i) + 1] = (unsigned char) ( (n) >> 8 ); \
+ (b)[(i) + 2] = (unsigned char) ( (n) >> 16 ); \
+ (b)[(i) + 3] = (unsigned char) ( (n) >> 24 ); \
+}
+#endif
-#define S11 7
-#define S12 12
-#define S13 17
-#define S14 22
-#define S21 5
-#define S22 9
-#define S23 14
-#define S24 20
-#define S31 4
-#define S32 11
-#define S33 16
-#define S34 23
-#define S41 6
-#define S42 10
-#define S43 15
-#define S44 21
-
-static void MD5Transform(UINT4 [4], unsigned char [64]);
-static void Encode(unsigned char *, UINT4 *, unsigned int);
-static void Decode(UINT4 *, unsigned char *, unsigned int);
-
-static unsigned char PADDING[64] = {
- 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-/* F, G, H and I are basic MD5 functions.
+/*
+ * MD5 context setup
*/
-#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
-#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define I(x, y, z) ((y) ^ ((x) | (~z)))
+static inline void md5_starts( md5_context *ctx )
+{
+ ctx->total[0] = 0;
+ ctx->total[1] = 0;
-/* ROTATE_LEFT rotates x left n bits.
- */
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
+ ctx->state[0] = 0x67452301;
+ ctx->state[1] = 0xEFCDAB89;
+ ctx->state[2] = 0x98BADCFE;
+ ctx->state[3] = 0x10325476;
+}
-/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
-Rotation is separate from addition to prevent recomputation.
- */
-#define FF(a, b, c, d, x, s, ac) { \
- (a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define GG(a, b, c, d, x, s, ac) { \
- (a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define HH(a, b, c, d, x, s, ac) { \
- (a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define II(a, b, c, d, x, s, ac) { \
- (a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-
-/* MD5 initialization. Begins an MD5 operation, writing a new context.
- */
-void _alpm_MD5Init (context)
-MD5_CTX *context; /* context */
+static inline void md5_process( md5_context *ctx, unsigned char data[64] )
{
- context->count[0] = context->count[1] = 0;
- /* Load magic initialization constants.
-*/
- context->state[0] = 0x67452301;
- context->state[1] = 0xefcdab89;
- context->state[2] = 0x98badcfe;
- context->state[3] = 0x10325476;
+ unsigned long X[16], A, B, C, D;
+
+ GET_UINT32_LE( X[ 0], data, 0 );
+ GET_UINT32_LE( X[ 1], data, 4 );
+ GET_UINT32_LE( X[ 2], data, 8 );
+ GET_UINT32_LE( X[ 3], data, 12 );
+ GET_UINT32_LE( X[ 4], data, 16 );
+ GET_UINT32_LE( X[ 5], data, 20 );
+ GET_UINT32_LE( X[ 6], data, 24 );
+ GET_UINT32_LE( X[ 7], data, 28 );
+ GET_UINT32_LE( X[ 8], data, 32 );
+ GET_UINT32_LE( X[ 9], data, 36 );
+ GET_UINT32_LE( X[10], data, 40 );
+ GET_UINT32_LE( X[11], data, 44 );
+ GET_UINT32_LE( X[12], data, 48 );
+ GET_UINT32_LE( X[13], data, 52 );
+ GET_UINT32_LE( X[14], data, 56 );
+ GET_UINT32_LE( X[15], data, 60 );
+
+#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
+
+#define P(a,b,c,d,k,s,t) \
+{ \
+ a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \
+}
+
+ A = ctx->state[0];
+ B = ctx->state[1];
+ C = ctx->state[2];
+ D = ctx->state[3];
+
+#define F(x,y,z) (z ^ (x & (y ^ z)))
+
+ P( A, B, C, D, 0, 7, 0xD76AA478 );
+ P( D, A, B, C, 1, 12, 0xE8C7B756 );
+ P( C, D, A, B, 2, 17, 0x242070DB );
+ P( B, C, D, A, 3, 22, 0xC1BDCEEE );
+ P( A, B, C, D, 4, 7, 0xF57C0FAF );
+ P( D, A, B, C, 5, 12, 0x4787C62A );
+ P( C, D, A, B, 6, 17, 0xA8304613 );
+ P( B, C, D, A, 7, 22, 0xFD469501 );
+ P( A, B, C, D, 8, 7, 0x698098D8 );
+ P( D, A, B, C, 9, 12, 0x8B44F7AF );
+ P( C, D, A, B, 10, 17, 0xFFFF5BB1 );
+ P( B, C, D, A, 11, 22, 0x895CD7BE );
+ P( A, B, C, D, 12, 7, 0x6B901122 );
+ P( D, A, B, C, 13, 12, 0xFD987193 );
+ P( C, D, A, B, 14, 17, 0xA679438E );
+ P( B, C, D, A, 15, 22, 0x49B40821 );
+
+#undef F
+
+#define F(x,y,z) (y ^ (z & (x ^ y)))
+
+ P( A, B, C, D, 1, 5, 0xF61E2562 );
+ P( D, A, B, C, 6, 9, 0xC040B340 );
+ P( C, D, A, B, 11, 14, 0x265E5A51 );
+ P( B, C, D, A, 0, 20, 0xE9B6C7AA );
+ P( A, B, C, D, 5, 5, 0xD62F105D );
+ P( D, A, B, C, 10, 9, 0x02441453 );
+ P( C, D, A, B, 15, 14, 0xD8A1E681 );
+ P( B, C, D, A, 4, 20, 0xE7D3FBC8 );
+ P( A, B, C, D, 9, 5, 0x21E1CDE6 );
+ P( D, A, B, C, 14, 9, 0xC33707D6 );
+ P( C, D, A, B, 3, 14, 0xF4D50D87 );
+ P( B, C, D, A, 8, 20, 0x455A14ED );
+ P( A, B, C, D, 13, 5, 0xA9E3E905 );
+ P( D, A, B, C, 2, 9, 0xFCEFA3F8 );
+ P( C, D, A, B, 7, 14, 0x676F02D9 );
+ P( B, C, D, A, 12, 20, 0x8D2A4C8A );
+
+#undef F
+
+#define F(x,y,z) (x ^ y ^ z)
+
+ P( A, B, C, D, 5, 4, 0xFFFA3942 );
+ P( D, A, B, C, 8, 11, 0x8771F681 );
+ P( C, D, A, B, 11, 16, 0x6D9D6122 );
+ P( B, C, D, A, 14, 23, 0xFDE5380C );
+ P( A, B, C, D, 1, 4, 0xA4BEEA44 );
+ P( D, A, B, C, 4, 11, 0x4BDECFA9 );
+ P( C, D, A, B, 7, 16, 0xF6BB4B60 );
+ P( B, C, D, A, 10, 23, 0xBEBFBC70 );
+ P( A, B, C, D, 13, 4, 0x289B7EC6 );
+ P( D, A, B, C, 0, 11, 0xEAA127FA );
+ P( C, D, A, B, 3, 16, 0xD4EF3085 );
+ P( B, C, D, A, 6, 23, 0x04881D05 );
+ P( A, B, C, D, 9, 4, 0xD9D4D039 );
+ P( D, A, B, C, 12, 11, 0xE6DB99E5 );
+ P( C, D, A, B, 15, 16, 0x1FA27CF8 );
+ P( B, C, D, A, 2, 23, 0xC4AC5665 );
+
+#undef F
+
+#define F(x,y,z) (y ^ (x | ~z))
+
+ P( A, B, C, D, 0, 6, 0xF4292244 );
+ P( D, A, B, C, 7, 10, 0x432AFF97 );
+ P( C, D, A, B, 14, 15, 0xAB9423A7 );
+ P( B, C, D, A, 5, 21, 0xFC93A039 );
+ P( A, B, C, D, 12, 6, 0x655B59C3 );
+ P( D, A, B, C, 3, 10, 0x8F0CCC92 );
+ P( C, D, A, B, 10, 15, 0xFFEFF47D );
+ P( B, C, D, A, 1, 21, 0x85845DD1 );
+ P( A, B, C, D, 8, 6, 0x6FA87E4F );
+ P( D, A, B, C, 15, 10, 0xFE2CE6E0 );
+ P( C, D, A, B, 6, 15, 0xA3014314 );
+ P( B, C, D, A, 13, 21, 0x4E0811A1 );
+ P( A, B, C, D, 4, 6, 0xF7537E82 );
+ P( D, A, B, C, 11, 10, 0xBD3AF235 );
+ P( C, D, A, B, 2, 15, 0x2AD7D2BB );
+ P( B, C, D, A, 9, 21, 0xEB86D391 );
+
+#undef F
+
+ ctx->state[0] += A;
+ ctx->state[1] += B;
+ ctx->state[2] += C;
+ ctx->state[3] += D;
}
-/* MD5 block update operation. Continues an MD5 message-digest
- operation, processing another message block, and updating the
- context.
+/*
+ * MD5 process buffer
*/
-void _alpm_MD5Update (context, input, inputLen)
-MD5_CTX *context; /* context */
-unsigned char *input; /* input block */
-unsigned int inputLen; /* length of input block */
+static inline void md5_update( md5_context *ctx, unsigned char *input, int ilen )
{
- unsigned int i, index, partLen;
-
- /* Compute number of bytes mod 64 */
- index = (unsigned int)((context->count[0] >> 3) & 0x3F);
+ int fill;
+ unsigned long left;
+
+ if( ilen <= 0 )
+ return;
+
+ left = ctx->total[0] & 0x3F;
+ fill = 64 - left;
+
+ ctx->total[0] += ilen;
+ ctx->total[0] &= 0xFFFFFFFF;
+
+ if( ctx->total[0] < (unsigned long) ilen )
+ ctx->total[1]++;
+
+ if( left && ilen >= fill )
+ {
+ memcpy( (void *) (ctx->buffer + left),
+ (void *) input, fill );
+ md5_process( ctx, ctx->buffer );
+ input += fill;
+ ilen -= fill;
+ left = 0;
+ }
+
+ while( ilen >= 64 )
+ {
+ md5_process( ctx, input );
+ input += 64;
+ ilen -= 64;
+ }
+
+ if( ilen > 0 )
+ {
+ memcpy( (void *) (ctx->buffer + left),
+ (void *) input, ilen );
+ }
+}
- /* Update number of bits */
- if ((context->count[0] += ((UINT4)inputLen << 3))
+static unsigned char md5_padding[64] =
+{
+ 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
- < ((UINT4)inputLen << 3))
- context->count[1]++;
- context->count[1] += ((UINT4)inputLen >> 29);
+/*
+ * MD5 final digest
+ */
+static inline void md5_finish( md5_context *ctx, unsigned char *output )
+{
+ unsigned long last, padn;
+ unsigned long high, low;
+ unsigned char msglen[8];
- partLen = 64 - index;
+ high = ( ctx->total[0] >> 29 )
+ | ( ctx->total[1] << 3 );
+ low = ( ctx->total[0] << 3 );
- /* Transform as many times as possible.
-*/
- if (inputLen >= partLen) {
- memcpy ((POINTER)&context->buffer[index], (POINTER)input, partLen);
- MD5Transform (context->state, context->buffer);
+ PUT_UINT32_LE( low, msglen, 0 );
+ PUT_UINT32_LE( high, msglen, 4 );
- for (i = partLen; i + 63 < inputLen; i += 64)
- MD5Transform (context->state, &input[i]);
+ last = ctx->total[0] & 0x3F;
+ padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
- index = 0;
- }
- else
- i = 0;
+ md5_update( ctx, (unsigned char *) md5_padding, padn );
+ md5_update( ctx, msglen, 8 );
- /* Buffer remaining input */
- memcpy ((POINTER)&context->buffer[index], (POINTER)&input[i], inputLen-i);
+ PUT_UINT32_LE( ctx->state[0], output, 0 );
+ PUT_UINT32_LE( ctx->state[1], output, 4 );
+ PUT_UINT32_LE( ctx->state[2], output, 8 );
+ PUT_UINT32_LE( ctx->state[3], output, 12 );
}
-/* MD5 finalization. Ends an MD5 message-digest operation, writing the
- the message digest and zeroizing the context.
+/*
+ * Output = MD5( input buffer )
*/
-void _alpm_MD5Final (digest, context)
-unsigned char digest[16]; /* message digest */
-MD5_CTX *context; /* context */
+void md5( unsigned char *input, int ilen,
+ unsigned char *output )
{
- unsigned char bits[8];
- unsigned int index, padLen;
+ md5_context ctx;
- /* Save number of bits */
- Encode (bits, context->count, 8);
+ md5_starts( &ctx );
+ md5_update( &ctx, input, ilen );
+ md5_finish( &ctx, output );
- /* Pad out to 56 mod 64.
-*/
- index = (unsigned int)((context->count[0] >> 3) & 0x3f);
- padLen = (index < 56) ? (56 - index) : (120 - index);
- _alpm_MD5Update (context, PADDING, padLen);
-
- /* Append length (before padding) */
- _alpm_MD5Update (context, bits, 8);
-
- /* Store state in digest */
- Encode (digest, context->state, 16);
-
- /* Zeroize sensitive information.
-*/
- memset ((POINTER)context, 0, sizeof (*context));
+ memset( &ctx, 0, sizeof( md5_context ) );
}
-/* MD5 basic transformation. Transforms state based on block.
+/*
+ * Output = MD5( file contents )
*/
-static void MD5Transform (state, block)
-UINT4 state[4];
-unsigned char block[64];
+int md5_file( const char *path, unsigned char *output )
{
- UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
-
- Decode (x, block, 64);
-
- /* Round 1 */
- FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
- FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
- FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
- FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
- FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
- FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
- FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
- FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
- FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
- FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
- FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
- FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
- FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
- FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
- FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
- FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
-
- /* Round 2 */
- GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
- GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
- GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
- GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
- GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
- GG (d, a, b, c, x[10], S22, 0x2441453); /* 22 */
- GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
- GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
- GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
- GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
- GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
-
- GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
- GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
- GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
- GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
- GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
-
- /* Round 3 */
- HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
- HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
- HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
- HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
- HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
- HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
- HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
- HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
- HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
- HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
- HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
- HH (b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */
- HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
- HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
- HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
- HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
-
- /* Round 4 */
- II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
- II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
- II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
- II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
- II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
- II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
- II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
- II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
- II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
- II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
- II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
- II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
- II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
- II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
- II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
- II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
-
- state[0] += a;
- state[1] += b;
- state[2] += c;
- state[3] += d;
-
- /* Zeroize sensitive information.
-
-*/
- memset ((POINTER)x, 0, sizeof (x));
-}
+ FILE *f;
+ size_t n;
+ md5_context ctx;
+ unsigned char buf[1024];
-/* Encodes input (UINT4) into output (unsigned char). Assumes len is
- a multiple of 4.
- */
-static void Encode (output, input, len)
-unsigned char *output;
-UINT4 *input;
-unsigned int len;
-{
- unsigned int i, j;
-
- for (i = 0, j = 0; j < len; i++, j += 4) {
- output[j] = (unsigned char)(input[i] & 0xff);
- output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
- output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
- output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
- }
-}
+ if( ( f = fopen( path, "rb" ) ) == NULL )
+ return( 1 );
-/* Decodes input (unsigned char) into output (UINT4). Assumes len is
- a multiple of 4.
- */
-static void Decode (output, input, len)
-UINT4 *output;
-unsigned char *input;
-unsigned int len;
-{
- unsigned int i, j;
+ md5_starts( &ctx );
- for (i = 0, j = 0; j < len; i++, j += 4)
- output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
- (((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
-}
+ while( ( n = fread( buf, 1, sizeof( buf ), f ) ) > 0 )
+ md5_update( &ctx, buf, (int) n );
-/* vim: set ts=2 sw=2 noet: */
+ md5_finish( &ctx, output );
+
+ memset( &ctx, 0, sizeof( md5_context ) );
+
+ if( ferror( f ) != 0 )
+ {
+ fclose( f );
+ return( 2 );
+ }
+
+ fclose( f );
+ return( 0 );
+}
diff --git a/lib/libalpm/md5.h b/lib/libalpm/md5.h
index 8ae324e3..08dad1ec 100644
--- a/lib/libalpm/md5.h
+++ b/lib/libalpm/md5.h
@@ -1,53 +1,67 @@
-/* MD5.H - header file for MD5C.C
+/*
+ * RFC 1321 compliant MD5 implementation
+ *
+ * Copyright (C) 2006-2007 Christophe Devine
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License, version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
*/
-/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
+#ifndef _MD5_H
+#define _MD5_H
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
+#ifdef __cplusplus
+extern "C" {
+#endif
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software. */
-#ifndef _ALPM_MD5_H
-#define _ALPM_MD5_H
-
-/* POINTER defines a generic pointer type */
-typedef unsigned char *POINTER;
-
-/* UINT2 defines a two byte word */
-typedef unsigned short int UINT2;
-
-/* UINT4 defines a four byte word */
-typedef unsigned int UINT4;
-
-
-/* MD5 context. */
-typedef struct {
- UINT4 state[4]; /* state (ABCD) */
- UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */
- unsigned char buffer[64]; /* input buffer */
-} MD5_CTX;
+/**
+ * \internal
+ * \brief MD5 context structure
+ */
+typedef struct
+{
+ unsigned long total[2]; /*!< number of bytes processed */
+ unsigned long state[4]; /*!< intermediate digest state */
+ unsigned char buffer[64]; /*!< data block being processed */
+}
+md5_context;
-void _alpm_MD5Init(MD5_CTX *);
-void _alpm_MD5Update(MD5_CTX *, unsigned char *, unsigned int);
-void _alpm_MD5Final(unsigned char [16], MD5_CTX *);
+/**
+ * \internal
+ * \brief Output = MD5( input buffer )
+ *
+ * \param input buffer holding the data
+ * \param ilen length of the input data
+ * \param output MD5 checksum result
+ */
+void md5( unsigned char *input, int ilen,
+ unsigned char *output );
-char* _alpm_MDFile(char *);
-void _alpm_MDPrint(unsigned char [16]);
+/**
+ * \internal
+ * \brief Output = MD5( file contents )
+ *
+ * \param path input file name
+ * \param output MD5 checksum result
+ *
+ * \return 0 if successful, 1 if fopen failed,
+ * or 2 if fread failed
+ */
+int md5_file( const char *path, unsigned char *output );
-#endif /* _ALPM_MD5_H */
+#ifdef __cplusplus
+}
+#endif
-/* vim: set ts=2 sw=2 noet: */
+#endif /* md5.h */
diff --git a/lib/libalpm/md5driver.c b/lib/libalpm/md5driver.c
deleted file mode 100644
index 66071052..00000000
--- a/lib/libalpm/md5driver.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* MD5DRIVER.C - taken and modified from MDDRIVER.C (license below) */
-/* for use in pacman. */
-/*********************************************************************/
-
-/* Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All
-rights reserved.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
- */
-
-/* The following makes MD default to MD5 if it has not already been
- defined with C compiler flags.
- */
-#define MD MD5
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <libintl.h>
-
-/* libalpm */
-#include "alpm.h"
-#include "log.h"
-#include "util.h"
-#include "md5.h"
-
-/* Length of test block, number of test blocks.
- */
-#define TEST_BLOCK_LEN 1000
-#define TEST_BLOCK_COUNT 1000
-
-#define MD_CTX MD5_CTX
-#define MDInit _alpm_MD5Init
-#define MDUpdate _alpm_MD5Update
-#define MDFinal _alpm_MD5Final
-
-char* _alpm_MDFile(char *filename)
-{
- FILE *file;
- MD_CTX context;
- int len;
- char hex[3];
- unsigned char buffer[1024], digest[16];
-
- ALPM_LOG_FUNC;
-
- if((file = fopen(filename, "rb")) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("%s can't be opened\n"), filename);
- } else {
- char *ret;
- int i;
-
- MDInit(&context);
- while((len = fread(buffer, 1, 1024, file))) {
- MDUpdate(&context, buffer, len);
- }
- MDFinal(digest, &context);
- fclose(file);
-
- ret = calloc(33, sizeof(char));
- for(i = 0; i < 16; i++) {
- snprintf(hex, 3, "%02x", digest[i]);
- strncat(ret, hex, 2);
- }
-
- _alpm_log(PM_LOG_DEBUG, _("md5(%s) = %s"), filename, ret);
- return(ret);
- }
- return(NULL);
-}
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index 74adf5cd..172456d6 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -5,7 +5,7 @@
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -18,7 +18,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -28,12 +28,16 @@
#include <stdlib.h>
#include <limits.h>
#include <string.h>
-#include <libintl.h>
-#include <locale.h>
+#include <ctype.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
+#include <locale.h> /* setlocale */
+
+/* libarchive */
+#include <archive.h>
+#include <archive_entry.h>
/* libalpm */
#include "package.h"
@@ -43,554 +47,113 @@
#include "error.h"
#include "db.h"
#include "cache.h"
-#include "provide.h"
+#include "delta.h"
#include "handle.h"
-#include "versioncmp.h"
-#include "alpm.h"
-
-pmpkg_t *_alpm_pkg_new(const char *name, const char *version)
-{
- pmpkg_t* pkg;
-
- ALPM_LOG_FUNC;
-
- if((pkg = calloc(1,sizeof(pmpkg_t))) == NULL) {
- RET_ERR(PM_ERR_MEMORY, NULL);
- }
-
- if(name && name[0] != 0) {
- STRNCPY(pkg->name, name, PKG_NAME_LEN);
- } else {
- pkg->name[0] = '\0';
- }
- if(version && version[0] != 0) {
- STRNCPY(pkg->version, version, PKG_VERSION_LEN);
- } else {
- pkg->version[0] = '\0';
- }
-
- return(pkg);
-}
-
-pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg)
-{
- pmpkg_t* newpkg;
-
- ALPM_LOG_FUNC;
-
- if((newpkg = calloc(1, sizeof(pmpkg_t))) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(pmpkg_t));
- RET_ERR(PM_ERR_MEMORY, NULL);
- }
-
- memcpy(newpkg, pkg, sizeof(pmpkg_t));
- newpkg->licenses = alpm_list_strdup(alpm_pkg_get_licenses(pkg));
- /*newpkg->desc_localized = alpm_list_strdup(pkg->desc_localized);*/
- newpkg->requiredby = alpm_list_strdup(alpm_pkg_get_requiredby(pkg));
- newpkg->conflicts = alpm_list_strdup(alpm_pkg_get_conflicts(pkg));
- newpkg->files = alpm_list_strdup(alpm_pkg_get_files(pkg));
- newpkg->backup = alpm_list_strdup(alpm_pkg_get_backup(pkg));
- newpkg->depends = alpm_list_strdup(alpm_pkg_get_depends(pkg));
- newpkg->removes = alpm_list_strdup(alpm_pkg_get_removes(pkg));
- newpkg->groups = alpm_list_strdup(alpm_pkg_get_groups(pkg));
- newpkg->provides = alpm_list_strdup(alpm_pkg_get_provides(pkg));
- newpkg->replaces = alpm_list_strdup(alpm_pkg_get_replaces(pkg));
- /* internal */
- newpkg->data = (newpkg->origin == PKG_FROM_FILE) ? strdup(pkg->data) : pkg->data;
-
- return(newpkg);
-}
-
-void _alpm_pkg_free(void *data)
-{
- pmpkg_t *pkg = data;
-
- ALPM_LOG_FUNC;
-
- if(pkg == NULL) {
- return;
- }
-
- FREELIST(pkg->licenses);
- /*FREELIST(pkg->desc_localized);*/
- FREELIST(pkg->files);
- FREELIST(pkg->backup);
- FREELIST(pkg->depends);
- FREELIST(pkg->removes);
- FREELIST(pkg->conflicts);
- FREELIST(pkg->requiredby);
- FREELIST(pkg->groups);
- FREELIST(pkg->provides);
- FREELIST(pkg->replaces);
- if(pkg->origin == PKG_FROM_FILE) {
- FREE(pkg->data);
- }
- FREE(pkg);
-
- return;
-}
-
-/* Is pkgB an upgrade for pkgA ? */
-int alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg)
-{
- int cmp = 0;
-
- ALPM_LOG_FUNC;
-
- if(pkg->origin == PKG_FROM_CACHE) {
- /* ensure we have the /desc file, which contains the 'force' option */
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
- }
-
- if(alpm_list_find_str(handle->ignorepkg, alpm_pkg_get_name(pkg))) {
- /* package should be ignored (IgnorePkg) */
- _alpm_log(PM_LOG_WARNING, _("%s-%s: ignoring package upgrade (%s)"),
- alpm_pkg_get_name(local_pkg), alpm_pkg_get_version(local_pkg),
- alpm_pkg_get_version(pkg));
- return(0);
- }
-
- /* compare versions and see if we need to upgrade */
- cmp = _alpm_versioncmp(alpm_pkg_get_version(pkg), alpm_pkg_get_version(local_pkg));
-
- if(cmp != 0 && pkg->force) {
- cmp = 1;
- _alpm_log(PM_LOG_WARNING, _("%s: forcing upgrade to version %s"),
- alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
- } else if(cmp < 0) {
- /* local version is newer */
- pmdb_t *db = pkg->data;
- _alpm_log(PM_LOG_WARNING, _("%s: local (%s) is newer than %s (%s)"),
- alpm_pkg_get_name(local_pkg), alpm_pkg_get_version(local_pkg),
- alpm_db_get_name(db), alpm_pkg_get_version(pkg));
- cmp = 0;
- } else if(cmp > 0) {
- /* we have an upgrade, make sure we should actually do it */
- if(_alpm_pkg_istoonew(pkg)) {
- /* package too new (UpgradeDelay) */
- _alpm_log(PM_LOG_WARNING, _("%s-%s: delaying upgrade of package (%s)"),
- alpm_pkg_get_name(local_pkg), alpm_pkg_get_version(local_pkg),
- alpm_pkg_get_version(pkg));
- cmp = 0;
- }
- }
+#include "deps.h"
- return(cmp);
-}
-
-/* Helper function for comparing packages
+/** \addtogroup alpm_packages Package Functions
+ * @brief Functions to manipulate libalpm packages
+ * @{
*/
-int _alpm_pkg_cmp(const void *p1, const void *p2)
-{
- pmpkg_t *pk1 = (pmpkg_t *)p1;
- pmpkg_t *pk2 = (pmpkg_t *)p2;
-
- return(strcmp(alpm_pkg_get_name(pk1), alpm_pkg_get_name(pk2)));
-}
-/* Parses the package description file for the current package
- * TODO: this should ALL be in a backend interface (be_files), we should
- * be dealing with the abstracted concepts only in this file
- * Returns: 0 on success, 1 on error
- *
+/** Create a package from a file.
+ * @param filename location of the package tarball
+ * @param full whether to stop the load after metadata is read or continue
+ * through the full archive
+ * @param pkg address of the package pointer
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-static int parse_descfile(const char *descfile, pmpkg_t *info)
+int SYMEXPORT alpm_pkg_load(const char *filename, unsigned short full,
+ pmpkg_t **pkg)
{
- FILE* fp = NULL;
- char line[PATH_MAX];
- char *ptr = NULL;
- char *key = NULL;
- int linenum = 0;
+ _alpm_log(PM_LOG_FUNCTION, "enter alpm_pkg_load\n");
- ALPM_LOG_FUNC;
+ /* Sanity checks */
+ ASSERT(filename != NULL && strlen(filename) != 0,
+ RET_ERR(PM_ERR_WRONG_ARGS, -1));
+ ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
- if((fp = fopen(descfile, "r")) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s"), descfile, strerror(errno));
+ *pkg = _alpm_pkg_load(filename, full);
+ if(*pkg == NULL) {
+ /* pm_errno is set by pkg_load */
return(-1);
}
- while(!feof(fp)) {
- fgets(line, PATH_MAX, fp);
- linenum++;
- _alpm_strtrim(line);
- if(strlen(line) == 0 || line[0] == '#') {
- continue;
- }
- ptr = line;
- key = strsep(&ptr, "=");
- if(key == NULL || ptr == NULL) {
- _alpm_log(PM_LOG_DEBUG, _("%s: syntax error in description file line %d"),
- info->name[0] != '\0' ? info->name : "error", linenum);
- } else {
- _alpm_strtrim(key);
- key = _alpm_strtoupper(key);
- _alpm_strtrim(ptr);
- if(!strcmp(key, "PKGNAME")) {
- STRNCPY(info->name, ptr, sizeof(info->name));
- } else if(!strcmp(key, "PKGVER")) {
- STRNCPY(info->version, ptr, sizeof(info->version));
- } else if(!strcmp(key, "PKGDESC")) {
- /*
- char *lang_tmp;
- info->desc_localized = alpm_list_add(info->desc_localized, strdup(ptr));
- if((lang_tmp = (char *)malloc(strlen(setlocale(LC_ALL, "")))) == NULL) {
- RET_ERR(PM_ERR_MEMORY, -1);
- }
- STRNCPY(lang_tmp, setlocale(LC_ALL, ""), strlen(setlocale(LC_ALL, "")));
- if(info->desc_localized && !info->desc_localized->next) {
- */
- STRNCPY(info->desc, ptr, sizeof(info->desc));
- /*
- } else if (ptr && !strncmp(ptr, lang_tmp, strlen(lang_tmp))) {
- STRNCPY(info->desc, ptr+strlen(lang_tmp)+1, sizeof(info->desc));
- }
- FREE(lang_tmp);
- */
- } else if(!strcmp(key, "GROUP")) {
- info->groups = alpm_list_add(info->groups, strdup(ptr));
- } else if(!strcmp(key, "URL")) {
- STRNCPY(info->url, ptr, sizeof(info->url));
- } else if(!strcmp(key, "LICENSE")) {
- info->licenses = alpm_list_add(info->licenses, strdup(ptr));
- } else if(!strcmp(key, "BUILDDATE")) {
- STRNCPY(info->builddate, ptr, sizeof(info->builddate));
- } else if(!strcmp(key, "BUILDTYPE")) {
- STRNCPY(info->buildtype, ptr, sizeof(info->buildtype));
- } else if(!strcmp(key, "INSTALLDATE")) {
- STRNCPY(info->installdate, ptr, sizeof(info->installdate));
- } else if(!strcmp(key, "PACKAGER")) {
- STRNCPY(info->packager, ptr, sizeof(info->packager));
- } else if(!strcmp(key, "ARCH")) {
- STRNCPY(info->arch, ptr, sizeof(info->arch));
- } else if(!strcmp(key, "SIZE")) {
- /* size in the raw package is uncompressed (installed) size */
- info->isize = atol(ptr);
- } else if(!strcmp(key, "DEPEND")) {
- info->depends = alpm_list_add(info->depends, strdup(ptr));
- } else if(!strcmp(key, "REMOVE")) {
- info->removes = alpm_list_add(info->removes, strdup(ptr));
- } else if(!strcmp(key, "CONFLICT")) {
- info->conflicts = alpm_list_add(info->conflicts, strdup(ptr));
- } else if(!strcmp(key, "REPLACES")) {
- info->replaces = alpm_list_add(info->replaces, strdup(ptr));
- } else if(!strcmp(key, "PROVIDES")) {
- info->provides = alpm_list_add(info->provides, strdup(ptr));
- } else if(!strcmp(key, "BACKUP")) {
- info->backup = alpm_list_add(info->backup, strdup(ptr));
- } else {
- _alpm_log(PM_LOG_DEBUG, _("%s: syntax error in description file line %d"),
- info->name[0] != '\0' ? info->name : "error", linenum);
- }
- }
- line[0] = '\0';
- }
- fclose(fp);
- unlink(descfile);
-
return(0);
}
-pmpkg_t *_alpm_pkg_load(const char *pkgfile)
+/** Free a package.
+ * @param pkg package pointer to free
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
+int SYMEXPORT alpm_pkg_free(pmpkg_t *pkg)
{
- char *expath;
- int ret = ARCHIVE_OK;
- int config = 0;
- int filelist = 0;
- int scriptcheck = 0;
- struct archive *archive;
- struct archive_entry *entry;
- pmpkg_t *info = NULL;
- char *descfile = NULL;
- int fd = -1;
- alpm_list_t *all_files = NULL;
- struct stat st;
-
- ALPM_LOG_FUNC;
-
- if(pkgfile == NULL || strlen(pkgfile) == 0) {
- RET_ERR(PM_ERR_WRONG_ARGS, NULL);
- }
-
- if((archive = archive_read_new()) == NULL) {
- RET_ERR(PM_ERR_LIBARCHIVE_ERROR, NULL);
- }
-
- archive_read_support_compression_all(archive);
- archive_read_support_format_all(archive);
-
- if (archive_read_open_file(archive, pkgfile, ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) {
- RET_ERR(PM_ERR_PKG_OPEN, NULL);
- }
-
- info = _alpm_pkg_new(NULL, NULL);
- if(info == NULL) {
- archive_read_finish(archive);
- RET_ERR(PM_ERR_MEMORY, NULL);
- }
-
- if(stat(pkgfile, &st) == 0) {
- info->size = st.st_size;
- }
+ _alpm_log(PM_LOG_FUNCTION, "enter alpm_pkg_free\n");
- /* TODO there is no reason to make temp files to read
- * from a libarchive archive, it can be done by reading
- * directly from the archive
- * See: archive_read_data_into_buffer
- * requires changes 'parse_descfile' as well
- * */
+ ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
- /* Read through the entire archive for metadata. We will continue reading
- * even if all metadata is found, to verify the integrity of the archive in
- * full */
- while((ret = archive_read_next_header (archive, &entry)) == ARCHIVE_OK) {
- const char *entry_name = archive_entry_pathname(entry);
-
- if(strcmp(entry_name, ".PKGINFO") == 0) {
- /* extract this file into /tmp. it has info for us */
- descfile = strdup("/tmp/alpm_XXXXXX");
- fd = mkstemp(descfile);
- archive_read_data_into_fd (archive, fd);
- /* parse the info file */
- if(parse_descfile(descfile, info) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not parse the package description file"));
- goto pkg_invalid;
- }
- if(!strlen(info->name)) {
- _alpm_log(PM_LOG_ERROR, _("missing package name in %s"), pkgfile);
- goto pkg_invalid;
- }
- if(!strlen(info->version)) {
- _alpm_log(PM_LOG_ERROR, _("missing package version in %s"), pkgfile);
- goto pkg_invalid;
- }
- config = 1;
- unlink(descfile);
- FREE(descfile);
- close(fd);
- continue;
- } else if(strcmp(entry_name, ".INSTALL") == 0) {
- info->scriptlet = 1;
- scriptcheck = 1;
- } else if(strcmp(entry_name, ".FILELIST") == 0) {
- /* Build info->files from the filelist */
- FILE *fp;
- char *fn;
- char *str;
- int fd;
-
- if((str = (char *)malloc(PATH_MAX)) == NULL) {
- RET_ERR(PM_ERR_MEMORY, (pmpkg_t *)-1);
- }
- fn = strdup("/tmp/alpm_XXXXXX");
- fd = mkstemp(fn);
- archive_read_data_into_fd(archive,fd);
- fp = fopen(fn, "r");
- while(!feof(fp)) {
- if(fgets(str, PATH_MAX, fp) == NULL) {
- continue;
- }
- _alpm_strtrim(str);
- info->files = alpm_list_add(info->files, strdup(str));
- }
- FREE(str);
- fclose(fp);
- if(unlink(fn)) {
- _alpm_log(PM_LOG_WARNING, _("could not remove tempfile %s"), fn);
- }
- FREE(fn);
- close(fd);
- filelist = 1;
- continue;
- } else {
- scriptcheck = 1;
- /* Keep track of all files so we can generate a filelist later if missing */
- all_files = alpm_list_add(all_files, strdup(entry_name));
- }
-
- if(archive_read_data_skip(archive)) {
- _alpm_log(PM_LOG_ERROR, _("error while reading package: %s"), archive_error_string(archive));
- pm_errno = PM_ERR_LIBARCHIVE_ERROR;
- goto error;
- }
- expath = NULL;
- }
- if(ret != ARCHIVE_EOF) { /* An error occured */
- _alpm_log(PM_LOG_ERROR, _("error while reading package: %s"), archive_error_string(archive));
- pm_errno = PM_ERR_LIBARCHIVE_ERROR;
- goto error;
- }
-
- if(!config) {
- _alpm_log(PM_LOG_ERROR, _("missing package metadata"), pkgfile);
- goto error;
- }
-
- archive_read_finish(archive);
-
- if(!filelist) {
- _alpm_log(PM_LOG_ERROR, _("missing package filelist in %s, generating one"), pkgfile);
- info->files = all_files;
- } else {
- alpm_list_free_inner(all_files, free);
- alpm_list_free(all_files);
+ /* Only free packages loaded in user space */
+ if(pkg->origin != PKG_FROM_CACHE) {
+ _alpm_pkg_free(pkg);
}
- /* this is IMPORTANT - "checking for conflicts" requires a sorted list, so we
- * ensure that here */
- info->files = alpm_list_msort(info->files, alpm_list_count(info->files), _alpm_str_cmp);
-
- /* internal */
- info->origin = PKG_FROM_FILE;
- info->data = strdup(pkgfile);
- info->infolevel = 0xFF;
-
- return(info);
-
-pkg_invalid:
- pm_errno = PM_ERR_PKG_INVALID;
- if(descfile) {
- unlink(descfile);
- FREE(descfile);
- }
- if(fd != -1) {
- close(fd);
- }
-error:
- FREEPKG(info);
- archive_read_finish(archive);
-
- return(NULL);
+ return(0);
}
-/* Test for existence of a package in a alpm_list_t*
- * of pmpkg_t*
+/** Check the integrity (with md5) of a package from the sync cache.
+ * @param pkg package pointer
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-pmpkg_t *_alpm_pkg_find(const char *needle, alpm_list_t *haystack)
+int SYMEXPORT alpm_pkg_checkmd5sum(pmpkg_t *pkg)
{
- alpm_list_t *lp;
+ char *fpath;
+ char *md5sum = NULL;
+ int retval = 0;
ALPM_LOG_FUNC;
- if(needle == NULL || haystack == NULL) {
- return(NULL);
- }
+ ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
+ /* We only inspect packages from sync repositories */
+ ASSERT(pkg->origin == PKG_FROM_CACHE, RET_ERR(PM_ERR_PKG_INVALID, -1));
+ ASSERT(pkg->origin_data.db != handle->db_local, RET_ERR(PM_ERR_PKG_INVALID, -1));
- for(lp = haystack; lp; lp = lp->next) {
- pmpkg_t *info = lp->data;
+ fpath = _alpm_filecache_find(alpm_pkg_get_filename(pkg));
+ md5sum = alpm_get_md5sum(fpath);
- if(info && strcmp(alpm_pkg_get_name(info), needle) == 0) {
- return(info);
- }
- }
- return(NULL);
-}
-
-int _alpm_pkg_splitname(const char *target, char *name, char *version, int witharch)
-{
- char tmp[PKG_FULLNAME_LEN+7];
- const char *t;
- char *p, *q;
-
- ALPM_LOG_FUNC;
-
- if(target == NULL) {
- return(-1);
- }
-
- /* trim path name (if any) */
- if((t = strrchr(target, '/')) == NULL) {
- t = target;
+ if(md5sum == NULL) {
+ _alpm_log(PM_LOG_ERROR, _("could not get md5sum for package %s-%s\n"),
+ alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
+ pm_errno = PM_ERR_NOT_A_FILE;
+ retval = -1;
} else {
- t++;
- }
- STRNCPY(tmp, t, PKG_FULLNAME_LEN+7);
- /* trim file extension (if any) */
- if((p = strstr(tmp, PM_EXT_PKG))) {
- *p = '\0';
- }
-
- if(witharch) {
- /* trim architecture */
- if((p = alpm_pkg_name_hasarch(tmp))) {
- *p = 0;
+ if(strcmp(md5sum, alpm_pkg_get_md5sum(pkg)) == 0) {
+ _alpm_log(PM_LOG_DEBUG, "md5sums for package %s-%s match\n",
+ alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
+ } else {
+ _alpm_log(PM_LOG_ERROR, _("md5sums do not match for package %s-%s\n"),
+ alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
+ pm_errno = PM_ERR_PKG_INVALID;
+ retval = -1;
}
}
- p = tmp + strlen(tmp);
+ FREE(fpath);
+ FREE(md5sum);
- for(q = --p; *q && *q != '-'; q--);
- if(*q != '-' || q == tmp) {
- return(-1);
- }
- for(p = --q; *p && *p != '-'; p--);
- if(*p != '-' || p == tmp) {
- return(-1);
- }
- if(version) {
- STRNCPY(version, p+1, PKG_VERSION_LEN);
- }
- *p = '\0';
-
- if(name) {
- STRNCPY(name, tmp, PKG_NAME_LEN);
- }
-
- return(0);
+ return(retval);
}
-
-void _alpm_pkg_update_requiredby(pmpkg_t *pkg)
+/** Compare versions.
+ * @param ver1 first version
+ * @param ver2 secont version
+ * @return postive, 0 or negative if ver1 is less, equal or more
+ * than ver2, respectively.
+ */
+int SYMEXPORT alpm_pkg_vercmp(const char *ver1, const char *ver2)
{
- alpm_list_t *i, *j, *k;
- const char *pkgname = alpm_pkg_get_name(pkg);
-
- pmdb_t *localdb = alpm_option_get_localdb();
- for(i = _alpm_db_get_pkgcache(localdb); i; i = i->next) {
- if(!i->data) {
- continue;
- }
- pmpkg_t *cachepkg = i->data;
- const char *cachepkgname = alpm_pkg_get_name(cachepkg);
-
- for(j = alpm_pkg_get_depends(cachepkg); j; j = j->next) {
- pmdepend_t *dep;
- if(!j->data) {
- continue;
- }
- dep = alpm_splitdep(j->data);
- if(dep == NULL) {
- continue;
- }
-
- /* check the actual package itself */
- if(strcmp(dep->name, pkgname) == 0) {
- alpm_list_t *reqs = alpm_pkg_get_requiredby(pkg);
-
- if(!alpm_list_find_str(reqs, cachepkgname)) {
- _alpm_log(PM_LOG_DEBUG, _("adding '%s' in requiredby field for '%s'"),
- cachepkgname, pkg->name);
- reqs = alpm_list_add(reqs, strdup(cachepkgname));
- pkg->requiredby = reqs;
- }
- }
+ ALPM_LOG_FUNC;
- /* check for provisions as well */
- for(k = alpm_pkg_get_provides(pkg); k; k = k->next) {
- const char *provname = k->data;
- if(strcmp(dep->name, provname) == 0) {
- alpm_list_t *reqs = alpm_pkg_get_requiredby(pkg);
-
- if(!alpm_list_find_str(reqs, cachepkgname)) {
- _alpm_log(PM_LOG_DEBUG, _("adding '%s' in requiredby field for '%s' (provides: %s)"),
- cachepkgname, pkgname, provname);
- reqs = alpm_list_add(reqs, strdup(cachepkgname));
- pkg->requiredby = reqs;
- }
- }
- }
- free(dep);
- }
- }
+ return(_alpm_versioncmp(ver1, ver2));
}
const char SYMEXPORT *alpm_pkg_get_filename(pmpkg_t *pkg)
@@ -604,13 +167,13 @@ const char SYMEXPORT *alpm_pkg_get_filename(pmpkg_t *pkg)
if(!strlen(pkg->filename)) {
/* construct the file name, it's not in the desc file */
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
if(pkg->arch && strlen(pkg->arch) > 0) {
- snprintf(pkg->filename, PKG_FILENAME_LEN, "%s-%s-%s" PM_EXT_PKG,
+ snprintf(pkg->filename, PKG_FILENAME_LEN, "%s-%s-%s" PKGEXT,
pkg->name, pkg->version, pkg->arch);
} else {
- snprintf(pkg->filename, PKG_FILENAME_LEN, "%s-%s" PM_EXT_PKG,
+ snprintf(pkg->filename, PKG_FILENAME_LEN, "%s-%s" PKGEXT,
pkg->name, pkg->version);
}
}
@@ -627,7 +190,7 @@ const char SYMEXPORT *alpm_pkg_get_name(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_BASE)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_BASE);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_BASE);
}
return pkg->name;
}
@@ -641,7 +204,7 @@ const char SYMEXPORT *alpm_pkg_get_version(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_BASE)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_BASE);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_BASE);
}
return pkg->version;
}
@@ -655,7 +218,7 @@ const char SYMEXPORT *alpm_pkg_get_desc(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->desc;
}
@@ -669,49 +232,35 @@ const char SYMEXPORT *alpm_pkg_get_url(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->url;
}
-const char SYMEXPORT *alpm_pkg_get_builddate(pmpkg_t *pkg)
+time_t SYMEXPORT alpm_pkg_get_builddate(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
/* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(pkg != NULL, return(NULL));
+ ASSERT(handle != NULL, return(0));
+ ASSERT(pkg != NULL, return(0));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->builddate;
}
-const char SYMEXPORT *alpm_pkg_get_buildtype(pmpkg_t *pkg)
+time_t SYMEXPORT alpm_pkg_get_installdate(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
/* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(pkg != NULL, return(NULL));
+ ASSERT(handle != NULL, return(0));
+ ASSERT(pkg != NULL, return(0));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
- }
- return pkg->buildtype;
-}
-
-const char SYMEXPORT *alpm_pkg_get_installdate(pmpkg_t *pkg)
-{
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(pkg != NULL, return(NULL));
-
- if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->installdate;
}
@@ -725,7 +274,7 @@ const char SYMEXPORT *alpm_pkg_get_packager(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->packager;
}
@@ -739,25 +288,11 @@ const char SYMEXPORT *alpm_pkg_get_md5sum(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->md5sum;
}
-const char SYMEXPORT *alpm_pkg_get_sha1sum(pmpkg_t *pkg)
-{
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(handle != NULL, return(NULL));
- ASSERT(pkg != NULL, return(NULL));
-
- if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
- }
- return pkg->sha1sum;
-}
-
const char SYMEXPORT *alpm_pkg_get_arch(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
@@ -767,7 +302,7 @@ const char SYMEXPORT *alpm_pkg_get_arch(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->arch;
}
@@ -781,7 +316,7 @@ unsigned long SYMEXPORT alpm_pkg_get_size(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(-1));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->size;
}
@@ -795,7 +330,7 @@ unsigned long SYMEXPORT alpm_pkg_get_isize(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(-1));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->isize;
}
@@ -809,7 +344,7 @@ pmpkgreason_t SYMEXPORT alpm_pkg_get_reason(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(-1));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->reason;
}
@@ -823,7 +358,7 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_licenses(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->licenses;
}
@@ -837,12 +372,11 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_groups(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->groups;
}
-/* depends */
alpm_list_t SYMEXPORT *alpm_pkg_get_depends(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
@@ -852,12 +386,12 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_depends(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DEPENDS)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DEPENDS);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DEPENDS);
}
return pkg->depends;
}
-alpm_list_t SYMEXPORT *alpm_pkg_get_removes(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_optdepends(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
@@ -866,12 +400,12 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_removes(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DEPENDS)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DEPENDS);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DEPENDS);
}
- return pkg->removes;
+ return pkg->optdepends;
}
-alpm_list_t SYMEXPORT *alpm_pkg_get_requiredby(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_conflicts(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
@@ -880,12 +414,12 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_requiredby(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DEPENDS)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DEPENDS);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DEPENDS);
}
- return pkg->requiredby;
+ return pkg->conflicts;
}
-alpm_list_t SYMEXPORT *alpm_pkg_get_conflicts(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_provides(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
@@ -894,12 +428,12 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_conflicts(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DEPENDS)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DEPENDS);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DEPENDS);
}
- return pkg->conflicts;
+ return pkg->provides;
}
-alpm_list_t SYMEXPORT *alpm_pkg_get_provides(pmpkg_t *pkg)
+alpm_list_t SYMEXPORT *alpm_pkg_get_deltas(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
@@ -907,10 +441,10 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_provides(pmpkg_t *pkg)
ASSERT(handle != NULL, return(NULL));
ASSERT(pkg != NULL, return(NULL));
- if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DEPENDS)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DEPENDS);
+ if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DELTAS)) {
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DELTAS);
}
- return pkg->provides;
+ return pkg->deltas;
}
alpm_list_t SYMEXPORT *alpm_pkg_get_replaces(pmpkg_t *pkg)
@@ -922,7 +456,7 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_replaces(pmpkg_t *pkg)
ASSERT(pkg != NULL, return(NULL));
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_DESC);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
}
return pkg->replaces;
}
@@ -935,9 +469,9 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_files(pmpkg_t *pkg)
ASSERT(handle != NULL, return(NULL));
ASSERT(pkg != NULL, return(NULL));
- if(pkg->origin == PKG_FROM_CACHE && pkg->data == handle->db_local
+ if(pkg->origin == PKG_FROM_CACHE && pkg->origin_data.db == handle->db_local
&& !(pkg->infolevel & INFRQ_FILES)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_FILES);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_FILES);
}
return pkg->files;
}
@@ -950,9 +484,9 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_backup(pmpkg_t *pkg)
ASSERT(handle != NULL, return(NULL));
ASSERT(pkg != NULL, return(NULL));
- if(pkg->origin == PKG_FROM_CACHE && pkg->data == handle->db_local
+ if(pkg->origin == PKG_FROM_CACHE && pkg->origin_data.db == handle->db_local
&& !(pkg->infolevel & INFRQ_FILES)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_FILES);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_FILES);
}
return pkg->backup;
}
@@ -965,13 +499,572 @@ unsigned short SYMEXPORT alpm_pkg_has_scriptlet(pmpkg_t *pkg)
ASSERT(handle != NULL, return(-1));
ASSERT(pkg != NULL, return(-1));
- if(pkg->origin == PKG_FROM_CACHE && pkg->data == handle->db_local
+ if(pkg->origin == PKG_FROM_CACHE && pkg->origin_data.db == handle->db_local
&& !(pkg->infolevel & INFRQ_SCRIPTLET)) {
- _alpm_db_read(pkg->data, pkg, INFRQ_SCRIPTLET);
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_SCRIPTLET);
}
return pkg->scriptlet;
}
+/**
+ * @brief Compute the packages requiring a given package.
+ * @param pkg a package
+ * @return the list of packages requiring pkg
+ *
+ * A depends on B through n depends <=> A listed in B's requiredby n times
+ * n == 0 or 1 in almost all cases */
+alpm_list_t SYMEXPORT *alpm_pkg_compute_requiredby(pmpkg_t *pkg)
+{
+ const alpm_list_t *i, *j;
+ alpm_list_t *reqs = NULL;
+
+ pmdb_t *localdb = alpm_option_get_localdb();
+ for(i = _alpm_db_get_pkgcache(localdb); i; i = i->next) {
+ if(!i->data) {
+ continue;
+ }
+ pmpkg_t *cachepkg = i->data;
+ const char *cachepkgname = alpm_pkg_get_name(cachepkg);
+
+ for(j = alpm_pkg_get_depends(cachepkg); j; j = j->next) {
+ pmdepend_t *dep = j->data;
+
+ if(alpm_depcmp(pkg, dep)) {
+ _alpm_log(PM_LOG_DEBUG, "adding '%s' in requiredby field for '%s'\n",
+ cachepkgname, pkg->name);
+ reqs = alpm_list_add(reqs, strdup(cachepkgname));
+ }
+ }
+ }
+ return(reqs);
+}
+
+/** @} */
+
+/* this function was taken from rpm 4.0.4 and rewritten */
+int _alpm_versioncmp(const char *a, const char *b)
+{
+ char str1[64], str2[64];
+ char *ptr1, *ptr2;
+ char *one, *two;
+ char *rel1 = NULL, *rel2 = NULL;
+ char oldch1, oldch2;
+ int is1num, is2num;
+ int rc;
+
+ ALPM_LOG_FUNC;
+
+ if(!strcmp(a,b)) {
+ return(0);
+ }
+
+ strncpy(str1, a, 64);
+ str1[63] = 0;
+ strncpy(str2, b, 64);
+ str2[63] = 0;
+
+ /* lose the release number */
+ for(one = str1; *one && *one != '-'; one++);
+ if(one) {
+ *one = '\0';
+ rel1 = ++one;
+ }
+ for(two = str2; *two && *two != '-'; two++);
+ if(two) {
+ *two = '\0';
+ rel2 = ++two;
+ }
+
+ one = str1;
+ two = str2;
+
+ while(*one || *two) {
+ while(*one && !isalnum((int)*one)) one++;
+ while(*two && !isalnum((int)*two)) two++;
+
+ ptr1 = one;
+ ptr2 = two;
+
+ /* find the next segment for each string */
+ if(isdigit((int)*ptr1)) {
+ is1num = 1;
+ while(*ptr1 && isdigit((int)*ptr1)) ptr1++;
+ } else {
+ is1num = 0;
+ while(*ptr1 && isalpha((int)*ptr1)) ptr1++;
+ }
+ if(isdigit((int)*ptr2)) {
+ is2num = 1;
+ while(*ptr2 && isdigit((int)*ptr2)) ptr2++;
+ } else {
+ is2num = 0;
+ while(*ptr2 && isalpha((int)*ptr2)) ptr2++;
+ }
+
+ oldch1 = *ptr1;
+ *ptr1 = '\0';
+ oldch2 = *ptr2;
+ *ptr2 = '\0';
+
+ /* see if we ran out of segments on one string */
+ if(one == ptr1 && two != ptr2) {
+ return(is2num ? -1 : 1);
+ }
+ if(one != ptr1 && two == ptr2) {
+ return(is1num ? 1 : -1);
+ }
+
+ /* see if we have a type mismatch (ie, one is alpha and one is digits) */
+ if(is1num && !is2num) return(1);
+ if(!is1num && is2num) return(-1);
+
+ if(is1num) while(*one == '0') one++;
+ if(is2num) while(*two == '0') two++;
+
+ rc = strverscmp(one, two);
+ if(rc) return(rc);
+
+ *ptr1 = oldch1;
+ *ptr2 = oldch2;
+ one = ptr1;
+ two = ptr2;
+ }
+
+ if((!*one) && (!*two)) {
+ /* compare release numbers */
+ if(rel1 && rel2 && strlen(rel1) && strlen(rel2)) return(_alpm_versioncmp(rel1, rel2));
+ return(0);
+ }
+
+ return(*one ? 1 : -1);
+}
+
+
+pmpkg_t *_alpm_pkg_new(const char *name, const char *version)
+{
+ pmpkg_t* pkg;
+
+ ALPM_LOG_FUNC;
+
+ CALLOC(pkg, 1, sizeof(pmpkg_t), RET_ERR(PM_ERR_MEMORY, NULL));
+
+ if(name && name[0] != 0) {
+ strncpy(pkg->name, name, PKG_NAME_LEN);
+ } else {
+ pkg->name[0] = '\0';
+ }
+ if(version && version[0] != 0) {
+ strncpy(pkg->version, version, PKG_VERSION_LEN);
+ } else {
+ pkg->version[0] = '\0';
+ }
+
+ return(pkg);
+}
+
+pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg)
+{
+ pmpkg_t* newpkg;
+
+ ALPM_LOG_FUNC;
+
+ CALLOC(newpkg, 1, sizeof(pmpkg_t), RET_ERR(PM_ERR_MEMORY, NULL));
+
+ memcpy(newpkg, pkg, sizeof(pmpkg_t));
+ newpkg->licenses = alpm_list_strdup(alpm_pkg_get_licenses(pkg));
+ newpkg->conflicts = alpm_list_strdup(alpm_pkg_get_conflicts(pkg));
+ newpkg->files = alpm_list_strdup(alpm_pkg_get_files(pkg));
+ newpkg->backup = alpm_list_strdup(alpm_pkg_get_backup(pkg));
+ newpkg->depends = alpm_list_copy_data(alpm_pkg_get_depends(pkg),
+ sizeof(pmdepend_t));
+ newpkg->optdepends = alpm_list_strdup(alpm_pkg_get_optdepends(pkg));
+ newpkg->groups = alpm_list_strdup(alpm_pkg_get_groups(pkg));
+ newpkg->provides = alpm_list_strdup(alpm_pkg_get_provides(pkg));
+ newpkg->replaces = alpm_list_strdup(alpm_pkg_get_replaces(pkg));
+ newpkg->deltas = alpm_list_copy_data(alpm_pkg_get_deltas(pkg),
+ sizeof(pmdelta_t));
+ /* internal */
+ if(newpkg->origin == PKG_FROM_FILE) {
+ newpkg->origin_data.file = strdup(pkg->origin_data.file);
+ } else {
+ newpkg->origin_data.db = pkg->origin_data.db;
+ }
+
+ return(newpkg);
+}
+
+void _alpm_pkg_free(pmpkg_t *pkg)
+{
+ ALPM_LOG_FUNC;
+
+ if(pkg == NULL) {
+ return;
+ }
+
+ FREELIST(pkg->licenses);
+ FREELIST(pkg->files);
+ FREELIST(pkg->backup);
+ FREELIST(pkg->depends);
+ FREELIST(pkg->optdepends);
+ FREELIST(pkg->conflicts);
+ FREELIST(pkg->groups);
+ FREELIST(pkg->provides);
+ FREELIST(pkg->replaces);
+ FREELIST(pkg->deltas);
+ if(pkg->origin == PKG_FROM_FILE) {
+ FREE(pkg->origin_data.file);
+ }
+ FREE(pkg);
+}
+
+/* Is pkgB an upgrade for pkgA ? */
+int alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg)
+{
+ int cmp = 0;
+
+ ALPM_LOG_FUNC;
+
+ if(pkg->origin == PKG_FROM_CACHE) {
+ /* ensure we have the /desc file, which contains the 'force' option */
+ _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
+ }
+
+ /* compare versions and see if we need to upgrade */
+ cmp = _alpm_versioncmp(alpm_pkg_get_version(pkg), alpm_pkg_get_version(local_pkg));
+
+ if(cmp != 0 && pkg->force) {
+ cmp = 1;
+ _alpm_log(PM_LOG_WARNING, _("%s: forcing upgrade to version %s\n"),
+ alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
+ } else if(cmp < 0) {
+ /* local version is newer */
+ pmdb_t *db = pkg->origin_data.db;
+ _alpm_log(PM_LOG_WARNING, _("%s: local (%s) is newer than %s (%s)\n"),
+ alpm_pkg_get_name(local_pkg), alpm_pkg_get_version(local_pkg),
+ alpm_db_get_name(db), alpm_pkg_get_version(pkg));
+ cmp = 0;
+ } else if(cmp > 0) {
+ /* we have an upgrade, make sure we should actually do it */
+ if(_alpm_pkg_istoonew(pkg)) {
+ /* package too new (UpgradeDelay) */
+ _alpm_log(PM_LOG_WARNING, _("%s-%s: delaying upgrade of package (%s)\n"),
+ alpm_pkg_get_name(local_pkg), alpm_pkg_get_version(local_pkg),
+ alpm_pkg_get_version(pkg));
+ cmp = 0;
+ }
+ }
+
+ return(cmp);
+}
+
+/* Helper function for comparing packages
+ */
+int _alpm_pkg_cmp(const void *p1, const void *p2)
+{
+ pmpkg_t *pk1 = (pmpkg_t *)p1;
+ pmpkg_t *pk2 = (pmpkg_t *)p2;
+
+ return(strcmp(alpm_pkg_get_name(pk1), alpm_pkg_get_name(pk2)));
+}
+
+/* Parses the package description file for the current package
+ * TODO: this should ALL be in a backend interface (be_files), we should
+ * be dealing with the abstracted concepts only in this file
+ * Returns: 0 on success, 1 on error
+ *
+ */
+static int parse_descfile(const char *descfile, pmpkg_t *info)
+{
+ FILE* fp = NULL;
+ char line[PATH_MAX];
+ char *ptr = NULL;
+ char *key = NULL;
+ int linenum = 0;
+
+ ALPM_LOG_FUNC;
+
+ if((fp = fopen(descfile, "r")) == NULL) {
+ _alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), descfile, strerror(errno));
+ return(-1);
+ }
+
+ while(!feof(fp)) {
+ fgets(line, PATH_MAX, fp);
+ linenum++;
+ _alpm_strtrim(line);
+ if(strlen(line) == 0 || line[0] == '#') {
+ continue;
+ }
+ ptr = line;
+ key = strsep(&ptr, "=");
+ if(key == NULL || ptr == NULL) {
+ _alpm_log(PM_LOG_DEBUG, "%s: syntax error in description file line %d\n",
+ info->name[0] != '\0' ? info->name : "error", linenum);
+ } else {
+ _alpm_strtrim(key);
+ _alpm_strtrim(ptr);
+ if(!strcmp(key, "pkgname")) {
+ strncpy(info->name, ptr, sizeof(info->name));
+ } else if(!strcmp(key, "pkgver")) {
+ strncpy(info->version, ptr, sizeof(info->version));
+ } else if(!strcmp(key, "pkgdesc")) {
+ strncpy(info->desc, ptr, sizeof(info->desc));
+ } else if(!strcmp(key, "group")) {
+ info->groups = alpm_list_add(info->groups, strdup(ptr));
+ } else if(!strcmp(key, "url")) {
+ strncpy(info->url, ptr, sizeof(info->url));
+ } else if(!strcmp(key, "license")) {
+ info->licenses = alpm_list_add(info->licenses, strdup(ptr));
+ } else if(!strcmp(key, "builddate")) {
+ char first = tolower(ptr[0]);
+ if(first > 'a' && first < 'z') {
+ struct tm tmp_tm = {0}; //initialize to null incase of failure
+ setlocale(LC_TIME, "C");
+ strptime(ptr, "%a %b %e %H:%M:%S %Y", &tmp_tm);
+ info->builddate = mktime(&tmp_tm);
+ setlocale(LC_TIME, "");
+ } else {
+ info->builddate = atol(ptr);
+ }
+ } else if(!strcmp(key, "packager")) {
+ strncpy(info->packager, ptr, sizeof(info->packager));
+ } else if(!strcmp(key, "arch")) {
+ strncpy(info->arch, ptr, sizeof(info->arch));
+ } else if(!strcmp(key, "size")) {
+ /* size in the raw package is uncompressed (installed) size */
+ info->isize = atol(ptr);
+ } else if(!strcmp(key, "depend")) {
+ pmdepend_t *dep = alpm_splitdep(ptr);
+ info->depends = alpm_list_add(info->depends, dep);
+ } else if(!strcmp(key, "optdepend")) {
+ info->optdepends = alpm_list_add(info->optdepends, strdup(ptr));
+ } else if(!strcmp(key, "conflict")) {
+ info->conflicts = alpm_list_add(info->conflicts, strdup(ptr));
+ } else if(!strcmp(key, "replaces")) {
+ info->replaces = alpm_list_add(info->replaces, strdup(ptr));
+ } else if(!strcmp(key, "provides")) {
+ info->provides = alpm_list_add(info->provides, strdup(ptr));
+ } else if(!strcmp(key, "backup")) {
+ info->backup = alpm_list_add(info->backup, strdup(ptr));
+ } else {
+ _alpm_log(PM_LOG_DEBUG, "%s: syntax error in description file line %d\n",
+ info->name[0] != '\0' ? info->name : "error", linenum);
+ }
+ }
+ line[0] = '\0';
+ }
+ fclose(fp);
+ unlink(descfile);
+
+ return(0);
+}
+
+
+/**
+ * Load a package and create the corresponding pmpkg_t struct.
+ * @param pkgfile path to the package file
+ * @param full whether to stop the load after metadata is read or continue
+ * through the full archive
+ * @return An information filled pmpkg_t struct
+ */
+pmpkg_t *_alpm_pkg_load(const char *pkgfile, unsigned short full)
+{
+ int ret = ARCHIVE_OK;
+ int config = 0;
+ int filelist = 0;
+ struct archive *archive;
+ struct archive_entry *entry;
+ pmpkg_t *info = NULL;
+ char *descfile = NULL;
+ int fd = -1;
+ alpm_list_t *all_files = NULL;
+ struct stat st;
+
+ ALPM_LOG_FUNC;
+
+ if(pkgfile == NULL || strlen(pkgfile) == 0) {
+ RET_ERR(PM_ERR_WRONG_ARGS, NULL);
+ }
+
+ if((archive = archive_read_new()) == NULL) {
+ RET_ERR(PM_ERR_LIBARCHIVE_ERROR, NULL);
+ }
+
+ archive_read_support_compression_all(archive);
+ archive_read_support_format_all(archive);
+
+ if (archive_read_open_filename(archive, pkgfile,
+ ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) {
+ RET_ERR(PM_ERR_PKG_OPEN, NULL);
+ }
+
+ info = _alpm_pkg_new(NULL, NULL);
+ if(info == NULL) {
+ archive_read_finish(archive);
+ RET_ERR(PM_ERR_MEMORY, NULL);
+ }
+
+ if(stat(pkgfile, &st) == 0) {
+ info->size = st.st_size;
+ }
+
+ /* TODO there is no reason to make temp files to read
+ * from a libarchive archive, it can be done by reading
+ * directly from the archive
+ * See: archive_read_data_into_buffer
+ * requires changes 'parse_descfile' as well
+ * */
+
+ /* If full is false, only read through the archive until we find our needed
+ * metadata. If it is true, read through the entire archive, which serves
+ * as a verfication of integrity. */
+ while((ret = archive_read_next_header(archive, &entry)) == ARCHIVE_OK) {
+ const char *entry_name = archive_entry_pathname(entry);
+
+ if(strcmp(entry_name, ".PKGINFO") == 0) {
+ /* extract this file into /tmp. it has info for us */
+ descfile = strdup("/tmp/alpm_XXXXXX");
+ fd = mkstemp(descfile);
+ archive_read_data_into_fd(archive, fd);
+ /* parse the info file */
+ if(parse_descfile(descfile, info) == -1) {
+ _alpm_log(PM_LOG_ERROR, _("could not parse package description file in %s\n"),
+ pkgfile);
+ goto pkg_invalid;
+ }
+ if(!strlen(info->name)) {
+ _alpm_log(PM_LOG_ERROR, _("missing package name in %s\n"), pkgfile);
+ goto pkg_invalid;
+ }
+ if(!strlen(info->version)) {
+ _alpm_log(PM_LOG_ERROR, _("missing package version in %s\n"), pkgfile);
+ goto pkg_invalid;
+ }
+ config = 1;
+ unlink(descfile);
+ FREE(descfile);
+ close(fd);
+ continue;
+ } else if(strcmp(entry_name, ".INSTALL") == 0) {
+ info->scriptlet = 1;
+ } else if(strcmp(entry_name, ".FILELIST") == 0) {
+ /* Build info->files from the filelist */
+ FILE *fp;
+ char *fn;
+ char str[PATH_MAX+1];
+ int fd;
+
+ fn = strdup("/tmp/alpm_XXXXXX");
+ fd = mkstemp(fn);
+ archive_read_data_into_fd(archive,fd);
+ fp = fopen(fn, "r");
+ while(!feof(fp)) {
+ if(fgets(str, PATH_MAX, fp) == NULL) {
+ continue;
+ }
+ _alpm_strtrim(str);
+ info->files = alpm_list_add(info->files, strdup(str));
+ }
+ fclose(fp);
+ if(unlink(fn)) {
+ _alpm_log(PM_LOG_WARNING, _("could not remove tempfile %s\n"), fn);
+ }
+ FREE(fn);
+ close(fd);
+ filelist = 1;
+ continue;
+ } else if(*entry_name == '.') {
+ /* for now, ignore all files starting with '.' that haven't
+ * already been handled (for future possibilities) */
+ } else {
+ /* Keep track of all files so we can generate a filelist later if missing */
+ all_files = alpm_list_add(all_files, strdup(entry_name));
+ }
+
+ if(archive_read_data_skip(archive)) {
+ _alpm_log(PM_LOG_ERROR, _("error while reading package %s: %s\n"),
+ pkgfile, archive_error_string(archive));
+ pm_errno = PM_ERR_LIBARCHIVE_ERROR;
+ goto error;
+ }
+
+ /* if we are not doing a full read, see if we have all we need */
+ if(!full && config && filelist) {
+ break;
+ }
+ }
+
+ if(ret != ARCHIVE_EOF && ret != ARCHIVE_OK) { /* An error occured */
+ _alpm_log(PM_LOG_ERROR, _("error while reading package %s: %s\n"),
+ pkgfile, archive_error_string(archive));
+ pm_errno = PM_ERR_LIBARCHIVE_ERROR;
+ goto error;
+ }
+
+ if(!config) {
+ _alpm_log(PM_LOG_ERROR, _("missing package metadata in %s\n"), pkgfile);
+ goto error;
+ }
+
+ archive_read_finish(archive);
+
+ if(!filelist) {
+ _alpm_log(PM_LOG_ERROR, _("missing package filelist in %s, generating one\n"), pkgfile);
+ info->files = all_files;
+ } else {
+ FREELIST(all_files);
+ }
+
+ /* this is IMPORTANT - "checking for conflicts" requires a sorted list, so we
+ * ensure that here */
+ info->files = alpm_list_msort(info->files, alpm_list_count(info->files), _alpm_str_cmp);
+
+ /* internal */
+ info->origin = PKG_FROM_FILE;
+ info->origin_data.file = strdup(pkgfile);
+ info->infolevel = 0xFF;
+
+ return(info);
+
+pkg_invalid:
+ pm_errno = PM_ERR_PKG_INVALID;
+ if(descfile) {
+ unlink(descfile);
+ FREE(descfile);
+ }
+ if(fd != -1) {
+ close(fd);
+ }
+error:
+ _alpm_pkg_free(info);
+ archive_read_finish(archive);
+
+ return(NULL);
+}
+
+/* Test for existence of a package in a alpm_list_t*
+ * of pmpkg_t*
+ */
+pmpkg_t *_alpm_pkg_find(const char *needle, alpm_list_t *haystack)
+{
+ alpm_list_t *lp;
+
+ ALPM_LOG_FUNC;
+
+ if(needle == NULL || haystack == NULL) {
+ return(NULL);
+ }
+
+ for(lp = haystack; lp; lp = lp->next) {
+ pmpkg_t *info = lp->data;
+
+ if(info && strcmp(alpm_pkg_get_name(info), needle) == 0) {
+ return(info);
+ }
+ }
+ return(NULL);
+}
+
/* TODO this should either be public, or done somewhere else */
int _alpm_pkg_istoonew(pmpkg_t *pkg)
{
@@ -984,4 +1077,34 @@ int _alpm_pkg_istoonew(pmpkg_t *pkg)
time(&t);
return((pkg->date + handle->upgradedelay) > t);
}
+
+/** Test if a package should be ignored.
+ *
+ * Checks if the package is ignored via IgnorePkg, or if the package is
+ * in a group ignored via IgnoreGrp.
+ *
+ * @param pkg the package to test
+ *
+ * @return 1 if the package should be ignored, 0 otherwise
+ */
+int _alpm_pkg_should_ignore(pmpkg_t *pkg)
+{
+ alpm_list_t *groups = NULL;
+
+ /* first see if the package is ignored */
+ if(alpm_list_find_str(handle->ignorepkg, alpm_pkg_get_name(pkg))) {
+ return(1);
+ }
+
+ /* next see if the package is in a group that is ignored */
+ for(groups = handle->ignoregrp; groups; groups = alpm_list_next(groups)) {
+ char *grp = (char *)alpm_list_getdata(groups);
+ if(alpm_list_find_str(alpm_pkg_get_groups(pkg), grp)) {
+ return(1);
+ }
+ }
+
+ return(0);
+}
+
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/package.h b/lib/libalpm/package.h
index 8055c177..5e06785e 100644
--- a/lib/libalpm/package.h
+++ b/lib/libalpm/package.h
@@ -1,12 +1,12 @@
/*
* package.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>
* Copyright (c) 2005, 2006 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -19,15 +19,13 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_PACKAGE_H
#define _ALPM_PACKAGE_H
-#if defined(__APPLE__) || defined(__sun__)
#include <time.h>
-#endif
#include "alpm.h"
#include "db.h"
@@ -48,7 +46,6 @@ typedef enum _pmpkgfrom_t {
#define PKG_TYPE_LEN 32
#define PKG_PACKAGER_LEN 64
#define PKG_MD5SUM_LEN 33
-#define PKG_SHA1SUM_LEN 41
#define PKG_ARCH_LEN 32
struct __pmpkg_t {
@@ -57,12 +54,10 @@ struct __pmpkg_t {
char version[PKG_VERSION_LEN];
char desc[PKG_DESC_LEN];
char url[PKG_URL_LEN];
- char builddate[PKG_DATE_LEN];
- char buildtype[PKG_TYPE_LEN];
- char installdate[PKG_DATE_LEN];
+ time_t builddate;
+ time_t installdate;
char packager[PKG_PACKAGER_LEN];
char md5sum[PKG_MD5SUM_LEN];
- char sha1sum[PKG_SHA1SUM_LEN];
char arch[PKG_ARCH_LEN];
unsigned long size;
unsigned long isize;
@@ -70,44 +65,39 @@ struct __pmpkg_t {
unsigned short force;
time_t date;
pmpkgreason_t reason;
- /* alpm_list_t *desc_localized;*/
alpm_list_t *licenses;
alpm_list_t *replaces;
alpm_list_t *groups;
alpm_list_t *files;
alpm_list_t *backup;
alpm_list_t *depends;
- alpm_list_t *removes;
- alpm_list_t *requiredby;
+ alpm_list_t *optdepends;
alpm_list_t *conflicts;
alpm_list_t *provides;
+ alpm_list_t *deltas;
/* internal */
pmpkgfrom_t origin;
- void *data;
- /* TODO replace 'data' with this:
+ /* Replaced 'void *data' with this union as follows:
origin == PKG_FROM_CACHE, use pkg->origin_data.db
- origin == PKG_FROM_FILE, use pkg->origin_data.fd
+ origin == PKG_FROM_FILE, use pkg->origin_data.file
+ */
union {
- int fd;
pmdb_t *db;
+ char *file;
} origin_data;
- */
pmdbinfrq_t infolevel;
};
-#define FREEPKG(p) do { if(p){_alpm_pkg_free(p); p = NULL;}} while(0)
-#define FREELISTPKGS(p) _FREELIST(p, _alpm_pkg_free)
-
+int _alpm_versioncmp(const char *a, const char *b);
pmpkg_t* _alpm_pkg_new(const char *name, const char *version);
pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg);
-void _alpm_pkg_free(void *data);
+void _alpm_pkg_free(pmpkg_t *pkg);
int _alpm_pkg_cmp(const void *p1, const void *p2);
int alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg);
-pmpkg_t *_alpm_pkg_load(const char *pkgfile);
+pmpkg_t *_alpm_pkg_load(const char *pkgfile, unsigned short full);
pmpkg_t *_alpm_pkg_find(const char *needle, alpm_list_t *haystack);
-int _alpm_pkg_splitname(const char *target, char *name, char *version, int witharch);
int _alpm_pkg_istoonew(pmpkg_t *pkg);
-void _alpm_pkg_update_requiredby(pmpkg_t *pkg);
+int _alpm_pkg_should_ignore(pmpkg_t *pkg);
#endif /* _ALPM_PACKAGE_H */
diff --git a/lib/libalpm/po/.gitignore b/lib/libalpm/po/.gitignore
index 50a7b2a4..3be83ffa 100644
--- a/lib/libalpm/po/.gitignore
+++ b/lib/libalpm/po/.gitignore
@@ -1,5 +1,3 @@
-Makefile
-Makefile.in
*.gmo
POTFILES
stamp-po
diff --git a/lib/libalpm/po/POTFILES.in b/lib/libalpm/po/POTFILES.in
index e668f661..80130f24 100644
--- a/lib/libalpm/po/POTFILES.in
+++ b/lib/libalpm/po/POTFILES.in
@@ -8,18 +8,16 @@ lib/libalpm/be_files.c
lib/libalpm/cache.c
lib/libalpm/conflict.c
lib/libalpm/db.c
+lib/libalpm/delta.c
lib/libalpm/deps.c
lib/libalpm/error.c
lib/libalpm/group.c
lib/libalpm/handle.c
lib/libalpm/log.c
lib/libalpm/md5.c
-lib/libalpm/md5driver.c
lib/libalpm/package.c
-lib/libalpm/provide.c
lib/libalpm/remove.c
-lib/libalpm/sha1.c
+lib/libalpm/server.c
lib/libalpm/sync.c
lib/libalpm/trans.c
lib/libalpm/util.c
-lib/libalpm/versioncmp.c
diff --git a/lib/libalpm/po/de.po b/lib/libalpm/po/de.po
index 6e699fa1..e444ba18 100644
--- a/lib/libalpm/po/de.po
+++ b/lib/libalpm/po/de.po
@@ -10,9 +10,9 @@ msgid ""
msgstr ""
"Project-Id-Version: de\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-09-16 16:55-0500\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
"PO-Revision-Date: 2007-04-17 20:26+0200\n"
-"Last-Translator: Pierre Schmitz <pierre@archlinux.de>\n"
+"Last-Translator: Matthias Gorissen <matthias@archlinux.de>\n"
"Language-Team: German <archlinux.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -20,1499 +20,730 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);X-Generator: KBabel 1.11.4\n"
"X-Generator: KBabel 1.11.4\n"
-#: lib/libalpm/add.c:77
-#, c-format
-msgid "loading target '%s'"
-msgstr "Lade Ziel '%s'"
-
-#: lib/libalpm/add.c:122
-#, c-format
-msgid "replacing older version %s-%s by %s in target list"
+#: lib/libalpm/add.c:88
+#, fuzzy, c-format
+msgid "replacing older version %s-%s by %s in target list\n"
msgstr "Ersetze ältere Version %s-%s durch %s in der Ziel-Liste"
-#: lib/libalpm/add.c:131
-#, c-format
-msgid "newer version %s-%s is in the target list -- skipping"
+#: lib/libalpm/add.c:97
+#, fuzzy, c-format
+msgid "newer version %s-%s is in the target list -- skipping\n"
msgstr "Neuere Version %s-%s ist in der Ziel-Liste -- Ãœberspringe"
-#: lib/libalpm/add.c:138
-#, c-format
-msgid "reading '%s' metadata"
-msgstr "Lese Metadaten von '%s'"
-
-#: lib/libalpm/add.c:191 lib/libalpm/remove.c:111
-msgid "looking for unsatisfied dependencies"
-msgstr "Suche nach ungelösten Abhängigkeiten"
+#: lib/libalpm/add.c:168
+msgid "conflicting packages were found in the target list\n"
+msgstr ""
-#: lib/libalpm/add.c:203 lib/libalpm/sync.c:483
-msgid "looking for conflicts"
-msgstr "Suche nach Konflikten"
+#: lib/libalpm/add.c:169
+msgid "you cannot install two conflicting packages at the same time\n"
+msgstr ""
-#: lib/libalpm/add.c:208
-msgid "replacing packages with -A and -U is not supported yet"
+#: lib/libalpm/add.c:172
+#, fuzzy
+msgid "replacing packages with -A and -U is not supported yet\n"
msgstr "Das Ersetzen von Paketen mit -A und -U wird noch nicht unterstützt"
-#: lib/libalpm/add.c:209
-#, c-format
-msgid "please remove '%s' first, using -Rd"
-msgstr "Entfernen Sie bitte zuerst '%s' mit -Rd"
-
-#: lib/libalpm/add.c:250 lib/libalpm/remove.c:147
-msgid "sorting by dependencies"
-msgstr "Sortiere nach Abhängigkeiten"
-
-#: lib/libalpm/add.c:262
-msgid "cleaning up"
-msgstr "Räume auf"
-
-#: lib/libalpm/add.c:277
-msgid "looking for file conflicts"
-msgstr "Suche nach Dateikonflikten"
-
-#: lib/libalpm/add.c:346
-#, c-format
-msgid "upgrading package %s-%s"
-msgstr "Aktualisiere Paket %s-%s"
-
-#: lib/libalpm/add.c:370
-#, c-format
-msgid "adding package %s-%s"
-msgstr "Füge Paket %s-%s hinzu"
-
-#: lib/libalpm/add.c:383
-#, c-format
-msgid "removing old package first (%s-%s)"
-msgstr "Entferne zuerst altes Paket (%s-%s)"
-
-#: lib/libalpm/add.c:411
-#, c-format
-msgid "adding %s to the NoUpgrade array temporarily"
-msgstr "Füge %s temporär zum NoUpgrade-Array hinzu"
-
-#: lib/libalpm/add.c:429
-msgid "extracting files"
-msgstr "Entpacke Dateien"
-
-#: lib/libalpm/add.c:444 lib/libalpm/util.c:465
-msgid "could not get current working directory"
-msgstr "Konnte aktuelles Arbeitsverzeichnis nicht ermitteln"
-
-#: lib/libalpm/add.c:500 lib/libalpm/add.c:501
-#, c-format
-msgid "%s is in NoExtract, skipping extraction"
-msgstr "%s ist in NoExtract, wird nicht entpackt"
-
-#: lib/libalpm/add.c:508
-#, c-format
-msgid "%s is in trans->skip_add, skipping extraction"
-msgstr "%s ist in trans->skip_add, wird nicht entpackt"
-
-#: lib/libalpm/add.c:554 lib/libalpm/add.c:555 lib/libalpm/add.c:706
-#, c-format
-msgid "could not extract %s (%s)"
-msgstr "Konnte %s nicht entpacken (%s)"
-
-#: lib/libalpm/add.c:598
-#, c-format
-msgid "checking md5 hashes for %s"
-msgstr "Prüfe MD5-Hashes für %s"
+#: lib/libalpm/add.c:173
+msgid "you can replace packages manually using -Rd and -U\n"
+msgstr ""
-#: lib/libalpm/add.c:600
+#: lib/libalpm/add.c:365
#, c-format
-msgid "checking sha1 hashes for %s"
-msgstr "Prüfe SHA1-Hashes für %s"
+msgid ""
+"directory permissions differ on %s\n"
+"filesystem: %o package: %o\n"
+msgstr ""
-#: lib/libalpm/add.c:602
+#: lib/libalpm/add.c:392
#, c-format
-msgid "current: %s"
-msgstr "Aktuell: %s"
+msgid "extract: symlink %s does not point to dir\n"
+msgstr ""
-#: lib/libalpm/add.c:603
+#: lib/libalpm/add.c:399
#, c-format
-msgid "new: %s"
-msgstr "Neu: %s"
+msgid "extract: not overwriting dir with file %s\n"
+msgstr ""
-#: lib/libalpm/add.c:604
+#: lib/libalpm/add.c:454 lib/libalpm/add.c:598 lib/libalpm/util.c:422
#, c-format
-msgid "original: %s"
-msgstr "Original: %s"
+msgid "could not extract %s (%s)\n"
+msgstr "Konnte %s nicht entpacken (%s)\n"
-#: lib/libalpm/add.c:616
-#, c-format
-msgid "could not rename %s (%s)"
+#: lib/libalpm/add.c:505
+#, fuzzy, c-format
+msgid "could not rename %s (%s)\n"
msgstr "Konnte %s nicht umbenennen (%s)"
-#: lib/libalpm/add.c:617
-#, c-format
-msgid "error: could not rename %s (%s)"
-msgstr "Fehler: Konnte %s nicht umbenennen (%s)"
-
-#: lib/libalpm/add.c:623 lib/libalpm/add.c:642
-#, c-format
-msgid "could not copy tempfile to %s (%s)"
+#: lib/libalpm/add.c:512 lib/libalpm/add.c:532 lib/libalpm/trans.c:508
+#, fuzzy, c-format
+msgid "could not copy tempfile to %s (%s)\n"
msgstr "Konnte temporäre Datei nicht nach %s kopieren (%s)"
-#: lib/libalpm/add.c:624
-#, c-format
-msgid "error: could not copy tempfile to %s (%s)"
-msgstr "Fehler: Konnte temporäre Datei nicht nach %s kopieren (%s)"
-
-#: lib/libalpm/add.c:628 lib/libalpm/remove.c:247
-#, c-format
-msgid "%s saved as %s"
+#: lib/libalpm/add.c:517 lib/libalpm/remove.c:234
+#, fuzzy, c-format
+msgid "%s saved as %s\n"
msgstr "%s gespeichert als %s"
-#: lib/libalpm/add.c:629
-#, c-format
-msgid "warning: %s saved as %s"
-msgstr "Warnung: %s gespeichert als %s"
-
-#: lib/libalpm/add.c:639
-#, c-format
-msgid "action: installing new file: %s"
-msgstr "Aktion: Installiere neue Datei: %s"
-
-#: lib/libalpm/add.c:649 lib/libalpm/add.c:655 lib/libalpm/add.c:660
-msgid "action: leaving existing file in place"
-msgstr "Aktion: Belasse existierende Datei an ihrem Platz"
-
-#: lib/libalpm/add.c:663
-msgid "action: keeping current file and installing new one with .pacnew ending"
-msgstr ""
-"Aktion: Behalte aktuelle Datei und installiere die neue mit der Endung ."
-"pacnew"
-
-#: lib/libalpm/add.c:666
-#, c-format
-msgid "could not install %s as %s: %s"
+#: lib/libalpm/add.c:556
+#, fuzzy, c-format
+msgid "could not install %s as %s: %s\n"
msgstr "Konnte %s nicht als %s installieren: %s"
-#: lib/libalpm/add.c:667
-#, c-format
-msgid "error: could not install %s as %s: %s"
-msgstr "Fehler: Konnte %s nicht als %s installieren: %s"
-
-#: lib/libalpm/add.c:669
-#, c-format
-msgid "%s installed as %s"
+#: lib/libalpm/add.c:559
+#, fuzzy, c-format
+msgid "%s installed as %s\n"
msgstr "%s installiert als %s"
-#: lib/libalpm/add.c:670
-#, c-format
-msgid "warning: %s installed as %s"
-msgstr "Warnung: %s installiert als %s"
-
-#: lib/libalpm/add.c:684
-#, c-format
-msgid "%s is in NoUpgrade -- skipping"
-msgstr "%s ist in NoUpgrade -- Ãœberspringe"
-
-#: lib/libalpm/add.c:685
-#, c-format
-msgid "extracting %s as %s.pacnew"
+#: lib/libalpm/add.c:576
+#, fuzzy, c-format
+msgid "extracting %s as %s.pacnew\n"
msgstr "Entpacke %s als %s.pacnew"
-#: lib/libalpm/add.c:686
-#, c-format
-msgid "warning: extracting %s as %s.pacnew"
-msgstr "Warnung: Entpacke %s als %s.pacnew"
-
-#: lib/libalpm/add.c:689
-#, c-format
-msgid "extracting %s"
-msgstr "Entpacke %s"
-
-#: lib/libalpm/add.c:707
-#, c-format
-msgid "error: could not extract %s (%s)"
-msgstr "Fehler: Konnte %s nicht entpacken (%s)"
-
-#: lib/libalpm/add.c:719
-#, c-format
-msgid "appending backup entry for %s"
-msgstr "Hänge Sicherungseintrag für %s an"
-
-#: lib/libalpm/add.c:751 lib/libalpm/add.c:753
-#, c-format
-msgid "errors occurred while %s %s"
-msgstr "Fehler traten auf, während %s %s"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "upgrading"
-msgstr "Aktualisiere"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "installing"
-msgstr "Installiere"
-
-#: lib/libalpm/add.c:771
-#, c-format
-msgid "provision '%s' has been removed from package %s (%s => %s)"
-msgstr "'%s' wird nicht mehr von %s bereitgestellt (%s => %s)"
-
-#: lib/libalpm/add.c:783
-#, c-format
-msgid "updating '%s' due to provision change (%s)"
-msgstr "Aktualisiere '%s' aufgrund einer Bereitstellungsänderung (%s)"
-
-#: lib/libalpm/add.c:787 lib/libalpm/add.c:788
-#, c-format
-msgid "could not update provision '%s' from '%s'"
-msgstr "Konnte Bereitstellung '%s' von '%s' nicht aktualisieren"
+#: lib/libalpm/add.c:711 lib/libalpm/trans.c:529
+#, fuzzy
+msgid "could not get current working directory\n"
+msgstr "Konnte aktuelles Arbeitsverzeichnis nicht ermitteln"
-#: lib/libalpm/add.c:801 lib/libalpm/remove.c:336
-msgid "updating database"
-msgstr "Aktualisiere Datenbank"
+#: lib/libalpm/add.c:765
+#, fuzzy, c-format
+msgid "problem occurred while upgrading %s\n"
+msgstr "Fehler traten auf, während %s aktualisiert wurde"
-#: lib/libalpm/add.c:802
-#, c-format
-msgid "adding database entry '%s'"
-msgstr "Füge Datenbankeintrag '%s' hinzu"
+#: lib/libalpm/add.c:770
+#, fuzzy, c-format
+msgid "problem occurred while installing %s\n"
+msgstr "Fehler traten auf, während %s installiert wurde"
-#: lib/libalpm/add.c:805 lib/libalpm/add.c:807
-#, c-format
-msgid "could not update database entry %s-%s"
+#: lib/libalpm/add.c:785
+#, fuzzy, c-format
+msgid "could not update database entry %s-%s\n"
msgstr "Konnte Datenbankeintrag %s-%s nicht aktualisieren"
-#: lib/libalpm/add.c:813
-#, c-format
-msgid "could not add entry '%s' in cache"
+#: lib/libalpm/add.c:793
+#, fuzzy, c-format
+msgid "could not add entry '%s' in cache\n"
msgstr "Konnte Eintrag '%s' nicht zum Pufferspeicher hinzufügen"
-#: lib/libalpm/add.c:843 lib/libalpm/remove.c:363 lib/libalpm/sync.c:1055
-#, c-format
-msgid "running \"ldconfig -r %s\""
-msgstr "Führe \"ldconfig -r %s\" aus"
-
-#: lib/libalpm/alpm.c:116
-#, c-format
-msgid "removing DB %s, %d remaining..."
-msgstr "Entferne Datenbank %s, %d verbleibend..."
-
-#: lib/libalpm/alpm.c:181
-#, c-format
-msgid "unregistering database '%s'"
-msgstr "Nicht registrierte Datenbank '%s'"
-
-#: lib/libalpm/alpm.c:186
-#, c-format
-msgid "closing database '%s'"
-msgstr "Schließe Datenbank '%s'"
-
-#: lib/libalpm/alpm.c:232
-#, c-format
-msgid ""
-"adding new server to database '%s': protocol '%s', server '%s', path '%s'"
-msgstr ""
-"Füge neuen Server zur Datenbank '%s' hinzu: Protokoll '%s', Server '%s', "
-"Pfad '%s'"
-
-#: lib/libalpm/alpm.c:236
-#, c-format
-msgid "serverlist flushed for '%s'"
-msgstr "Server-Liste geleert für '%s'"
-
-#: lib/libalpm/alpm.c:279
-#, c-format
-msgid "failed to get lastupdate time for %s (no big deal)"
-msgstr "Konnte letzte Update-Zeit für %s nicht ermitteln (nicht schlimm)"
-
-#: lib/libalpm/alpm.c:298
-#, c-format
-msgid "failed to sync db: %s [%d]"
-msgstr "Konnte Datenbank nicht synchronisieren: %s [%d]"
-
-#: lib/libalpm/alpm.c:302
-#, c-format
-msgid "sync: new mtime for %s: %s"
-msgstr "Synchronisation: Neue mtime für %s: %s"
-
-#: lib/libalpm/alpm.c:308
-#, c-format
-msgid "flushing database %s%s"
-msgstr "Leere Datenbank %s%s"
-
-#: lib/libalpm/alpm.c:312
-#, c-format
-msgid "could not remove database entry %s%s"
-msgstr "Konnte Datenbankeintrag %s%s nicht entfernen"
-
-#: lib/libalpm/alpm.c:481
-#, c-format
-msgid "could not get sha1sum for package %s-%s"
-msgstr "Konnte SHA1-Prüfsumme für Paket %s-%s nicht ermitteln"
-
-#: lib/libalpm/alpm.c:487
-#, c-format
-msgid "sha1sums for package %s-%s match"
-msgstr "SHA1-Prüfsummen für Paket %s-%s stimmen überein"
-
-#: lib/libalpm/alpm.c:490
-#, c-format
-msgid "sha1sums do not match for package %s-%s"
-msgstr "SHA1-Prüfsummen für Paket %s-%s stimmen nicht überein"
-
-#: lib/libalpm/alpm.c:525
-#, c-format
-msgid "could not get md5sum for package %s-%s"
-msgstr "Konnte MD5-Prüfsumme für Paket %s-%s nicht ermitteln"
-
-#: lib/libalpm/alpm.c:531
-#, c-format
-msgid "md5sums for package %s-%s match"
-msgstr "MD5-Prüfsummen für Paket %s-%s stimmen überein"
-
-#: lib/libalpm/alpm.c:534
-#, c-format
-msgid "md5sums do not match for package %s-%s"
-msgstr "MD5-Prüfsummen für Paket %s-%s stimmen nicht überein"
-
-#: lib/libalpm/alpm.c:783
-#, c-format
-msgid "could not remove lock file %s"
-msgstr "Konnte Sperrdatei %s nicht entfernen"
-
-#: lib/libalpm/alpm.c:784
-#, c-format
-msgid "warning: could not remove lock file %s"
-msgstr "Warnung: Konnte Sperrdatei %s nicht entfernen"
-
-#: lib/libalpm/alpm.c:920
-#, c-format
-msgid "config: new section '%s'"
-msgstr "Konfiguration: Neuer Abschnitt '%s'"
-
-#: lib/libalpm/alpm.c:951
-msgid "config: nopassiveftp"
-msgstr "Konfiguration: nopassiveftp"
-
-#: lib/libalpm/alpm.c:954
-msgid "config: usesyslog"
-msgstr "Konfiguration: usesyslog"
-
-#: lib/libalpm/alpm.c:957
-msgid "config: chomp"
-msgstr "Konfiguration: chomp"
-
-#: lib/libalpm/alpm.c:960
-msgid "config: usecolor"
-msgstr "Konfiguration: usecolor"
-
-#: lib/libalpm/alpm.c:969
-#, c-format
-msgid "config: including %s"
-msgstr "Konfiguration: including %s"
-
-#: lib/libalpm/alpm.c:979 lib/libalpm/alpm.c:984
-#, c-format
-msgid "config: noupgrade: %s"
-msgstr "Konfiguration: noupgrade: %s"
-
-#: lib/libalpm/alpm.c:992 lib/libalpm/alpm.c:997
-#, c-format
-msgid "config: noextract: %s"
-msgstr "Konfiguration: noextract: %s"
-
-#: lib/libalpm/alpm.c:1005 lib/libalpm/alpm.c:1010
-#, c-format
-msgid "config: ignorepkg: %s"
-msgstr "Konfiguration: ignorepkg: %s"
-
-#: lib/libalpm/alpm.c:1018 lib/libalpm/alpm.c:1023
-#, c-format
-msgid "config: holdpkg: %s"
-msgstr "Konfiguration: holdpkg: %s"
-
-#: lib/libalpm/alpm.c:1030
-#, c-format
-msgid "config: dbpath: %s"
-msgstr "Konfiguration: dbpath: %s"
-
-#: lib/libalpm/alpm.c:1037
-#, c-format
-msgid "config: cachedir: %s"
-msgstr "Konfiguration: cachedir: %s"
-
-#: lib/libalpm/alpm.c:1044
-#, c-format
-msgid "config: rootdir: %s"
-msgstr "Konfiguration: rootdir: %s"
-
-#: lib/libalpm/alpm.c:1047
-#, c-format
-msgid "config: logfile: %s"
-msgstr "Konfiguration: logfile: %s"
-
-#: lib/libalpm/alpm.c:1050
-#, c-format
-msgid "config: xfercommand: %s"
-msgstr "Konfiguration: xfercommand: %s"
-
-#: lib/libalpm/alpm.c:1055
-#, c-format
-msgid "config: upgradedelay: %d"
-msgstr "Konfiguration: upgradedelay: %d"
-
-#: lib/libalpm/alpm.c:1093 lib/libalpm/sync.c:107
-msgid "checking for package replacements"
-msgstr "Prüfe auf Paketersetzungen"
-
-#: lib/libalpm/alpm.c:1104 lib/libalpm/sync.c:123
-#, c-format
-msgid "checking replacement '%s' for package '%s'"
-msgstr "Prüfe Ersetzung '%s' für Paket '%s'"
-
-#: lib/libalpm/alpm.c:1107 lib/libalpm/sync.c:125
-#, c-format
-msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)"
-msgstr "%s-%s: Ignoriere zu aktualisierendes Packet (zu ersetzen durch %s-%s)"
-
-#: lib/libalpm/alpm.c:1137 lib/libalpm/sync.c:160
-#, c-format
-msgid "%s-%s elected for upgrade (to be replaced by %s-%s)"
-msgstr "%s-%s wurde zur Aktualisierung ausgewählt (wird durch %s-%s ersetzt)"
-
-#: lib/libalpm/alpm.c:1159 lib/libalpm/sync.c:194
-#, c-format
-msgid "'%s' not found in sync db -- skipping"
-msgstr "'%s' nicht in Sync-DB gefunden -- Ãœberspringe"
-
-#: lib/libalpm/alpm.c:1173 lib/libalpm/sync.c:208 lib/libalpm/sync.c:509
-#, c-format
-msgid "'%s' is already elected for removal -- skipping"
-msgstr "'%s' ist bereits zum Entfernen ausgewählt -- Überspringe"
-
-#: lib/libalpm/alpm.c:1179
-#, c-format
-msgid "%s elected for upgrade (%s => %s)"
-msgstr "%s wurde zur Aktualisierung ausgewählt (%s => %s)"
-
-#: lib/libalpm/be_files.c:61
-#, c-format
-msgid "unpacking database '%s'"
-msgstr "Entpacke Datenbank '%s'"
-
-#: lib/libalpm/be_files.c:78
-#, c-format
-msgid "opening database from path '%s'"
-msgstr "Öffne Datenbank aus Pfad '%s'"
-
-#: lib/libalpm/be_files.c:182
-#, c-format
-msgid "db scan could not find package: %s"
-msgstr "Konnte Paket nicht in Datenbank finden: %s"
-
-#: lib/libalpm/be_files.c:186
-#, c-format
-msgid "invalid name for database entry '%s'"
+#: lib/libalpm/be_files.c:223
+#, fuzzy, c-format
+msgid "invalid name for database entry '%s'\n"
msgstr "Falscher Name für Datenbank-Eintrag '%s'"
-#: lib/libalpm/be_files.c:221
-msgid "invalid package entry provided to _alpm_db_read, skipping"
-msgstr "Ungültiger Paket-Eintrag wurde an _alpm_db_read übergeben, überspringe"
-
-#: lib/libalpm/be_files.c:226
-#, c-format
-msgid ""
-"request to read database info for a file-based package '%s', skipping..."
-msgstr ""
-"Überspringe das Lesen der Datenbank-Information für das Datei-basierte Paket "
-"'%s'..."
-
-#: lib/libalpm/be_files.c:239
-#, c-format
-msgid "loading package data for %s : level=%d"
+#: lib/libalpm/be_files.c:275
+#, fuzzy, c-format
+msgid "loading package data for %s : level=%d\n"
msgstr "Lade Paket-Daten für %s : level=%d"
-#: lib/libalpm/be_files.c:247
-#, c-format
-msgid "cannot find '%s-%s' in db '%s'"
-msgstr "Kann %s-%s nicht in der Datenbank '%s' finden"
-
-#: lib/libalpm/be_files.c:255 lib/libalpm/be_files.c:401
-#: lib/libalpm/be_files.c:424 lib/libalpm/be_files.c:515
-#: lib/libalpm/be_files.c:605 lib/libalpm/be_files.c:632
-#: lib/libalpm/package.c:208
-#, c-format
-msgid "could not open file %s: %s"
+#: lib/libalpm/be_files.c:292 lib/libalpm/be_files.c:429
+#: lib/libalpm/be_files.c:452 lib/libalpm/be_files.c:563
+#: lib/libalpm/be_files.c:641 lib/libalpm/be_files.c:669
+#: lib/libalpm/package.c:787
+#, fuzzy, c-format
+msgid "could not open file %s: %s\n"
msgstr "Konnte Datei %s nicht öffnen: %s"
-#: lib/libalpm/be_files.c:512
-#, c-format
-msgid "writing %s-%s DESC information back to db"
-msgstr "Schreibe %s-%s Informationen aus DESC-Datei zurück in die Datenbank"
-
-#: lib/libalpm/be_files.c:602
-#, c-format
-msgid "writing %s-%s FILES information back to db"
-msgstr "Schreibe %s-%s Informationen aus FILES-Datei zurück in die Datenbank"
-
-#: lib/libalpm/be_files.c:629
-#, c-format
-msgid "writing %s-%s DEPENDS information back to db"
-msgstr "Schreibe %s-%s Informationen aus DEPENDS-Datei zurück in die Datenbank"
-
-#: lib/libalpm/cache.c:59
-#, c-format
-msgid "loading package cache for repository '%s'"
-msgstr "Lade Paketpuffer für Repositorium '%s'"
-
-#: lib/libalpm/cache.c:64
-#, c-format
-msgid "adding '%s' to package cache for db '%s'"
+#: lib/libalpm/cache.c:62
+#, fuzzy, c-format
+msgid "adding '%s' to package cache for db '%s'\n"
msgstr "Füge '%s' zum Paketpuffer der Datenbank '%s' hinzu"
-#: lib/libalpm/cache.c:85
-#, c-format
-msgid "freeing package cache for repository '%s'"
-msgstr "Lösche Paketpuffer für Repositorium '%s'"
-
-#: lib/libalpm/cache.c:109
-#, c-format
-msgid "error: pkgcache is NULL for db '%s'"
-msgstr "Fehler: Paketpuffer ist NULL für Datenbank '%s'"
-
-#: lib/libalpm/cache.c:129
-#, c-format
-msgid "adding entry '%s' in '%s' cache"
-msgstr "Füge Eintrag '%s' zu '%s'-Puffer hinzu"
-
-#: lib/libalpm/cache.c:149
-#, c-format
-msgid "removing entry '%s' from '%s' cache"
-msgstr "Entferne Eintrag '%s' aus '%s'-Puffer"
-
-#: lib/libalpm/cache.c:156
-#, c-format
-msgid "cannot remove entry '%s' from '%s' cache: not found"
-msgstr "Konnte Eintrag '%s' aus '%s'-Puffer nicht entfernen: nicht gefunden"
-
-#: lib/libalpm/cache.c:178
-#, c-format
-msgid "error: failed to get '%s' from NULL pkgcache"
-msgstr "Fehler: Konnte Eintrag '%s' nicht aus dem NULL Paketpuffer laden"
-
-#: lib/libalpm/cache.c:201
-#, c-format
-msgid "loading group cache for repository '%s'"
-msgstr "Lade Gruppenpuffer für Repositorium '%s'"
-
-#: lib/libalpm/conflict.c:69
-#, c-format
-msgid " found conflict '%s' : package '%s'"
-msgstr " Konflikt gefunden '%s' : Paket '%s'"
-
-#: lib/libalpm/conflict.c:78
-#, c-format
-msgid " found conflict '%s' : package '%s' provides '%s'"
-msgstr " Konflikt '%s' gefunden: Paket '%s' stellt '%s' bereit"
-
-#: lib/libalpm/conflict.c:101 lib/libalpm/conflict.c:143
-#, c-format
-msgid "package '%s' conflicts with itself - packaging error"
-msgstr "Paket '%s' steht im Konflikt mit sich selbst - ist falsch gepackt"
-
-#: lib/libalpm/conflict.c:107
-#, c-format
-msgid "checkconflicts: target '%s' vs db"
-msgstr "checkconflicts: Ziel '%s' gegen Datenbank"
-
-#: lib/libalpm/conflict.c:149
-#, c-format
-msgid "checkconflicts: target '%s' vs all targets"
-msgstr "checkconflicts: Ziel '%s' gegen alle Ziele"
-
-#: lib/libalpm/conflict.c:181
-#, c-format
-msgid "checkconflicts: db vs target '%s'"
-msgstr "checkconflicts: Datenbank gegen Ziel '%s'"
-
-#: lib/libalpm/conflict.c:201
-#, c-format
-msgid "target '%s' is also in target list, using NEW conflicts"
-msgstr "Ziel '%s' ist auch in der Ziel-Liste, benutze neue Konflikte"
-
-#: lib/libalpm/conflict.c:257
-#, c-format
-msgid "\tCONFLICTS:: %s conflicts with %s"
-msgstr "\tCONFLICTS:: %s steht im Konflikt mit %s"
-
-#: lib/libalpm/conflict.c:349 lib/libalpm/deps.c:60 lib/libalpm/deps.c:438
-#: lib/libalpm/deps.c:634 lib/libalpm/deps.c:674 lib/libalpm/group.c:45
-#: lib/libalpm/handle.c:51 lib/libalpm/package.c:82 lib/libalpm/sync.c:67
-#: lib/libalpm/sync.c:614 lib/libalpm/sync.c:630 lib/libalpm/sync.c:727
-#: lib/libalpm/trans.c:55 lib/libalpm/util.c:614 lib/libalpm/util.c:621
-#, c-format
-msgid "malloc failure: could not allocate %d bytes"
-msgstr "malloc-Fehler: Konnte %d Bytes nicht zuweisen"
-
-#: lib/libalpm/db.c:64 lib/libalpm/db.c:71
-#, c-format
-msgid "malloc failed: could not allocate %d bytes"
-msgstr "malloc fehlgeschlagen: Konnte %d Bytes nicht zuweisen"
+#: lib/libalpm/db.c:285
+#, fuzzy, c-format
+msgid "could not remove database entry %s%s\n"
+msgstr "Konnte Datenbankeintrag %s%s nicht entfernen"
-#: lib/libalpm/db.c:167
-msgid "attempt to re-register the 'local' DB"
+#: lib/libalpm/db.c:553
+#, fuzzy
+msgid "attempt to re-register the 'local' DB\n"
msgstr "Versuche die lokale Datenbank neu zu registrieren"
-#: lib/libalpm/db.c:175
-#, c-format
-msgid "attempt to re-register the '%s' database, using existing"
-msgstr "Versuche die %s Datenbank neu zu registrieren, verwende die bestehende"
-
-#: lib/libalpm/db.c:181
-#, c-format
-msgid "registering database '%s'"
-msgstr "Registriere Datenbank '%s'"
-
-#: lib/libalpm/db.c:186
-#, c-format
-msgid "database directory '%s' does not exist, creating it"
-msgstr "Datenbank-Verzeichnis '%s' ist nicht vorhanden, erstelle es"
-
-#: lib/libalpm/db.c:197
-#, c-format
-msgid "opening database '%s'"
-msgstr "Öffne Datenbank '%s'"
-
-#: lib/libalpm/deps.c:131
-msgid "started sorting dependencies"
-msgstr "Sortieren von Abhängigkeiten gestartet"
-
-#: lib/libalpm/deps.c:136
-msgid "possible dependency cycle detected"
-msgstr "Möglicher Abhängigkeitszyklus gefunden"
-
-#: lib/libalpm/deps.c:183
-msgid "sorting dependencies finished"
-msgstr "Sortieren von Abhängigkeiten beendet"
-
-#: lib/libalpm/deps.c:225 lib/libalpm/deps.c:310
-msgid "null package found in package list"
-msgstr "Ein leeres Paket wurde in der Paketliste gefunden"
-
-#: lib/libalpm/deps.c:230
-#, c-format
-msgid "cannot find package installed '%s'"
-msgstr "Konnte installiertes Paket '%s' nicht finden"
-
-#: lib/libalpm/deps.c:261
-#, c-format
-msgid "checkdeps: dependency '%s' has moved from '%s' to '%s'"
-msgstr "checkdeps: Abhängigkeit'%s' wurde von '%s' nach '%s' verschoben"
-
-#: lib/libalpm/deps.c:280
-#, c-format
-msgid "checkdeps: dependency '%s' satisfied by installed package '%s'"
-msgstr "checkdeps: Abhängigkeit '%s' von installiertem Paket '%s' erfüllt"
-
-#: lib/libalpm/deps.c:289
-#, c-format
-msgid "checkdeps: updated '%s' won't satisfy a dependency of '%s'"
-msgstr ""
-"checkdeps: aktualisiertes '%s' wird die Abhängigkeit von '%s' nicht erfüllen"
-
-#: lib/libalpm/deps.c:359
-#, c-format
-msgid "missing dependency '%s' for package '%s'"
-msgstr "Abhängigkeit '%s' für Paket '%s' fehlt"
-
-#: lib/libalpm/deps.c:409
-#, c-format
-msgid "checkdeps: found %s as required by %s"
-msgstr "checkdeps: %s wird von %s benötigt"
+#: lib/libalpm/db.c:562 lib/libalpm/db.c:613
+#, fuzzy
+msgid "database path is undefined\n"
+msgstr "Datenbank-Pfad ist nicht definiert"
-#: lib/libalpm/deps.c:485
-#, c-format
-msgid "excluding %s -- explicitly installed"
-msgstr "Schließe %s aus -- Ausdrücklich installiert"
+#: lib/libalpm/deps.c:173
+#, fuzzy
+msgid "dependency cycle detected:\n"
+msgstr "Abhängigkeits-Zyklus entdeckt\n"
-#: lib/libalpm/deps.c:532
+#: lib/libalpm/deps.c:175
#, c-format
-msgid "cannot find package \"%s\" or anything that provides it!"
+msgid "%s will be removed after its %s dependency\n"
msgstr ""
-"Kann Paket \"%s\" oder irgendwas, das es zur Verfügung stellt, nicht finden!"
-
-#: lib/libalpm/deps.c:540 lib/libalpm/deps.c:551
-#, c-format
-msgid "adding '%s' to the targets"
-msgstr "Füge '%s' zu der Ziel-Liste hinzu"
-
-#: lib/libalpm/deps.c:583
-msgid "started resolving dependencies"
-msgstr "Starte das Auflösen der Abhängigkeiten"
-#: lib/libalpm/deps.c:601
+#: lib/libalpm/deps.c:177
#, c-format
-msgid "%s provides dependency %s -- skipping"
-msgstr "%s stellt Abhängigkeit %s zur Verfügung -- Überspringe"
-
-#: lib/libalpm/deps.c:630
-#, c-format
-msgid ""
-"cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+msgid "%s will be installed before its %s dependency\n"
msgstr ""
-"Kann Abhängigkeiten für \"%s\" nicht auflösen (\"%s\" ist nicht in "
-"Paketliste enthalten)"
-#: lib/libalpm/deps.c:647
-#, c-format
-msgid "dependency %s is already in the target list -- skipping"
-msgstr "Abhängigkeit %s ist bereits in der Ziel-Liste -- Überspringe"
-
-#: lib/libalpm/deps.c:667
-#, c-format
-msgid "pulling dependency %s (needed by %s)"
-msgstr "Ziehe Abhängigkeit %s (benötigt von %s)"
-
-#: lib/libalpm/deps.c:671
-#, c-format
-msgid "cannot resolve dependencies for \"%s\""
+#: lib/libalpm/deps.c:573
+#, fuzzy, c-format
+msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "Kann Abhängigkeiten für \"%s\" nicht auflösen"
-#: lib/libalpm/deps.c:687
-#, c-format
-msgid "dependency cycle detected: %s"
-msgstr "Abhängigkeits-Zyklus entdeckt: %s"
-
-#: lib/libalpm/deps.c:691
-msgid "finished resolving dependencies"
-msgstr "Auflösen von Abhängigkeiten beendet"
-
-#: lib/libalpm/error.c:40
+#: lib/libalpm/error.c:43
msgid "out of memory!"
msgstr "Speicher ist voll!"
-#: lib/libalpm/error.c:42
+#: lib/libalpm/error.c:45
msgid "unexpected system error"
msgstr "Unerwarteter Systemfehler"
-#: lib/libalpm/error.c:44
+#: lib/libalpm/error.c:47
msgid "insufficient privileges"
msgstr "Unzureichende Rechte"
-#: lib/libalpm/error.c:46
+#: lib/libalpm/error.c:49
msgid "could not find or read file"
msgstr "Konnte Datei nicht finden oder lesen"
-#: lib/libalpm/error.c:48
+#: lib/libalpm/error.c:51
+#, fuzzy
+msgid "could not find or read directory"
+msgstr "Konnte Datei nicht finden oder lesen"
+
+#: lib/libalpm/error.c:53
msgid "wrong or NULL argument passed"
msgstr "Falsches oder NULL-Argument übergeben"
-#: lib/libalpm/error.c:51
+#: lib/libalpm/error.c:56
msgid "library not initialized"
msgstr "Bibliothek nicht initialisiert"
-#: lib/libalpm/error.c:53
+#: lib/libalpm/error.c:58
msgid "library already initialized"
msgstr "Bibliothek bereits initialisiert"
-#: lib/libalpm/error.c:55
+#: lib/libalpm/error.c:60
msgid "unable to lock database"
msgstr "Kann Datenbank nicht sperren"
-#: lib/libalpm/error.c:58
+#: lib/libalpm/error.c:63
msgid "could not open database"
msgstr "Konnte Datenbank nicht öffnen"
-#: lib/libalpm/error.c:60
+#: lib/libalpm/error.c:65
msgid "could not create database"
msgstr "Konnte Datenbank nicht erstellen"
-#: lib/libalpm/error.c:62
+#: lib/libalpm/error.c:67
msgid "database not initialized"
msgstr "Datenbank nicht initialisiert"
-#: lib/libalpm/error.c:64
+#: lib/libalpm/error.c:69
msgid "database already registered"
msgstr "Datenbank bereits registriert"
-#: lib/libalpm/error.c:66
+#: lib/libalpm/error.c:71
msgid "could not find database"
msgstr "Konnte Datenbank nicht finden"
-#: lib/libalpm/error.c:68
+#: lib/libalpm/error.c:73
msgid "could not update database"
msgstr "Konnte Datenbank nicht aktualisieren"
-#: lib/libalpm/error.c:70
+#: lib/libalpm/error.c:75
msgid "could not remove database entry"
msgstr "Konnte Datenbank-Eintrag nicht entfernen"
-#: lib/libalpm/error.c:73
+#: lib/libalpm/error.c:78
msgid "invalid url for server"
msgstr "Ungültige URL für den Server"
-#: lib/libalpm/error.c:80
+#: lib/libalpm/error.c:85
msgid "could not set parameter"
msgstr "Konnte Parameter nicht setzen"
-#: lib/libalpm/error.c:83
+#: lib/libalpm/error.c:88
msgid "transaction already initialized"
-msgstr "Vorgang wurde schon gestartet"
+msgstr "Vorgang bereits gestartet"
-#: lib/libalpm/error.c:85 lib/libalpm/error.c:89
+#: lib/libalpm/error.c:90 lib/libalpm/error.c:94
msgid "transaction not initialized"
msgstr "Vorgang nicht gestartet"
-#: lib/libalpm/error.c:87
+#: lib/libalpm/error.c:92
msgid "duplicate target"
msgstr "Doppelte Ziele"
-#: lib/libalpm/error.c:91
+#: lib/libalpm/error.c:96
msgid "transaction not prepared"
msgstr "Vorgang nicht vorbereitet"
-#: lib/libalpm/error.c:93
+#: lib/libalpm/error.c:98
msgid "transaction aborted"
msgstr "Vorgang abgebrochen"
-#: lib/libalpm/error.c:95
+#: lib/libalpm/error.c:100
msgid "operation not compatible with the transaction type"
msgstr "Operation nicht mit dem Vorgangs-Typ kompatibel"
-#: lib/libalpm/error.c:97 lib/libalpm/sync.c:994
+#: lib/libalpm/error.c:102
msgid "could not commit transaction"
msgstr "Konnte den Vorgang nicht durchführen"
-#: lib/libalpm/error.c:99
+#: lib/libalpm/error.c:104
msgid "could not download all files"
msgstr "Konnte nicht alle Dateien herunterladen"
-#: lib/libalpm/error.c:102
+#: lib/libalpm/error.c:107
msgid "could not find or read package"
msgstr "Konnte Paket nicht finden oder lesen"
-#: lib/libalpm/error.c:104
+#: lib/libalpm/error.c:109
msgid "invalid or corrupted package"
msgstr "Ungültiges oder beschädigtes Paket"
-#: lib/libalpm/error.c:106
+#: lib/libalpm/error.c:111
msgid "cannot open package file"
msgstr "Kann Paketdatei nicht öffnen"
-#: lib/libalpm/error.c:108
+#: lib/libalpm/error.c:113
msgid "cannot load package data"
msgstr "Kann Paketdaten nicht laden"
-#: lib/libalpm/error.c:110
+#: lib/libalpm/error.c:115
msgid "package already installed"
msgstr "Paket ist bereits installiert"
-#: lib/libalpm/error.c:112
+#: lib/libalpm/error.c:117
msgid "package not installed or lesser version"
msgstr "Paket ist nicht installiert oder ältere Version"
-#: lib/libalpm/error.c:114
+#: lib/libalpm/error.c:119
msgid "cannot remove all files for package"
msgstr "Konnte nicht alle Dateien des Paketes entfernen"
-#: lib/libalpm/error.c:116
+#: lib/libalpm/error.c:121
msgid "package name is not valid"
msgstr "Paketname ist nicht gültig"
-#: lib/libalpm/error.c:118
+#: lib/libalpm/error.c:123
msgid "corrupted package"
msgstr "Beschädigtes Paket"
-#: lib/libalpm/error.c:120
+#: lib/libalpm/error.c:125
msgid "no such repository"
msgstr "Kein solches Repositorium"
-#: lib/libalpm/error.c:123
+#: lib/libalpm/error.c:128
+#, fuzzy
+msgid "corrupted delta"
+msgstr "Beschädigtes Paket"
+
+#: lib/libalpm/error.c:130
+msgid "delta patch failed"
+msgstr ""
+
+#: lib/libalpm/error.c:133
msgid "group not found"
msgstr "Gruppe nicht gefunden"
-#: lib/libalpm/error.c:126
+#: lib/libalpm/error.c:136
msgid "could not satisfy dependencies"
msgstr "Kann Abhängigkeiten nicht erfüllen"
-#: lib/libalpm/error.c:128
+#: lib/libalpm/error.c:138
msgid "conflicting dependencies"
msgstr "In Konflikt stehende Abhängigkeiten"
-#: lib/libalpm/error.c:130
+#: lib/libalpm/error.c:140
msgid "conflicting files"
msgstr "In Konflikt stehende Dateien"
-#: lib/libalpm/error.c:133
+#: lib/libalpm/error.c:143
msgid "user aborted the operation"
msgstr "Benutzer brach die Aktion ab"
-#: lib/libalpm/error.c:135
+#: lib/libalpm/error.c:145
msgid "internal error"
msgstr "Interner Fehler"
-#: lib/libalpm/error.c:137
+#: lib/libalpm/error.c:147
msgid "libarchive error"
msgstr "libarchive-Fehler"
-#: lib/libalpm/error.c:139
-msgid "not enough space on disk"
-msgstr "Nicht genügend Speicherplatz"
-
-#: lib/libalpm/error.c:142
+#: lib/libalpm/error.c:150
msgid "not confirmed"
msgstr "Nicht bestätigt"
-#: lib/libalpm/error.c:145
-msgid "bad configuration section name"
-msgstr "Ungültiger Abschnittsname"
-
-#: lib/libalpm/error.c:147
-msgid "'local' is reserved and cannot be used as a repository name"
-msgstr "'local' ist reserviert und kann nicht als Repositorium benutzt werden"
-
-#: lib/libalpm/error.c:149
-msgid "syntax error in config file"
-msgstr "Falsche Syntax in Beschreibungsdatei"
-
-#: lib/libalpm/error.c:151
-msgid "all directives must belong to a section"
-msgstr "Alle Anweisungen müssen zu einem Abschnitt gehören"
-
-#: lib/libalpm/error.c:153
+#: lib/libalpm/error.c:152
msgid "invalid regular expression"
msgstr "Ungültiger Regulärer Ausdruck"
-#: lib/libalpm/error.c:156
+#: lib/libalpm/error.c:155
msgid "connection to remote host failed"
msgstr "Verbindung zum Server fehlgeschlagen"
-#: lib/libalpm/error.c:159
+#: lib/libalpm/error.c:158
msgid "unexpected error"
msgstr "Unerwarteter Fehler"
-#: lib/libalpm/handle.c:163
-#, c-format
-msgid "cannot canonicalize specified root path '%s'"
-msgstr "Kann das spezifizierte Wurzelverzeichnis nicht anerkennen '%s'"
-
-#: lib/libalpm/handle.c:175
-#, c-format
-msgid "option 'root' = %s"
-msgstr "Konfiguration 'root' = %s"
-
-#: lib/libalpm/handle.c:195
-#, c-format
-msgid "option 'dbpath' = %s"
-msgstr "Konfiguration 'dbpath' = %s"
-
-#: lib/libalpm/handle.c:211
-#, c-format
-msgid "option 'cachedir' = %s"
-msgstr "Konfiguration 'cachedir' = %s"
-
-#: lib/libalpm/md5driver.c:56
-#, c-format
-msgid "%s can't be opened\n"
-msgstr "%s kann nicht geöffnet werden\n"
-
-#: lib/libalpm/md5driver.c:74
-#, c-format
-msgid "md5(%s) = %s"
-msgstr "MD5(%s) = %s"
+#: lib/libalpm/package.c:124
+#, fuzzy, c-format
+msgid "could not get md5sum for package %s-%s\n"
+msgstr "Konnte MD5-Prüfsumme für Paket %s-%s nicht ermitteln"
-#: lib/libalpm/package.c:147
-#, c-format
-msgid "%s-%s: ignoring package upgrade (%s)"
-msgstr "%s-%s: Ignoriere Paketaktualisierung (%s)"
+#: lib/libalpm/package.c:133
+#, fuzzy, c-format
+msgid "md5sums do not match for package %s-%s\n"
+msgstr "MD5-Prüfsummen für Paket %s-%s stimmen nicht überein"
-#: lib/libalpm/package.c:158
-#, c-format
-msgid "%s: forcing upgrade to version %s"
+#: lib/libalpm/package.c:737
+#, fuzzy, c-format
+msgid "%s: forcing upgrade to version %s\n"
msgstr "%s: Erzwungene Aktualisierung auf Version %s"
-#: lib/libalpm/package.c:163
-#, c-format
-msgid "%s: local (%s) is newer than %s (%s)"
+#: lib/libalpm/package.c:742
+#, fuzzy, c-format
+msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: Lokale Version (%s) ist neuer als %s (%s)"
-#: lib/libalpm/package.c:171
-#, c-format
-msgid "%s-%s: delaying upgrade of package (%s)"
+#: lib/libalpm/package.c:750
+#, fuzzy, c-format
+msgid "%s-%s: delaying upgrade of package (%s)\n"
msgstr "%s-%s: Verzögere die Aktualisierung von Paket (%s)"
-#: lib/libalpm/package.c:222 lib/libalpm/package.c:281
-#, c-format
-msgid "%s: syntax error in description file line %d"
-msgstr "%s: Falscher Syntax in Beschreibungsdatei, Zeile %d"
-
-#: lib/libalpm/package.c:355
-msgid "could not parse the package description file"
+#: lib/libalpm/package.c:931
+#, fuzzy, c-format
+msgid "could not parse package description file in %s\n"
msgstr "Konnte Paket-Beschreibungsdatei nicht analysieren"
-#: lib/libalpm/package.c:359
-#, c-format
-msgid "missing package name in %s"
+#: lib/libalpm/package.c:936
+#, fuzzy, c-format
+msgid "missing package name in %s\n"
msgstr "Fehlender Paketname in %s"
-#: lib/libalpm/package.c:363
-#, c-format
-msgid "missing package version in %s"
+#: lib/libalpm/package.c:940
+#, fuzzy, c-format
+msgid "missing package version in %s\n"
msgstr "Fehlende Paketversion in %s"
-#: lib/libalpm/package.c:398
-#, c-format
-msgid "could not remove tempfile %s"
+#: lib/libalpm/package.c:970
+#, fuzzy, c-format
+msgid "could not remove tempfile %s\n"
msgstr "Konnte tempfile %s nicht entfernen"
-#: lib/libalpm/package.c:411 lib/libalpm/package.c:418
-#, c-format
-msgid "error while reading package: %s"
+#: lib/libalpm/package.c:985 lib/libalpm/package.c:998
+#, fuzzy, c-format
+msgid "error while reading package %s: %s\n"
msgstr "Fehler beim Lesen des Paketes: %s"
-#: lib/libalpm/package.c:424
-msgid "missing package metadata"
+#: lib/libalpm/package.c:1005
+#, fuzzy, c-format
+msgid "missing package metadata in %s\n"
msgstr "Fehlende Paket-Metadaten"
-#: lib/libalpm/package.c:431
-#, c-format
-msgid "missing package filelist in %s, generating one"
+#: lib/libalpm/package.c:1012
+#, fuzzy, c-format
+msgid "missing package filelist in %s, generating one\n"
msgstr "Fehlende Paket-Dateiliste in %s, erstelle eine"
-#: lib/libalpm/package.c:570
-#, c-format
-msgid "adding '%s' in requiredby field for '%s'"
-msgstr "Füge '%s' zum requiredby-Feld für '%s' hinzu"
-
-#: lib/libalpm/package.c:584
-#, c-format
-msgid "adding '%s' in requiredby field for '%s' (provides: %s)"
-msgstr "Füge '%s' zum requiredby-Feld für '%s' hinzu (stellt bereit: %s)"
-
-#: lib/libalpm/remove.c:79
-#, c-format
-msgid "could not find %s in database"
-msgstr "Konnte %s nicht in der Datenbank finden"
-
-#: lib/libalpm/remove.c:93
-#, c-format
-msgid "adding %s in the targets list"
-msgstr "Füge %s zur Ziel-Liste hinzu"
-
#: lib/libalpm/remove.c:121
-#, c-format
-msgid "pulling %s in the targets list"
-msgstr "Ziehe %s in die Ziel-Liste"
-
-#: lib/libalpm/remove.c:124
-#, c-format
-msgid "could not find %s in database -- skipping"
+#, fuzzy, c-format
+msgid "could not find %s in database -- skipping\n"
msgstr "Konnte %s nicht in Datenbank finden -- Ãœberspringe"
-#: lib/libalpm/remove.c:142
-msgid "finding removable dependencies"
-msgstr "Finde entfernbare Abhängigkeiten"
-
-#: lib/libalpm/remove.c:175
-#, c-format
-msgid "cannot remove file '%s': %s"
+#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:243
+#, fuzzy, c-format
+msgid "cannot remove file '%s': %s\n"
msgstr "Kann Datei '%s' nicht entfernen: %s"
-#: lib/libalpm/remove.c:213
-#, c-format
-msgid "Skipping removal of '%s' due to NoUpgrade"
-msgstr "Ãœberspringe das Entfernen von '%s' wegen NoUpgrade"
-
-#: lib/libalpm/remove.c:220
-#, c-format
-msgid "file %s does not exist"
-msgstr "Datei %s existiert nicht"
-
-#: lib/libalpm/remove.c:227
-#, c-format
-msgid "keeping directory %s"
-msgstr "Behalte Verzeichnis %s"
-
-#: lib/libalpm/remove.c:229
-#, c-format
-msgid "removing directory %s"
-msgstr "Entferne Verzeichnis %s"
-
-#: lib/libalpm/remove.c:236
-#, c-format
-msgid "%s is in trans->skip_remove, skipping removal"
-msgstr "%s ist in trans->skip_remove, überspringe das Entfernen"
-
-#: lib/libalpm/remove.c:250
-#, c-format
-msgid "transaction is set to NOSAVE, not backing up '%s'"
-msgstr "Vorgang wurde auf NOSAVE gesetzt, '%s' wird nicht gesichert"
-
-#: lib/libalpm/remove.c:254
-#, c-format
-msgid "unlinking %s"
-msgstr "Lösche %s"
-
-#: lib/libalpm/remove.c:261
-#, c-format
-msgid "cannot remove file %s: %s"
-msgstr "Kann Datei %s nicht entfernen: %s"
-
-#: lib/libalpm/remove.c:294
-#, c-format
-msgid "removing package %s-%s"
-msgstr "Entferne Paket %s-%s"
-
-#: lib/libalpm/remove.c:309
-#, c-format
-msgid "not removing package '%s', can't remove all files"
-msgstr "Paket '%s' wird nicht entfernt, konnte nicht alle Dateien löschen"
-
-#: lib/libalpm/remove.c:316
-#, c-format
-msgid "removing %d files"
-msgstr "Entferne %d Dateien"
-
#: lib/libalpm/remove.c:337
-#, c-format
-msgid "removing database entry '%s'"
-msgstr "Entferne Datenbank-Eintrag '%s'"
-
-#: lib/libalpm/remove.c:339
-#, c-format
-msgid "could not remove database entry %s-%s"
+#, fuzzy, c-format
+msgid "could not remove database entry %s-%s\n"
msgstr "Konnte Datenbank-Eintrag %s-%s nicht entfernen"
-#: lib/libalpm/remove.c:344
-#, c-format
-msgid "could not remove entry '%s' from cache"
+#: lib/libalpm/remove.c:342
+#, fuzzy, c-format
+msgid "could not remove entry '%s' from cache\n"
msgstr "Konnte Eintrag '%s' nicht aus dem Puffer entfernen"
-#: lib/libalpm/sha1.c:397
-#, c-format
-msgid "sha1: %s can't be opened\n"
-msgstr "sha1: %s kann nicht geöffnet werden\n"
-
-#: lib/libalpm/sha1.c:412
-#, c-format
-msgid "sha1(%s) = %s"
-msgstr "sha1(%s) = %s"
-
-#: lib/libalpm/sync.c:183
-msgid "checking for package upgrades"
-msgstr "Suche nach Paketaktualisierungen"
-
-#: lib/libalpm/sync.c:215
+#: lib/libalpm/server.c:56
#, c-format
-msgid "%s-%s elected for upgrade (%s => %s)"
-msgstr "%s-%s ausgewählt für Aktualisierung (%s => %s)"
+msgid "url '%s' is invalid, ignoring\n"
+msgstr ""
-#: lib/libalpm/sync.c:270
-#, c-format
-msgid "searching for target in repo '%s'"
-msgstr "Suche nach Ziel in Repositorium '%s'"
+#: lib/libalpm/server.c:60
+msgid "url scheme not specified, assuming http\n"
+msgstr ""
-#: lib/libalpm/sync.c:278 lib/libalpm/sync.c:301
-#, c-format
-msgid "target '%s' not found -- looking for provisions"
-msgstr "Ziel '%s' wurde nicht gefunden -- suche nach Ähnlichem"
+#: lib/libalpm/server.c:241
+msgid "disk"
+msgstr ""
-#: lib/libalpm/sync.c:283 lib/libalpm/sync.c:306
-#, c-format
-msgid "found '%s' as a provision for '%s'"
-msgstr "'%s' stellt '%s' bereit"
+#: lib/libalpm/server.c:245
+#, fuzzy, c-format
+msgid "failed retrieving file '%s' from %s : %s\n"
+msgstr "Konnte manche Dateien von %s nicht übertragen\n"
-#: lib/libalpm/sync.c:290
-#, c-format
-msgid "repository '%s' not found"
-msgstr "Repositorium '%s' nicht gefunden"
+#: lib/libalpm/server.c:275
+msgid "cannot resume download, starting over\n"
+msgstr ""
-#: lib/libalpm/sync.c:331
-#, c-format
-msgid "%s-%s is up to date -- skipping"
-msgstr "%s-%s ist aktuell -- Ãœberspringe"
+#: lib/libalpm/server.c:288
+#, fuzzy, c-format
+msgid "cannot write to file '%s'\n"
+msgstr "Kann Datei '%s' nicht entfernen: %s"
-#: lib/libalpm/sync.c:354
-#, c-format
-msgid "adding target '%s' to the transaction set"
-msgstr "Füge das Ziel '%s' zur Vorgangsliste hinzu"
+#: lib/libalpm/server.c:307
+#, fuzzy, c-format
+msgid "error downloading '%s': %s\n"
+msgstr "Fehler beim Lesen des Paketes: %s"
-#: lib/libalpm/sync.c:402
-msgid "resolving target's dependencies"
-msgstr "Auflösen von Ziel-Abhängigkeiten"
+#: lib/libalpm/server.c:319
+#, fuzzy, c-format
+msgid "error writing to file '%s': %s\n"
+msgstr "Kann Datei '%s' nicht entfernen: %s"
-#: lib/libalpm/sync.c:422
-#, c-format
-msgid "adding package %s-%s to the transaction targets"
-msgstr "Füge Paket %s-%s zur Vorgangszielen hinzu"
+#: lib/libalpm/server.c:387
+#, fuzzy, c-format
+msgid "could not chdir to %s\n"
+msgstr "Konnte nicht zu Verzeichnis / wechseln (%s)"
-#: lib/libalpm/sync.c:463
-msgid "looking for unresolvable dependencies"
-msgstr "Suche nach unlösbaren Abhängigkeiten"
+#: lib/libalpm/server.c:394
+msgid "running XferCommand: fork failed!\n"
+msgstr ""
-#: lib/libalpm/sync.c:494
-#, c-format
-msgid "package '%s' conflicts with '%s'"
-msgstr "Paket '%s' steht im Konflikt mit '%s'"
+#: lib/libalpm/server.c:445
+msgid "URL does not contain a file for download\n"
+msgstr ""
-#: lib/libalpm/sync.c:516
-#, c-format
-msgid "'%s' not found in transaction set -- skipping"
-msgstr "'%s' wurde nicht in der Vorgangsliste gefunden -- überspringe"
+#: lib/libalpm/server.c:458
+#, fuzzy, c-format
+msgid "failed to download %s\n"
+msgstr "Konnte nicht alle Dateien herunterladen"
-#: lib/libalpm/sync.c:527
-#, c-format
-msgid "package '%s' provides its own conflict"
-msgstr "Paket '%s' steht im Konflikt mit sich selbst"
+#: lib/libalpm/sync.c:135
+#, fuzzy, c-format
+msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
+msgstr "%s-%s: Ignoriere zu aktualisierendes Packet (zu ersetzen durch %s-%s)"
-#: lib/libalpm/sync.c:550 lib/libalpm/sync.c:555
-#, c-format
-msgid "'%s' is in the target list -- keeping it"
-msgstr "'%s' ist in der Ziel-Liste -- ich behalte es"
+#: lib/libalpm/sync.c:250
+#, fuzzy, c-format
+msgid "%s: ignoring package upgrade (%s => %s)\n"
+msgstr "%s-%s: Ignoriere Paketaktualisierung (%s)"
-#: lib/libalpm/sync.c:567 lib/libalpm/sync.c:604
-#, c-format
-msgid "removing '%s' from target list"
-msgstr "Entferne '%s' von Ziel-Liste"
+#: lib/libalpm/sync.c:320
+#, fuzzy, c-format
+msgid "repository '%s' not found\n"
+msgstr "Repositorium '%s' nicht gefunden"
-#: lib/libalpm/sync.c:576
-#, c-format
-msgid "resolving package '%s' conflict"
-msgstr "Löse Paket-Konflikt '%s'"
+#: lib/libalpm/sync.c:354
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- skipping\n"
+msgstr "%s-%s ist aktuell -- Ãœberspringe"
-#: lib/libalpm/sync.c:599
-#, c-format
-msgid "electing '%s' for removal"
-msgstr "Wähle '%s' zum Entfernen aus"
+#: lib/libalpm/sync.c:358
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- reinstalling\n"
+msgstr "%s-%s ist aktuell -- Ãœberspringe"
-#: lib/libalpm/sync.c:610 lib/libalpm/sync.c:626
-msgid "unresolvable package conflicts detected"
+#: lib/libalpm/sync.c:613 lib/libalpm/sync.c:618
+#, fuzzy
+msgid "unresolvable package conflicts detected\n"
msgstr "Nicht lösbare Paketkonflikte gefunden"
-#: lib/libalpm/sync.c:678
-msgid "checking dependencies of packages designated for removal"
-msgstr "Überprüfe die Abhängigkeiten der zu entfernenden Pakete"
-
-#: lib/libalpm/sync.c:692
-msgid "something has gone horribly wrong"
-msgstr "etwas ist fürchterlich schief gegangen"
-
-#: lib/libalpm/sync.c:712
-#, c-format
-msgid "found '%s' as a provision for '%s' -- conflict aborted"
-msgstr "'%s' stellt '%s' bereit -- Konflikt abgewandt"
-
-#: lib/libalpm/sync.c:808
-#, c-format
-msgid "%s is already in the cache\n"
-msgstr "%s ist bereits im Puffer\n"
-
-#: lib/libalpm/sync.c:819
-#, c-format
-msgid "no %s cache exists, creating...\n"
-msgstr "Es existiert kein %s-Puffer. Erstelle... \n"
-
-#: lib/libalpm/sync.c:820
-#, c-format
-msgid "warning: no %s cache exists, creating..."
-msgstr "Warnung: Es existiert kein %s Puffer. Erstelle..."
+#: lib/libalpm/sync.c:628
+#, fuzzy, c-format
+msgid "malloc failure: could not allocate %zd bytes\n"
+msgstr "malloc-Fehler: Konnte %d Bytes nicht zuweisen"
#: lib/libalpm/sync.c:825
-msgid "couldn't create package cache, using /tmp instead\n"
-msgstr "Konnte Paketpuffer nicht erstellen, benutze stattdessen /tmp\n"
-
-#: lib/libalpm/sync.c:826
-msgid "warning: couldn't create package cache, using /tmp instead"
-msgstr "Warnung: Konnte Paketpuffer nicht erstellen; benutze stattdessen /tmp"
-
-#: lib/libalpm/sync.c:833
#, c-format
-msgid "failed to retrieve some files from %s\n"
-msgstr "Konnte manche Dateien von %s nicht übertragen\n"
+msgid "command: %s\n"
+msgstr ""
-#: lib/libalpm/sync.c:863 lib/libalpm/sync.c:875
-#, c-format
-msgid "can't get md5 or sha1 checksum for package %s\n"
+#: lib/libalpm/sync.c:888 lib/libalpm/sync.c:896
+#, fuzzy, c-format
+msgid "can't get md5 checksum for file %s\n"
msgstr "Kann MD5- oder SHA1-Prüfsumme für Paket %s nicht ermitteln\n"
-#: lib/libalpm/sync.c:894
-#, c-format
-msgid "archive %s was corrupted (bad MD5 or SHA1 checksum)\n"
+#: lib/libalpm/sync.c:910
+#, fuzzy, c-format
+msgid "file %s was corrupted (bad MD5 checksum)\n"
msgstr "Archiv %s war beschädigt (falsche MD5- oder SHA1-Prüfsumme)\n"
-#: lib/libalpm/sync.c:896
+#: lib/libalpm/sync.c:1056
#, c-format
-msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr "Archiv %s ist beschädigt (falsche MD5- oder SHA1-Prüfsumme)\n"
+msgid "failed to retrieve some files from %s\n"
+msgstr "Konnte manche Dateien von %s nicht übertragen\n"
-#: lib/libalpm/sync.c:917
-msgid "could not create removal transaction"
+#: lib/libalpm/sync.c:1137
+#, fuzzy
+msgid "could not create removal transaction\n"
msgstr "Konnte den Lösch-Vorgang nicht erstellen"
-#: lib/libalpm/sync.c:923
-msgid "could not initialize the removal transaction"
+#: lib/libalpm/sync.c:1143
+#, fuzzy
+msgid "could not initialize the removal transaction\n"
msgstr "Konnte den Lösch-Vorgang nicht beginnen"
-#: lib/libalpm/sync.c:943
-msgid "removing conflicting and to-be-replaced packages"
-msgstr "Entferne im Konflikt stehende und zu ersetzende Pakete"
-
-#: lib/libalpm/sync.c:945
-msgid "could not prepare removal transaction"
+#: lib/libalpm/sync.c:1165
+#, fuzzy
+msgid "could not prepare removal transaction\n"
msgstr "Konnte Lösch-Vorgang nicht vorbereiten"
-#: lib/libalpm/sync.c:951
-msgid "could not commit removal transaction"
+#: lib/libalpm/sync.c:1171
+#, fuzzy
+msgid "could not commit removal transaction\n"
msgstr "Konnte Lösch-Vorgang nicht durchführen"
-#: lib/libalpm/sync.c:958
-msgid "installing packages"
-msgstr "Installiere Pakete"
-
-#: lib/libalpm/sync.c:961
-msgid "could not create transaction"
+#: lib/libalpm/sync.c:1182
+#, fuzzy
+msgid "could not create transaction\n"
msgstr "Konnte den Vorgang nicht erstellen"
-#: lib/libalpm/sync.c:966
-msgid "could not initialize transaction"
+#: lib/libalpm/sync.c:1187
+#, fuzzy
+msgid "could not initialize transaction\n"
msgstr "Konnte den Vorgang nicht beginnen"
-#: lib/libalpm/sync.c:989
-msgid "could not prepare transaction"
+#: lib/libalpm/sync.c:1214
+#, fuzzy
+msgid "could not prepare transaction\n"
msgstr "Konnte den Vorgang nicht vorbereiten"
-#: lib/libalpm/sync.c:1001
-msgid "updating database for replaced packages' dependencies"
-msgstr "Aktualisiere Datenbank für die Abhängigkeiten der ersetzten Pakete"
+#: lib/libalpm/sync.c:1219
+#, fuzzy
+msgid "could not commit transaction\n"
+msgstr "Konnte den Vorgang nicht durchführen"
-#: lib/libalpm/sync.c:1030
-#, c-format
-msgid "could not update requiredby for database entry %s-%s"
-msgstr "Konnte requiredby für Datenbank-Eintrag %s-%s nicht aktualisieren"
+#: lib/libalpm/trans.c:214
+#, fuzzy, c-format
+msgid "could not remove lock file %s\n"
+msgstr "Konnte Sperrdatei %s nicht entfernen"
-#: lib/libalpm/sync.c:1039
+#: lib/libalpm/trans.c:483
#, c-format
-msgid "could not update new database entry %s-%s"
-msgstr "Konnte neuen Datenbank-Eintrag %s-%s nicht aktualisieren"
+msgid "No /bin/sh in root dir (%s), aborting scriptlet\n"
+msgstr ""
-#: lib/libalpm/sync.c:1079
-#, c-format
-msgid "found package '%s-%s' in sync"
-msgstr "Paket '%s-%s' gefunden"
+#: lib/libalpm/trans.c:494
+#, fuzzy
+msgid "could not create temp directory\n"
+msgstr "Konnte temp-Verzeichnis nicht erstellen"
-#: lib/libalpm/sync.c:1085
-#, c-format
-msgid "package '%s' not found in sync"
-msgstr "Paket '%s' nicht in Datenbank gefunden"
+#: lib/libalpm/trans.c:536
+#, fuzzy, c-format
+msgid "could not change directory to %s (%s)\n"
+msgstr "Konnte nicht zu Verzeichnis %s wechseln (%s)"
-#: lib/libalpm/trans.c:271
-#, c-format
-msgid "updating dependency packages 'requiredby' fields for %s-%s"
-msgstr "Aktualisiere requiredby-Felder abhängiger Pakete für %s-%s"
+#: lib/libalpm/trans.c:554
+#, fuzzy, c-format
+msgid "could not fork a new process (%s)\n"
+msgstr "Konnte keinen neuen Prozess starten (%s)"
-#: lib/libalpm/trans.c:274
-msgid "package has no dependencies, no other packages to update"
-msgstr ""
-"Paket besitzt keine Abhängigkeiten, kein anderes Paket muß aktualisiert "
-"werden"
+#: lib/libalpm/trans.c:564
+#, fuzzy, c-format
+msgid "could not change the root directory (%s)\n"
+msgstr "Konnte root-Verzeichnis nicht wechseln (%s)"
-#: lib/libalpm/trans.c:311 lib/libalpm/trans.c:341
-#, c-format
-msgid "updating 'requiredby' field for package '%s'"
-msgstr "Aktualisiere requiredby-Feld für Paket '%s'"
+#: lib/libalpm/trans.c:569
+#, fuzzy, c-format
+msgid "could not change directory to / (%s)\n"
+msgstr "Konnte nicht zu Verzeichnis / wechseln (%s)"
-#: lib/libalpm/trans.c:326 lib/libalpm/trans.c:356
-#, c-format
-msgid "could not update 'requiredby' database entry %s-%s"
-msgstr "Konnte requiredby-Eintrag %s-%s nicht aktualisieren"
+#: lib/libalpm/trans.c:578
+#, fuzzy, c-format
+msgid "call to popen failed (%s)"
+msgstr "Aufruf von 'waitpid' fehlgeschlagen (%s)"
-#: lib/libalpm/trans.c:333
-#, c-format
-msgid "could not find dependency '%s'"
-msgstr "Konnte Abhängigkeit '%s' nicht finden"
+#: lib/libalpm/trans.c:597
+#, fuzzy, c-format
+msgid "call to waitpid failed (%s)\n"
+msgstr "Aufruf von 'waitpid' fehlgeschlagen (%s)"
-#: lib/libalpm/util.c:142
-#, c-format
-msgid "failed to make path '%s' : %s"
+#: lib/libalpm/trans.c:606
+msgid "scriptlet failed to execute correctly\n"
+msgstr ""
+
+#: lib/libalpm/trans.c:615
+#, fuzzy, c-format
+msgid "could not remove tmpdir %s\n"
+msgstr "Konnte tmpdir %s nicht entfernen"
+
+#: lib/libalpm/util.c:204
+#, fuzzy, c-format
+msgid "failed to make path '%s' : %s\n"
msgstr "Konnte Pfad nicht erstellen '%s' : %s"
-#: lib/libalpm/util.c:280
+#: lib/libalpm/util.c:389
#, c-format
msgid "could not open %s: %s\n"
msgstr "Konnte Datei %s nicht öffnen: %s\n"
-#: lib/libalpm/util.c:293
+#: lib/libalpm/util.c:573
#, c-format
-msgid "could not extract %s: %s\n"
-msgstr "Konnte %s nicht entpacken: %s\n"
+msgid "no %s cache exists, creating...\n"
+msgstr "Es existiert kein %s-Puffer. Erstelle... \n"
+
+#: lib/libalpm/util.c:593
+#, fuzzy
+msgid "couldn't create package cache, using /tmp instead\n"
+msgstr "Konnte Paketpuffer nicht erstellen, benutze stattdessen /tmp"
-#: lib/libalpm/util.c:350
+#: lib/libalpm/util.c:643
#, c-format
-msgid "logaction called: %s"
-msgstr "Log-Aktion aufgerufen: %s"
+msgid "md5: %s can't be opened\n"
+msgstr "md5: %s kann nicht geöffnet werden\n"
-#: lib/libalpm/util.c:445
-msgid "could not create temp directory"
-msgstr "Konnte temp-Verzeichnis nicht erstellen"
+#: lib/libalpm/util.c:645
+#, fuzzy, c-format
+msgid "md5: %s can't be read\n"
+msgstr "md5: %s kann nicht geöffnet werden\n"
-#: lib/libalpm/util.c:472
-#, c-format
-msgid "could not change directory to %s (%s)"
-msgstr "Konnte nicht zu Verzeichnis %s wechseln (%s)"
+#~ msgid "please remove '%s' first, using -Rd"
+#~ msgstr "Entfernen Sie bitte zuerst '%s' mit -Rd"
-#: lib/libalpm/util.c:476
-#, c-format
-msgid "executing %s script..."
-msgstr "Führe %s-Skript aus ..."
+#~ msgid "could not extract %s (%s)"
+#~ msgstr "Konnte %s nicht entpacken (%s)"
-#: lib/libalpm/util.c:489
-#, c-format
-msgid "could not fork a new process (%s)"
-msgstr "Konnte keinen neuen Prozess starten (%s)"
+#~ msgid "could not update provision '%s' from '%s'"
+#~ msgstr "Konnte Bereitstellung '%s' von '%s' nicht aktualisieren"
-#: lib/libalpm/util.c:496
-#, c-format
-msgid "chrooting in %s"
-msgstr "chroot in %s"
+#~ msgid "%s: description file is missing"
+#~ msgstr "%s: Beschreibungsdatei fehlt"
-#: lib/libalpm/util.c:498
-#, c-format
-msgid "could not change the root directory (%s)"
-msgstr "Konnte root-Verzeichnis nicht wechseln (%s)"
+#~ msgid "%s: dependency file is missing"
+#~ msgstr "%s: Abhängige Datei fehlt"
-#: lib/libalpm/util.c:502
-#, c-format
-msgid "could not change directory to / (%s)"
-msgstr "Konnte nicht zu Verzeichnis / wechseln (%s)"
+#~ msgid "%s: file list is missing"
+#~ msgstr "%s: Dateiliste fehlt"
-#: lib/libalpm/util.c:506
-#, c-format
-msgid "executing \"%s\""
-msgstr "Führe \"%s\" aus"
+#~ msgid "malloc failed: could not allocate %d bytes"
+#~ msgstr "malloc fehlgeschlagen: Konnte %d Bytes nicht zuweisen"
-#: lib/libalpm/util.c:509
-#, c-format
-msgid "call to popen failed (%s)"
-msgstr "Aufruf von 'popen' fehlgeschlagen (%s)"
+#~ msgid ""
+#~ "cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+#~ msgstr ""
+#~ "Kann Abhängigkeiten für \"%s\" nicht auflösen (\"%s\" ist nicht in "
+#~ "Paketliste enthalten)"
-#: lib/libalpm/util.c:541
-#, c-format
-msgid "call to waitpid failed (%s)"
-msgstr "Aufruf von 'waitpid' fehlgeschlagen (%s)"
+#~ msgid "cannot canonicalize specified root path '%s'"
+#~ msgstr "Kann das spezifizierte Wurzelverzeichnis '%s' nicht anerkennen"
-#: lib/libalpm/util.c:550
-#, c-format
-msgid "could not remove tmpdir %s"
-msgstr "Konnte tmpdir %s nicht entfernen"
+#~ msgid "could not get sha1sum for package %s-%s"
+#~ msgstr "Konnte SHA1-Prüfsumme für Paket %s-%s nicht ermitteln"
-#: lib/libalpm/util.c:568
-#, c-format
-msgid "cannot read disk space information from %s: %s"
-msgstr "Konnte freien Speicher von %s nicht ermitteln: %s"
+#~ msgid "sha1sums do not match for package %s-%s"
+#~ msgstr "SHA1-Prüfsummen für Paket %s-%s stimmen nicht überein"
-#: lib/libalpm/util.c:609
-#, c-format
-msgid "check_freespace: total pkg size: %lld, disk space: %lld"
-msgstr "Prüfe freien Speicher: Gesamte pkg-Größe: %lld, Speicherplatz: %lld"
+#~ msgid "cannot remove file %s: %s"
+#~ msgstr "Kann Datei %s nicht entfernen: %s"
-#: lib/libalpm/versioncmp.c:279
-#, c-format
-msgid "depcmp: %s-%s %s %s-%s => %s"
-msgstr "depcmp: %s-%s %s %s-%s => %s"
+#~ msgid "sha1: %s can't be opened\n"
+#~ msgstr "sha1: %s kann nicht geöffnet werden\n"
-#: lib/libalpm/versioncmp.c:284
-#, c-format
-msgid "depcmp: %s-%s %s %s => %s"
-msgstr "depcmp: %s-%s %s %s => %s"
+#~ msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
+#~ msgstr "Archiv %s ist beschädigt (falsche MD5- oder SHA1-Prüfsumme)\n"
+
+#~ msgid "could not update requiredby for database entry %s-%s"
+#~ msgstr "Konnte requiredby für Datenbank-Eintrag %s-%s nicht aktualisieren"
+
+#~ msgid "could not update new database entry %s-%s"
+#~ msgstr "Konnte neuen Datenbank-Eintrag %s-%s nicht aktualisieren"
+
+#~ msgid "could not update 'requiredby' database entry %s-%s"
+#~ msgstr "Konnte requiredby-Eintrag %s-%s nicht aktualisieren"
diff --git a/lib/libalpm/po/en_GB.po b/lib/libalpm/po/en_GB.po
index f4428e48..c9aa7a0b 100644
--- a/lib/libalpm/po/en_GB.po
+++ b/lib/libalpm/po/en_GB.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.0.0\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-09-16 16:55-0500\n"
-"PO-Revision-Date: 2007-03-07 21:05+1100\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: 2007-12-03 15:22+1000\n"
"Last-Translator: Jeff Bailes <thepizzaking@gmail.com>\n"
"Language-Team: English <en_gb@li.org>\n"
"MIME-Version: 1.0\n"
@@ -16,1491 +16,713 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: lib/libalpm/add.c:77
+#: lib/libalpm/add.c:88
#, c-format
-msgid "loading target '%s'"
-msgstr "loading target '%s'"
+msgid "replacing older version %s-%s by %s in target list\n"
+msgstr "replacing older version %s-%s by %s in target list\n"
-#: lib/libalpm/add.c:122
+#: lib/libalpm/add.c:97
#, c-format
-msgid "replacing older version %s-%s by %s in target list"
-msgstr "replacing older version %s-%s by %s in target list"
+msgid "newer version %s-%s is in the target list -- skipping\n"
+msgstr "newer version %s-%s is in the target list -- skipping\n"
-#: lib/libalpm/add.c:131
-#, c-format
-msgid "newer version %s-%s is in the target list -- skipping"
-msgstr "newer version %s-%s is in the target list -- skipping"
-
-#: lib/libalpm/add.c:138
-#, c-format
-msgid "reading '%s' metadata"
-msgstr "reading '%s' metadata"
-
-#: lib/libalpm/add.c:191 lib/libalpm/remove.c:111
-msgid "looking for unsatisfied dependencies"
-msgstr "looking for unsatisfied dependencies"
-
-#: lib/libalpm/add.c:203 lib/libalpm/sync.c:483
-msgid "looking for conflicts"
-msgstr "looking for conflicts"
-
-#: lib/libalpm/add.c:208
-msgid "replacing packages with -A and -U is not supported yet"
-msgstr "replacing packages with -A and -U is not supported yet"
-
-#: lib/libalpm/add.c:209
-#, c-format
-msgid "please remove '%s' first, using -Rd"
-msgstr "please remove '%s' first, using -Rd"
-
-#: lib/libalpm/add.c:250 lib/libalpm/remove.c:147
-msgid "sorting by dependencies"
-msgstr "sorting by dependencies"
-
-#: lib/libalpm/add.c:262
-msgid "cleaning up"
-msgstr "cleaning up"
-
-#: lib/libalpm/add.c:277
-msgid "looking for file conflicts"
-msgstr "looking for file conflicts"
-
-#: lib/libalpm/add.c:346
-#, c-format
-msgid "upgrading package %s-%s"
-msgstr "upgrading package %s-%s"
-
-#: lib/libalpm/add.c:370
-#, c-format
-msgid "adding package %s-%s"
-msgstr "adding package %s-%s"
-
-#: lib/libalpm/add.c:383
-#, c-format
-msgid "removing old package first (%s-%s)"
-msgstr "removing old package first (%s-%s)"
-
-#: lib/libalpm/add.c:411
-#, c-format
-msgid "adding %s to the NoUpgrade array temporarily"
-msgstr "adding %s to the NoUpgrade array temporarily"
-
-#: lib/libalpm/add.c:429
-msgid "extracting files"
-msgstr "extracting files"
-
-#: lib/libalpm/add.c:444 lib/libalpm/util.c:465
-msgid "could not get current working directory"
-msgstr "could not get current working directory"
-
-#: lib/libalpm/add.c:500 lib/libalpm/add.c:501
-#, c-format
-msgid "%s is in NoExtract, skipping extraction"
-msgstr "%s is in NoExtract, skipping extraction"
-
-#: lib/libalpm/add.c:508
-#, c-format
-msgid "%s is in trans->skip_add, skipping extraction"
-msgstr "%s is in trans->skip_add, skipping extraction"
-
-#: lib/libalpm/add.c:554 lib/libalpm/add.c:555 lib/libalpm/add.c:706
-#, c-format
-msgid "could not extract %s (%s)"
-msgstr "could not extract %s (%s)"
-
-#: lib/libalpm/add.c:598
-#, c-format
-msgid "checking md5 hashes for %s"
-msgstr "checking md5 hashes for %s"
-
-#: lib/libalpm/add.c:600
-#, c-format
-msgid "checking sha1 hashes for %s"
-msgstr "checking sha1 hashes for %s"
-
-#: lib/libalpm/add.c:602
-#, c-format
-msgid "current: %s"
-msgstr "current: %s"
-
-#: lib/libalpm/add.c:603
-#, c-format
-msgid "new: %s"
-msgstr "new: %s"
+#: lib/libalpm/add.c:168
+msgid "conflicting packages were found in the target list\n"
+msgstr "conflicting packages were found in the target list\n"
-#: lib/libalpm/add.c:604
-#, c-format
-msgid "original: %s"
-msgstr "original: %s"
-
-#: lib/libalpm/add.c:616
-#, c-format
-msgid "could not rename %s (%s)"
-msgstr "could not rename %s (%s)"
-
-#: lib/libalpm/add.c:617
-#, c-format
-msgid "error: could not rename %s (%s)"
-msgstr "error: could not rename %s (%s)"
-
-#: lib/libalpm/add.c:623 lib/libalpm/add.c:642
-#, c-format
-msgid "could not copy tempfile to %s (%s)"
-msgstr "could not copy tempfile to %s (%s)"
-
-#: lib/libalpm/add.c:624
-#, c-format
-msgid "error: could not copy tempfile to %s (%s)"
-msgstr "error: could not copy tempfile to %s (%s)"
+#: lib/libalpm/add.c:169
+msgid "you cannot install two conflicting packages at the same time\n"
+msgstr "you cannot install two conflicting packages at the same time\n"
-#: lib/libalpm/add.c:628 lib/libalpm/remove.c:247
-#, c-format
-msgid "%s saved as %s"
-msgstr "%s saved as %s"
-
-#: lib/libalpm/add.c:629
-#, c-format
-msgid "warning: %s saved as %s"
-msgstr "warning: %s saved as %s"
+#: lib/libalpm/add.c:172
+msgid "replacing packages with -A and -U is not supported yet\n"
+msgstr "replacing packages with -A and -U is not supported yet\n"
-#: lib/libalpm/add.c:639
-#, c-format
-msgid "action: installing new file: %s"
-msgstr "action: installing new file: %s"
-
-#: lib/libalpm/add.c:649 lib/libalpm/add.c:655 lib/libalpm/add.c:660
-msgid "action: leaving existing file in place"
-msgstr "action: leaving existing file in place"
-
-#: lib/libalpm/add.c:663
-msgid "action: keeping current file and installing new one with .pacnew ending"
-msgstr ""
-"action: keeping current file and installing new one with .pacnew ending"
-
-#: lib/libalpm/add.c:666
-#, c-format
-msgid "could not install %s as %s: %s"
-msgstr "could not install %s as %s: %s"
-
-#: lib/libalpm/add.c:667
-#, c-format
-msgid "error: could not install %s as %s: %s"
-msgstr "error: could not install %s as %s: %s"
-
-#: lib/libalpm/add.c:669
-#, c-format
-msgid "%s installed as %s"
-msgstr "%s installed as %s"
-
-#: lib/libalpm/add.c:670
-#, c-format
-msgid "warning: %s installed as %s"
-msgstr "warning: %s installed as %s"
-
-#: lib/libalpm/add.c:684
-#, c-format
-msgid "%s is in NoUpgrade -- skipping"
-msgstr "%s is in NoUpgrade -- skipping"
-
-#: lib/libalpm/add.c:685
-#, c-format
-msgid "extracting %s as %s.pacnew"
-msgstr "extracting %s as %s.pacnew"
-
-#: lib/libalpm/add.c:686
-#, c-format
-msgid "warning: extracting %s as %s.pacnew"
-msgstr "warning: extracting %s as %s.pacnew"
-
-#: lib/libalpm/add.c:689
-#, c-format
-msgid "extracting %s"
-msgstr "extracting %s"
-
-#: lib/libalpm/add.c:707
-#, c-format
-msgid "error: could not extract %s (%s)"
-msgstr "error: could not extract %s (%s)"
-
-#: lib/libalpm/add.c:719
-#, c-format
-msgid "appending backup entry for %s"
-msgstr "appending backup entry for %s"
-
-#: lib/libalpm/add.c:751 lib/libalpm/add.c:753
-#, c-format
-msgid "errors occurred while %s %s"
-msgstr "errors occurred while %s %s"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "upgrading"
-msgstr "upgrading"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "installing"
-msgstr "installing"
-
-#: lib/libalpm/add.c:771
-#, c-format
-msgid "provision '%s' has been removed from package %s (%s => %s)"
-msgstr "provision '%s' has been removed from package %s (%s => %s)"
-
-#: lib/libalpm/add.c:783
-#, c-format
-msgid "updating '%s' due to provision change (%s)"
-msgstr "updating '%s' due to provision change (%s)"
-
-#: lib/libalpm/add.c:787 lib/libalpm/add.c:788
-#, c-format
-msgid "could not update provision '%s' from '%s'"
-msgstr "could not update provision '%s' from '%s'"
-
-#: lib/libalpm/add.c:801 lib/libalpm/remove.c:336
-msgid "updating database"
-msgstr "updating database"
-
-#: lib/libalpm/add.c:802
-#, c-format
-msgid "adding database entry '%s'"
-msgstr "adding database entry '%s'"
-
-#: lib/libalpm/add.c:805 lib/libalpm/add.c:807
-#, c-format
-msgid "could not update database entry %s-%s"
-msgstr "could not update database entry %s-%s"
-
-#: lib/libalpm/add.c:813
-#, c-format
-msgid "could not add entry '%s' in cache"
-msgstr "could not add entry '%s' in cache"
-
-#: lib/libalpm/add.c:843 lib/libalpm/remove.c:363 lib/libalpm/sync.c:1055
-#, c-format
-msgid "running \"ldconfig -r %s\""
-msgstr "running \"ldconfig -r %s\""
-
-#: lib/libalpm/alpm.c:116
-#, c-format
-msgid "removing DB %s, %d remaining..."
-msgstr "removing DB %s, %d remaining..."
-
-#: lib/libalpm/alpm.c:181
-#, c-format
-msgid "unregistering database '%s'"
-msgstr "unregistering database '%s'"
+#: lib/libalpm/add.c:173
+msgid "you can replace packages manually using -Rd and -U\n"
+msgstr "you can replace packages manually using -Rd and -U\n"
-#: lib/libalpm/alpm.c:186
-#, c-format
-msgid "closing database '%s'"
-msgstr "closing database '%s'"
-
-#: lib/libalpm/alpm.c:232
-#, c-format
-msgid ""
-"adding new server to database '%s': protocol '%s', server '%s', path '%s'"
-msgstr ""
-"adding new server to database '%s': protocol '%s', server '%s', path '%s'"
-
-#: lib/libalpm/alpm.c:236
-#, c-format
-msgid "serverlist flushed for '%s'"
-msgstr "serverlist flushed for '%s'"
-
-#: lib/libalpm/alpm.c:279
-#, c-format
-msgid "failed to get lastupdate time for %s (no big deal)"
-msgstr "failed to get lastupdate time for %s (no big deal)"
-
-#: lib/libalpm/alpm.c:298
-#, c-format
-msgid "failed to sync db: %s [%d]"
-msgstr "failed to sync db: %s [%d]"
-
-#: lib/libalpm/alpm.c:302
-#, c-format
-msgid "sync: new mtime for %s: %s"
-msgstr "sync: new mtime for %s: %s"
-
-#: lib/libalpm/alpm.c:308
-#, c-format
-msgid "flushing database %s%s"
-msgstr "flushing database %s%s"
-
-#: lib/libalpm/alpm.c:312
-#, c-format
-msgid "could not remove database entry %s%s"
-msgstr "could not remove database entry %s%s"
-
-#: lib/libalpm/alpm.c:481
-#, c-format
-msgid "could not get sha1sum for package %s-%s"
-msgstr "could not get sha1sum for package %s-%s"
-
-#: lib/libalpm/alpm.c:487
-#, c-format
-msgid "sha1sums for package %s-%s match"
-msgstr "sha1sums for package %s-%s match"
-
-#: lib/libalpm/alpm.c:490
-#, c-format
-msgid "sha1sums do not match for package %s-%s"
-msgstr "sha1sums do not match for package %s-%s"
-
-#: lib/libalpm/alpm.c:525
-#, c-format
-msgid "could not get md5sum for package %s-%s"
-msgstr "could not get md5sum for package %s-%s"
-
-#: lib/libalpm/alpm.c:531
-#, c-format
-msgid "md5sums for package %s-%s match"
-msgstr "md5sums for package %s-%s match"
-
-#: lib/libalpm/alpm.c:534
-#, c-format
-msgid "md5sums do not match for package %s-%s"
-msgstr "md5sums do not match for package %s-%s"
-
-#: lib/libalpm/alpm.c:783
-#, c-format
-msgid "could not remove lock file %s"
-msgstr "could not remove lock file %s"
-
-#: lib/libalpm/alpm.c:784
-#, c-format
-msgid "warning: could not remove lock file %s"
-msgstr "warning: could not remove lock file %s"
-
-#: lib/libalpm/alpm.c:920
-#, c-format
-msgid "config: new section '%s'"
-msgstr "config: new section '%s'"
-
-#: lib/libalpm/alpm.c:951
-msgid "config: nopassiveftp"
-msgstr "config: nopassiveftp"
-
-#: lib/libalpm/alpm.c:954
-msgid "config: usesyslog"
-msgstr "config: usesyslog"
-
-#: lib/libalpm/alpm.c:957
-msgid "config: chomp"
-msgstr "config: chomp"
-
-#: lib/libalpm/alpm.c:960
-msgid "config: usecolor"
-msgstr "config: usecolor"
-
-#: lib/libalpm/alpm.c:969
-#, c-format
-msgid "config: including %s"
-msgstr "config: including %s"
-
-#: lib/libalpm/alpm.c:979 lib/libalpm/alpm.c:984
-#, c-format
-msgid "config: noupgrade: %s"
-msgstr "config: noupgrade: %s"
-
-#: lib/libalpm/alpm.c:992 lib/libalpm/alpm.c:997
-#, c-format
-msgid "config: noextract: %s"
-msgstr "config: noextract: %s"
-
-#: lib/libalpm/alpm.c:1005 lib/libalpm/alpm.c:1010
-#, c-format
-msgid "config: ignorepkg: %s"
-msgstr "config: ignorepkg: %s"
-
-#: lib/libalpm/alpm.c:1018 lib/libalpm/alpm.c:1023
-#, c-format
-msgid "config: holdpkg: %s"
-msgstr "config: holdpkg: %s"
-
-#: lib/libalpm/alpm.c:1030
-#, c-format
-msgid "config: dbpath: %s"
-msgstr "config: dbpath: %s"
-
-#: lib/libalpm/alpm.c:1037
-#, c-format
-msgid "config: cachedir: %s"
-msgstr "config: cachedir: %s"
-
-#: lib/libalpm/alpm.c:1044
-#, fuzzy, c-format
-msgid "config: rootdir: %s"
-msgstr "config: cachedir: %s"
-
-#: lib/libalpm/alpm.c:1047
-#, c-format
-msgid "config: logfile: %s"
-msgstr "config: logfile: %s"
-
-#: lib/libalpm/alpm.c:1050
-#, c-format
-msgid "config: xfercommand: %s"
-msgstr "config: xfercommand: %s"
-
-#: lib/libalpm/alpm.c:1055
-#, c-format
-msgid "config: upgradedelay: %d"
-msgstr "config: upgradedelay: %d"
-
-#: lib/libalpm/alpm.c:1093 lib/libalpm/sync.c:107
-msgid "checking for package replacements"
-msgstr "checking for package replacements"
-
-#: lib/libalpm/alpm.c:1104 lib/libalpm/sync.c:123
-#, c-format
-msgid "checking replacement '%s' for package '%s'"
-msgstr "checking replacement '%s' for package '%s'"
-
-#: lib/libalpm/alpm.c:1107 lib/libalpm/sync.c:125
-#, c-format
-msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)"
-msgstr "%s-%s: ignoring package upgrade (to be replaced by %s-%s)"
-
-#: lib/libalpm/alpm.c:1137 lib/libalpm/sync.c:160
-#, c-format
-msgid "%s-%s elected for upgrade (to be replaced by %s-%s)"
-msgstr "%s-%s elected for upgrade (to be replaced by %s-%s)"
-
-#: lib/libalpm/alpm.c:1159 lib/libalpm/sync.c:194
-#, c-format
-msgid "'%s' not found in sync db -- skipping"
-msgstr "'%s' not found in sync db -- skipping"
-
-#: lib/libalpm/alpm.c:1173 lib/libalpm/sync.c:208 lib/libalpm/sync.c:509
-#, c-format
-msgid "'%s' is already elected for removal -- skipping"
-msgstr "'%s' is already elected for removal -- skipping"
-
-#: lib/libalpm/alpm.c:1179
-#, c-format
-msgid "%s elected for upgrade (%s => %s)"
-msgstr "%s elected for upgrade (%s => %s)"
-
-#: lib/libalpm/be_files.c:61
-#, c-format
-msgid "unpacking database '%s'"
-msgstr "unpacking database '%s'"
-
-#: lib/libalpm/be_files.c:78
-#, c-format
-msgid "opening database from path '%s'"
-msgstr "opening database from path '%s'"
-
-#: lib/libalpm/be_files.c:182
-#, c-format
-msgid "db scan could not find package: %s"
-msgstr "db scan could not find package: %s"
-
-#: lib/libalpm/be_files.c:186
-#, c-format
-msgid "invalid name for database entry '%s'"
-msgstr "invalid name for database entry '%s'"
-
-#: lib/libalpm/be_files.c:221
-msgid "invalid package entry provided to _alpm_db_read, skipping"
-msgstr "invalid package entry provided to _alpm_db_read, skipping"
-
-#: lib/libalpm/be_files.c:226
+#: lib/libalpm/add.c:365
#, c-format
msgid ""
-"request to read database info for a file-based package '%s', skipping..."
+"directory permissions differ on %s\n"
+"filesystem: %o package: %o\n"
msgstr ""
-"request to read database info for a file-based package '%s', skipping..."
+"directory permissions differ on %s\n"
+"filesystem: %o package: %o\n"
-#: lib/libalpm/be_files.c:239
+#: lib/libalpm/add.c:392
#, c-format
-msgid "loading package data for %s : level=%d"
-msgstr "loading package data for %s : level=%d"
+msgid "extract: symlink %s does not point to dir\n"
+msgstr "extract: symlink %s does not point to dir\n"
-#: lib/libalpm/be_files.c:247
+#: lib/libalpm/add.c:399
#, c-format
-msgid "cannot find '%s-%s' in db '%s'"
-msgstr "cannot find '%s-%s' in db '%s'"
+msgid "extract: not overwriting dir with file %s\n"
+msgstr "extract: not overwriting dir with file %s\n"
-#: lib/libalpm/be_files.c:255 lib/libalpm/be_files.c:401
-#: lib/libalpm/be_files.c:424 lib/libalpm/be_files.c:515
-#: lib/libalpm/be_files.c:605 lib/libalpm/be_files.c:632
-#: lib/libalpm/package.c:208
-#, c-format
-msgid "could not open file %s: %s"
-msgstr "could not open file %s: %s"
-
-#: lib/libalpm/be_files.c:512
-#, c-format
-msgid "writing %s-%s DESC information back to db"
-msgstr "writing %s-%s DESC information back to db"
-
-#: lib/libalpm/be_files.c:602
-#, c-format
-msgid "writing %s-%s FILES information back to db"
-msgstr "writing %s-%s FILES information back to db"
-
-#: lib/libalpm/be_files.c:629
-#, c-format
-msgid "writing %s-%s DEPENDS information back to db"
-msgstr "writing %s-%s DEPENDS information back to db"
-
-#: lib/libalpm/cache.c:59
-#, c-format
-msgid "loading package cache for repository '%s'"
-msgstr "loading package cache for repository '%s'"
-
-#: lib/libalpm/cache.c:64
-#, c-format
-msgid "adding '%s' to package cache for db '%s'"
-msgstr "adding '%s' to package cache for db '%s'"
-
-#: lib/libalpm/cache.c:85
-#, c-format
-msgid "freeing package cache for repository '%s'"
-msgstr "freeing package cache for repository '%s'"
-
-#: lib/libalpm/cache.c:109
-#, c-format
-msgid "error: pkgcache is NULL for db '%s'"
-msgstr "error: pkgcache is NULL for db '%s'"
-
-#: lib/libalpm/cache.c:129
-#, c-format
-msgid "adding entry '%s' in '%s' cache"
-msgstr "adding entry '%s' in '%s' cache"
-
-#: lib/libalpm/cache.c:149
-#, c-format
-msgid "removing entry '%s' from '%s' cache"
-msgstr "removing entry '%s' from '%s' cache"
-
-#: lib/libalpm/cache.c:156
-#, c-format
-msgid "cannot remove entry '%s' from '%s' cache: not found"
-msgstr "cannot remove entry '%s' from '%s' cache: not found"
-
-#: lib/libalpm/cache.c:178
-#, c-format
-msgid "error: failed to get '%s' from NULL pkgcache"
-msgstr "error: failed to get '%s' from NULL pkgcache"
-
-#: lib/libalpm/cache.c:201
-#, c-format
-msgid "loading group cache for repository '%s'"
-msgstr "loading group cache for repository '%s'"
-
-#: lib/libalpm/conflict.c:69
-#, c-format
-msgid " found conflict '%s' : package '%s'"
-msgstr " found conflict '%s' : package '%s'"
-
-#: lib/libalpm/conflict.c:78
-#, c-format
-msgid " found conflict '%s' : package '%s' provides '%s'"
-msgstr " found conflict '%s' : package '%s' provides '%s'"
-
-#: lib/libalpm/conflict.c:101 lib/libalpm/conflict.c:143
-#, c-format
-msgid "package '%s' conflicts with itself - packaging error"
-msgstr "package '%s' conflicts with itself - packaging error"
-
-#: lib/libalpm/conflict.c:107
-#, c-format
-msgid "checkconflicts: target '%s' vs db"
-msgstr "checkconflicts: target '%s' vs db"
-
-#: lib/libalpm/conflict.c:149
-#, c-format
-msgid "checkconflicts: target '%s' vs all targets"
-msgstr "checkconflicts: target '%s' vs all targets"
-
-#: lib/libalpm/conflict.c:181
+#: lib/libalpm/add.c:454
+#: lib/libalpm/add.c:598
+#: lib/libalpm/util.c:422
#, c-format
-msgid "checkconflicts: db vs target '%s'"
-msgstr "checkconflicts: db vs target '%s'"
+msgid "could not extract %s (%s)\n"
+msgstr "could not extract %s (%s)\n"
-#: lib/libalpm/conflict.c:201
+#: lib/libalpm/add.c:505
#, c-format
-msgid "target '%s' is also in target list, using NEW conflicts"
-msgstr "target '%s' is also in target list, using NEW conflicts"
+msgid "could not rename %s (%s)\n"
+msgstr "could not rename %s (%s)\n"
-#: lib/libalpm/conflict.c:257
+#: lib/libalpm/add.c:512
+#: lib/libalpm/add.c:532
+#: lib/libalpm/trans.c:508
#, c-format
-msgid "\tCONFLICTS:: %s conflicts with %s"
-msgstr "\tCONFLICTS:: %s conflicts with %s"
+msgid "could not copy tempfile to %s (%s)\n"
+msgstr "could not copy tempfile to %s (%s)\n"
-#: lib/libalpm/conflict.c:349 lib/libalpm/deps.c:60 lib/libalpm/deps.c:438
-#: lib/libalpm/deps.c:634 lib/libalpm/deps.c:674 lib/libalpm/group.c:45
-#: lib/libalpm/handle.c:51 lib/libalpm/package.c:82 lib/libalpm/sync.c:67
-#: lib/libalpm/sync.c:614 lib/libalpm/sync.c:630 lib/libalpm/sync.c:727
-#: lib/libalpm/trans.c:55 lib/libalpm/util.c:614 lib/libalpm/util.c:621
+#: lib/libalpm/add.c:517
+#: lib/libalpm/remove.c:234
#, c-format
-msgid "malloc failure: could not allocate %d bytes"
-msgstr "malloc failure: could not allocate %d bytes"
+msgid "%s saved as %s\n"
+msgstr "%s saved as %s\n"
-#: lib/libalpm/db.c:64 lib/libalpm/db.c:71
+#: lib/libalpm/add.c:556
#, c-format
-msgid "malloc failed: could not allocate %d bytes"
-msgstr "malloc failed: could not allocate %d bytes"
-
-#: lib/libalpm/db.c:167
-msgid "attempt to re-register the 'local' DB"
-msgstr "attempt to re-register the 'local' DB"
+msgid "could not install %s as %s: %s\n"
+msgstr "could not install %s as %s: %s\n"
-#: lib/libalpm/db.c:175
+#: lib/libalpm/add.c:559
#, c-format
-msgid "attempt to re-register the '%s' database, using existing"
-msgstr "attempt to re-register the '%s' database, using existing"
+msgid "%s installed as %s\n"
+msgstr "%s installed as %s\n"
-#: lib/libalpm/db.c:181
+#: lib/libalpm/add.c:576
#, c-format
-msgid "registering database '%s'"
-msgstr "registering database '%s'"
+msgid "extracting %s as %s.pacnew\n"
+msgstr "extracting %s as %s.pacnew\n"
-#: lib/libalpm/db.c:186
-#, c-format
-msgid "database directory '%s' does not exist, creating it"
-msgstr "database directory '%s' does not exist, creating it"
+#: lib/libalpm/add.c:711
+#: lib/libalpm/trans.c:529
+msgid "could not get current working directory\n"
+msgstr "could not get current working directory\n"
-#: lib/libalpm/db.c:197
+#: lib/libalpm/add.c:765
#, c-format
-msgid "opening database '%s'"
-msgstr "opening database '%s'"
-
-#: lib/libalpm/deps.c:131
-msgid "started sorting dependencies"
-msgstr "started sorting dependencies"
-
-#: lib/libalpm/deps.c:136
-msgid "possible dependency cycle detected"
-msgstr "possible dependency cycle detected"
+msgid "problem occurred while upgrading %s\n"
+msgstr "problem occurred while upgrading %s\n"
-#: lib/libalpm/deps.c:183
-msgid "sorting dependencies finished"
-msgstr "sorting dependencies finished"
-
-#: lib/libalpm/deps.c:225 lib/libalpm/deps.c:310
-msgid "null package found in package list"
-msgstr "null package found in package list"
-
-#: lib/libalpm/deps.c:230
+#: lib/libalpm/add.c:770
#, c-format
-msgid "cannot find package installed '%s'"
-msgstr "cannot find package installed '%s'"
+msgid "problem occurred while installing %s\n"
+msgstr "problem occurred while installing %s\n"
-#: lib/libalpm/deps.c:261
+#: lib/libalpm/add.c:785
#, c-format
-msgid "checkdeps: dependency '%s' has moved from '%s' to '%s'"
-msgstr "checkdeps: dependency '%s' has moved from '%s' to '%s'"
+msgid "could not update database entry %s-%s\n"
+msgstr "could not update database entry %s-%s\n"
-#: lib/libalpm/deps.c:280
+#: lib/libalpm/add.c:793
#, c-format
-msgid "checkdeps: dependency '%s' satisfied by installed package '%s'"
-msgstr "checkdeps: dependency '%s' satisfied by installed package '%s'"
+msgid "could not add entry '%s' in cache\n"
+msgstr "could not add entry '%s' in cache\n"
-#: lib/libalpm/deps.c:289
+#: lib/libalpm/be_files.c:223
#, c-format
-msgid "checkdeps: updated '%s' won't satisfy a dependency of '%s'"
-msgstr "checkdeps: updated '%s' won't satisfy a dependency of '%s'"
+msgid "invalid name for database entry '%s'\n"
+msgstr "invalid name for database entry '%s'\n"
-#: lib/libalpm/deps.c:359
+#: lib/libalpm/be_files.c:275
#, c-format
-msgid "missing dependency '%s' for package '%s'"
-msgstr "missing dependency '%s' for package '%s'"
+msgid "loading package data for %s : level=%d\n"
+msgstr "loading package data for %s : level=%d\n"
-#: lib/libalpm/deps.c:409
+#: lib/libalpm/be_files.c:292
+#: lib/libalpm/be_files.c:429
+#: lib/libalpm/be_files.c:452
+#: lib/libalpm/be_files.c:563
+#: lib/libalpm/be_files.c:641
+#: lib/libalpm/be_files.c:669
+#: lib/libalpm/package.c:787
#, c-format
-msgid "checkdeps: found %s as required by %s"
-msgstr "checkdeps: found %s as required by %s"
+msgid "could not open file %s: %s\n"
+msgstr "could not open file %s: %s\n"
-#: lib/libalpm/deps.c:485
+#: lib/libalpm/cache.c:62
#, c-format
-msgid "excluding %s -- explicitly installed"
-msgstr "excluding %s -- explicitly installed"
+msgid "adding '%s' to package cache for db '%s'\n"
+msgstr "adding '%s' to package cache for db '%s'\n"
-#: lib/libalpm/deps.c:532
+#: lib/libalpm/db.c:285
#, c-format
-msgid "cannot find package \"%s\" or anything that provides it!"
-msgstr "cannot find package \"%s\" or anything that provides it!"
+msgid "could not remove database entry %s%s\n"
+msgstr "could not remove database entry %s%s\n"
-#: lib/libalpm/deps.c:540 lib/libalpm/deps.c:551
-#, c-format
-msgid "adding '%s' to the targets"
-msgstr "adding '%s' to the targets"
+#: lib/libalpm/db.c:553
+msgid "attempt to re-register the 'local' DB\n"
+msgstr "attempt to re-register the 'local' DB\n"
-#: lib/libalpm/deps.c:583
-msgid "started resolving dependencies"
-msgstr "started resolving dependencies"
+#: lib/libalpm/db.c:562
+#: lib/libalpm/db.c:613
+msgid "database path is undefined\n"
+msgstr "database path is undefined\n"
-#: lib/libalpm/deps.c:601
-#, c-format
-msgid "%s provides dependency %s -- skipping"
-msgstr "%s provides dependency %s -- skipping"
+#: lib/libalpm/deps.c:173
+msgid "dependency cycle detected:\n"
+msgstr "dependency cycle detected:\n"
-#: lib/libalpm/deps.c:630
+#: lib/libalpm/deps.c:175
#, c-format
-msgid ""
-"cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
-msgstr ""
-"cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+msgid "%s will be removed after its %s dependency\n"
+msgstr "%s will be removed after its %s dependency\n"
-#: lib/libalpm/deps.c:647
+#: lib/libalpm/deps.c:177
#, c-format
-msgid "dependency %s is already in the target list -- skipping"
-msgstr "dependency %s is already in the target list -- skipping"
+msgid "%s will be installed before its %s dependency\n"
+msgstr "%s will be installed before its %s dependency\n"
-#: lib/libalpm/deps.c:667
+#: lib/libalpm/deps.c:573
#, c-format
-msgid "pulling dependency %s (needed by %s)"
-msgstr "pulling dependency %s (needed by %s)"
+msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
+msgstr "cannot resolve \"%s\", a dependency of \"%s\"\n"
-#: lib/libalpm/deps.c:671
-#, c-format
-msgid "cannot resolve dependencies for \"%s\""
-msgstr "cannot resolve dependencies for \"%s\""
-
-#: lib/libalpm/deps.c:687
-#, c-format
-msgid "dependency cycle detected: %s"
-msgstr "dependency cycle detected: %s"
-
-#: lib/libalpm/deps.c:691
-msgid "finished resolving dependencies"
-msgstr "finished resolving dependencies"
-
-#: lib/libalpm/error.c:40
+#: lib/libalpm/error.c:43
msgid "out of memory!"
msgstr "out of memory!"
-#: lib/libalpm/error.c:42
+#: lib/libalpm/error.c:45
msgid "unexpected system error"
msgstr "unexpected system error"
-#: lib/libalpm/error.c:44
+#: lib/libalpm/error.c:47
msgid "insufficient privileges"
msgstr "insufficient privileges"
-#: lib/libalpm/error.c:46
+#: lib/libalpm/error.c:49
msgid "could not find or read file"
msgstr "could not find or read file"
-#: lib/libalpm/error.c:48
+#: lib/libalpm/error.c:51
+msgid "could not find or read directory"
+msgstr "could not find or read directory"
+
+#: lib/libalpm/error.c:53
msgid "wrong or NULL argument passed"
msgstr "wrong or NULL argument passed"
-#: lib/libalpm/error.c:51
+#: lib/libalpm/error.c:56
msgid "library not initialized"
msgstr "library not initialised"
-#: lib/libalpm/error.c:53
+#: lib/libalpm/error.c:58
msgid "library already initialized"
msgstr "library already initialised"
-#: lib/libalpm/error.c:55
+#: lib/libalpm/error.c:60
msgid "unable to lock database"
msgstr "unable to lock database"
-#: lib/libalpm/error.c:58
+#: lib/libalpm/error.c:63
msgid "could not open database"
msgstr "could not open database"
-#: lib/libalpm/error.c:60
+#: lib/libalpm/error.c:65
msgid "could not create database"
msgstr "could not create database"
-#: lib/libalpm/error.c:62
+#: lib/libalpm/error.c:67
msgid "database not initialized"
msgstr "database not initialised"
-#: lib/libalpm/error.c:64
+#: lib/libalpm/error.c:69
msgid "database already registered"
msgstr "database already registered"
-#: lib/libalpm/error.c:66
+#: lib/libalpm/error.c:71
msgid "could not find database"
msgstr "could not find database"
-#: lib/libalpm/error.c:68
+#: lib/libalpm/error.c:73
msgid "could not update database"
msgstr "could not update database"
-#: lib/libalpm/error.c:70
+#: lib/libalpm/error.c:75
msgid "could not remove database entry"
msgstr "could not remove database entry"
-#: lib/libalpm/error.c:73
+#: lib/libalpm/error.c:78
msgid "invalid url for server"
msgstr "invalid url for server"
-#: lib/libalpm/error.c:80
+#: lib/libalpm/error.c:85
msgid "could not set parameter"
msgstr "could not set parameter"
-#: lib/libalpm/error.c:83
+#: lib/libalpm/error.c:88
msgid "transaction already initialized"
msgstr "transaction already initialised"
-#: lib/libalpm/error.c:85 lib/libalpm/error.c:89
+#: lib/libalpm/error.c:90
+#: lib/libalpm/error.c:94
msgid "transaction not initialized"
msgstr "transaction not initialised"
-#: lib/libalpm/error.c:87
+#: lib/libalpm/error.c:92
msgid "duplicate target"
msgstr "duplicate target"
-#: lib/libalpm/error.c:91
+#: lib/libalpm/error.c:96
msgid "transaction not prepared"
msgstr "transaction not prepared"
-#: lib/libalpm/error.c:93
+#: lib/libalpm/error.c:98
msgid "transaction aborted"
msgstr "transaction aborted"
-#: lib/libalpm/error.c:95
+#: lib/libalpm/error.c:100
msgid "operation not compatible with the transaction type"
msgstr "operation not compatible with the transaction type"
-#: lib/libalpm/error.c:97 lib/libalpm/sync.c:994
+#: lib/libalpm/error.c:102
msgid "could not commit transaction"
msgstr "could not commit transaction"
-#: lib/libalpm/error.c:99
+#: lib/libalpm/error.c:104
msgid "could not download all files"
msgstr "could not download all files"
-#: lib/libalpm/error.c:102
+#: lib/libalpm/error.c:107
msgid "could not find or read package"
msgstr "could not find or read package"
-#: lib/libalpm/error.c:104
+#: lib/libalpm/error.c:109
msgid "invalid or corrupted package"
msgstr "invalid or corrupted package"
-#: lib/libalpm/error.c:106
+#: lib/libalpm/error.c:111
msgid "cannot open package file"
msgstr "cannot open package file"
-#: lib/libalpm/error.c:108
+#: lib/libalpm/error.c:113
msgid "cannot load package data"
msgstr "cannot load package data"
-#: lib/libalpm/error.c:110
+#: lib/libalpm/error.c:115
msgid "package already installed"
msgstr "package already installed"
-#: lib/libalpm/error.c:112
+#: lib/libalpm/error.c:117
msgid "package not installed or lesser version"
msgstr "package not installed or lesser version"
-#: lib/libalpm/error.c:114
+#: lib/libalpm/error.c:119
msgid "cannot remove all files for package"
msgstr "cannot remove all files for package"
-#: lib/libalpm/error.c:116
+#: lib/libalpm/error.c:121
msgid "package name is not valid"
msgstr "package name is not valid"
-#: lib/libalpm/error.c:118
+#: lib/libalpm/error.c:123
msgid "corrupted package"
msgstr "corrupted package"
-#: lib/libalpm/error.c:120
+#: lib/libalpm/error.c:125
msgid "no such repository"
msgstr "no such repository"
-#: lib/libalpm/error.c:123
+#: lib/libalpm/error.c:128
+msgid "corrupted delta"
+msgstr "corrupted delta"
+
+#: lib/libalpm/error.c:130
+msgid "delta patch failed"
+msgstr "delta patch failed"
+
+#: lib/libalpm/error.c:133
msgid "group not found"
msgstr "group not found"
-#: lib/libalpm/error.c:126
+#: lib/libalpm/error.c:136
msgid "could not satisfy dependencies"
msgstr "could not satisfy dependencies"
-#: lib/libalpm/error.c:128
+#: lib/libalpm/error.c:138
msgid "conflicting dependencies"
msgstr "conflicting dependencies"
-#: lib/libalpm/error.c:130
+#: lib/libalpm/error.c:140
msgid "conflicting files"
msgstr "conflicting files"
-#: lib/libalpm/error.c:133
+#: lib/libalpm/error.c:143
msgid "user aborted the operation"
msgstr "user aborted the operation"
-#: lib/libalpm/error.c:135
+#: lib/libalpm/error.c:145
msgid "internal error"
msgstr "internal error"
-#: lib/libalpm/error.c:137
+#: lib/libalpm/error.c:147
msgid "libarchive error"
msgstr "libarchive error"
-#: lib/libalpm/error.c:139
-msgid "not enough space on disk"
-msgstr "not enough space on disk"
-
-#: lib/libalpm/error.c:142
+#: lib/libalpm/error.c:150
msgid "not confirmed"
msgstr "not confirmed"
-#: lib/libalpm/error.c:145
-msgid "bad configuration section name"
-msgstr "bad configuration section name"
-
-#: lib/libalpm/error.c:147
-msgid "'local' is reserved and cannot be used as a repository name"
-msgstr "'local' is reserved and cannot be used as a repository name"
-
-#: lib/libalpm/error.c:149
-msgid "syntax error in config file"
-msgstr "syntax error in config file"
-
-#: lib/libalpm/error.c:151
-msgid "all directives must belong to a section"
-msgstr "all directives must belong to a section"
-
-#: lib/libalpm/error.c:153
+#: lib/libalpm/error.c:152
msgid "invalid regular expression"
msgstr "invalid regular expression"
-#: lib/libalpm/error.c:156
+#: lib/libalpm/error.c:155
msgid "connection to remote host failed"
msgstr "connection to remote host failed"
-#: lib/libalpm/error.c:159
+#: lib/libalpm/error.c:158
msgid "unexpected error"
msgstr "unexpected error"
-#: lib/libalpm/handle.c:163
-#, c-format
-msgid "cannot canonicalize specified root path '%s'"
-msgstr "cannot canonicalise specified root path '%s'"
-
-#: lib/libalpm/handle.c:175
+#: lib/libalpm/package.c:124
#, c-format
-msgid "option 'root' = %s"
-msgstr "option 'root' = %s"
+msgid "could not get md5sum for package %s-%s\n"
+msgstr "could not get md5sum for package %s-%s\n"
-#: lib/libalpm/handle.c:195
+#: lib/libalpm/package.c:133
#, c-format
-msgid "option 'dbpath' = %s"
-msgstr "option 'dbpath' = %s"
+msgid "md5sums do not match for package %s-%s\n"
+msgstr "md5sums do not match for package %s-%s\n"
-#: lib/libalpm/handle.c:211
+#: lib/libalpm/package.c:737
#, c-format
-msgid "option 'cachedir' = %s"
-msgstr "option 'cachedir' = %s"
+msgid "%s: forcing upgrade to version %s\n"
+msgstr "%s: forcing upgrade to version %s\n"
-#: lib/libalpm/md5driver.c:56
+#: lib/libalpm/package.c:742
#, c-format
-msgid "%s can't be opened\n"
-msgstr "%s can't be opened\n"
+msgid "%s: local (%s) is newer than %s (%s)\n"
+msgstr "%s: local (%s) is newer than %s (%s)\n"
-#: lib/libalpm/md5driver.c:74
+#: lib/libalpm/package.c:750
#, c-format
-msgid "md5(%s) = %s"
-msgstr "md5(%s) = %s"
+msgid "%s-%s: delaying upgrade of package (%s)\n"
+msgstr "%s-%s: delaying upgrade of package (%s)\n"
-#: lib/libalpm/package.c:147
+#: lib/libalpm/package.c:931
#, c-format
-msgid "%s-%s: ignoring package upgrade (%s)"
-msgstr "%s-%s: ignoring package upgrade (%s)"
+msgid "could not parse package description file in %s\n"
+msgstr "could not parse package description file in %s\n"
-#: lib/libalpm/package.c:158
+#: lib/libalpm/package.c:936
#, c-format
-msgid "%s: forcing upgrade to version %s"
-msgstr "%s: forcing upgrade to version %s"
+msgid "missing package name in %s\n"
+msgstr "missing package name in %s\n"
-#: lib/libalpm/package.c:163
+#: lib/libalpm/package.c:940
#, c-format
-msgid "%s: local (%s) is newer than %s (%s)"
-msgstr "%s: local (%s) is newer than %s (%s)"
+msgid "missing package version in %s\n"
+msgstr "missing package version in %s\n"
-#: lib/libalpm/package.c:171
+#: lib/libalpm/package.c:970
#, c-format
-msgid "%s-%s: delaying upgrade of package (%s)"
-msgstr "%s-%s: delaying upgrade of package (%s)"
+msgid "could not remove tempfile %s\n"
+msgstr "could not remove tempfile %s\n"
-#: lib/libalpm/package.c:222 lib/libalpm/package.c:281
+#: lib/libalpm/package.c:985
+#: lib/libalpm/package.c:998
#, c-format
-msgid "%s: syntax error in description file line %d"
-msgstr "%s: syntax error in description file line %d"
+msgid "error while reading package %s: %s\n"
+msgstr "error while reading package %s: %s\n"
-#: lib/libalpm/package.c:355
-msgid "could not parse the package description file"
-msgstr "could not parse the package description file"
-
-#: lib/libalpm/package.c:359
-#, c-format
-msgid "missing package name in %s"
-msgstr "missing package name in %s"
-
-#: lib/libalpm/package.c:363
+#: lib/libalpm/package.c:1005
#, c-format
-msgid "missing package version in %s"
-msgstr "missing package version in %s"
+msgid "missing package metadata in %s\n"
+msgstr "missing package metadata in %s\n"
-#: lib/libalpm/package.c:398
+#: lib/libalpm/package.c:1012
#, c-format
-msgid "could not remove tempfile %s"
-msgstr "could not remove tempfile %s"
-
-#: lib/libalpm/package.c:411 lib/libalpm/package.c:418
-#, c-format
-msgid "error while reading package: %s"
-msgstr "error while reading package: %s"
-
-#: lib/libalpm/package.c:424
-msgid "missing package metadata"
-msgstr "missing package metadata"
-
-#: lib/libalpm/package.c:431
-#, c-format
-msgid "missing package filelist in %s, generating one"
-msgstr "missing package filelist in %s, generating one"
-
-#: lib/libalpm/package.c:570
-#, c-format
-msgid "adding '%s' in requiredby field for '%s'"
-msgstr "adding '%s' in requiredby field for '%s'"
-
-#: lib/libalpm/package.c:584
-#, c-format
-msgid "adding '%s' in requiredby field for '%s' (provides: %s)"
-msgstr "adding '%s' in requiredby field for '%s' (provides: %s)"
-
-#: lib/libalpm/remove.c:79
-#, c-format
-msgid "could not find %s in database"
-msgstr "could not find %s in database"
-
-#: lib/libalpm/remove.c:93
-#, c-format
-msgid "adding %s in the targets list"
-msgstr "adding %s in the targets list"
+msgid "missing package filelist in %s, generating one\n"
+msgstr "missing package filelist in %s, generating one\n"
#: lib/libalpm/remove.c:121
#, c-format
-msgid "pulling %s in the targets list"
-msgstr "pulling %s in the targets list"
-
-#: lib/libalpm/remove.c:124
-#, c-format
-msgid "could not find %s in database -- skipping"
-msgstr "could not find %s in database -- skipping"
-
-#: lib/libalpm/remove.c:142
-msgid "finding removable dependencies"
-msgstr "finding removable dependencies"
-
-#: lib/libalpm/remove.c:175
-#, c-format
-msgid "cannot remove file '%s': %s"
-msgstr "cannot remove file '%s': %s"
-
-#: lib/libalpm/remove.c:213
-#, c-format
-msgid "Skipping removal of '%s' due to NoUpgrade"
-msgstr "Skipping removal of '%s' due to NoUpgrade"
-
-#: lib/libalpm/remove.c:220
-#, c-format
-msgid "file %s does not exist"
-msgstr "file %s does not exist"
-
-#: lib/libalpm/remove.c:227
-#, c-format
-msgid "keeping directory %s"
-msgstr "keeping directory %s"
-
-#: lib/libalpm/remove.c:229
-#, c-format
-msgid "removing directory %s"
-msgstr "removing directory %s"
-
-#: lib/libalpm/remove.c:236
-#, c-format
-msgid "%s is in trans->skip_remove, skipping removal"
-msgstr "%s is in trans->skip_remove, skipping removal"
-
-#: lib/libalpm/remove.c:250
-#, c-format
-msgid "transaction is set to NOSAVE, not backing up '%s'"
-msgstr "transaction is set to NOSAVE, not backing up '%s'"
-
-#: lib/libalpm/remove.c:254
-#, c-format
-msgid "unlinking %s"
-msgstr "unlinking %s"
-
-#: lib/libalpm/remove.c:261
-#, c-format
-msgid "cannot remove file %s: %s"
-msgstr "cannot remove file %s: %s"
-
-#: lib/libalpm/remove.c:294
-#, c-format
-msgid "removing package %s-%s"
-msgstr "removing package %s-%s"
-
-#: lib/libalpm/remove.c:309
-#, c-format
-msgid "not removing package '%s', can't remove all files"
-msgstr "not removing package '%s', can't remove all files"
+msgid "could not find %s in database -- skipping\n"
+msgstr "could not find %s in database -- skipping\n"
-#: lib/libalpm/remove.c:316
+#: lib/libalpm/remove.c:172
+#: lib/libalpm/remove.c:243
#, c-format
-msgid "removing %d files"
-msgstr "removing %d files"
+msgid "cannot remove file '%s': %s\n"
+msgstr "cannot remove file '%s': %s\n"
#: lib/libalpm/remove.c:337
#, c-format
-msgid "removing database entry '%s'"
-msgstr "removing database entry '%s'"
+msgid "could not remove database entry %s-%s\n"
+msgstr "could not remove database entry %s-%s\n"
-#: lib/libalpm/remove.c:339
+#: lib/libalpm/remove.c:342
#, c-format
-msgid "could not remove database entry %s-%s"
-msgstr "could not remove database entry %s-%s"
+msgid "could not remove entry '%s' from cache\n"
+msgstr "could not remove entry '%s' from cache\n"
-#: lib/libalpm/remove.c:344
+#: lib/libalpm/server.c:56
#, c-format
-msgid "could not remove entry '%s' from cache"
-msgstr "could not remove entry '%s' from cache"
+msgid "url '%s' is invalid, ignoring\n"
+msgstr "URL '%s' is invalid, ignoring\n"
-#: lib/libalpm/sha1.c:397
-#, c-format
-msgid "sha1: %s can't be opened\n"
-msgstr "sha1: %s can't be opened\n"
-
-#: lib/libalpm/sha1.c:412
-#, c-format
-msgid "sha1(%s) = %s"
-msgstr "sha1(%s) = %s"
-
-#: lib/libalpm/sync.c:183
-msgid "checking for package upgrades"
-msgstr "checking for package upgrades"
-
-#: lib/libalpm/sync.c:215
-#, c-format
-msgid "%s-%s elected for upgrade (%s => %s)"
-msgstr "%s-%s elected for upgrade (%s => %s)"
+#: lib/libalpm/server.c:60
+msgid "url scheme not specified, assuming http\n"
+msgstr "URL scheme not specified, assuming http\n"
-#: lib/libalpm/sync.c:270
-#, c-format
-msgid "searching for target in repo '%s'"
-msgstr "searching for target in repo '%s'"
+#: lib/libalpm/server.c:241
+msgid "disk"
+msgstr "disk"
-#: lib/libalpm/sync.c:278 lib/libalpm/sync.c:301
+#: lib/libalpm/server.c:245
#, c-format
-msgid "target '%s' not found -- looking for provisions"
-msgstr "target '%s' not found -- looking for provisions"
+msgid "failed retrieving file '%s' from %s : %s\n"
+msgstr "failed retrieving file '%s' from %s : %s\n"
-#: lib/libalpm/sync.c:283 lib/libalpm/sync.c:306
-#, c-format
-msgid "found '%s' as a provision for '%s'"
-msgstr "found '%s' as a provision for '%s'"
+#: lib/libalpm/server.c:275
+msgid "cannot resume download, starting over\n"
+msgstr "cannot resume download, starting over\n"
-#: lib/libalpm/sync.c:290
+#: lib/libalpm/server.c:288
#, c-format
-msgid "repository '%s' not found"
-msgstr "repository '%s' not found"
+msgid "cannot write to file '%s'\n"
+msgstr "cannot write to file '%s'\n"
-#: lib/libalpm/sync.c:331
+#: lib/libalpm/server.c:307
#, c-format
-msgid "%s-%s is up to date -- skipping"
-msgstr "%s-%s is up to date -- skipping"
+msgid "error downloading '%s': %s\n"
+msgstr "error downloading '%s': %s\n"
-#: lib/libalpm/sync.c:354
+#: lib/libalpm/server.c:319
#, c-format
-msgid "adding target '%s' to the transaction set"
-msgstr "adding target '%s' to the transaction set"
+msgid "error writing to file '%s': %s\n"
+msgstr "error writing to file '%s': %s\n"
-#: lib/libalpm/sync.c:402
-msgid "resolving target's dependencies"
-msgstr "resolving target's dependencies"
-
-#: lib/libalpm/sync.c:422
+#: lib/libalpm/server.c:387
#, c-format
-msgid "adding package %s-%s to the transaction targets"
-msgstr "adding package %s-%s to the transaction targets"
+msgid "could not chdir to %s\n"
+msgstr "could not chdir to %s\n"
-#: lib/libalpm/sync.c:463
-msgid "looking for unresolvable dependencies"
-msgstr "looking for unresolvable dependencies"
+#: lib/libalpm/server.c:394
+msgid "running XferCommand: fork failed!\n"
+msgstr "running XferCommand: fork failed!\n"
-#: lib/libalpm/sync.c:494
-#, c-format
-msgid "package '%s' conflicts with '%s'"
-msgstr "package '%s' conflicts with '%s'"
+#: lib/libalpm/server.c:445
+msgid "URL does not contain a file for download\n"
+msgstr "URL does not contain a file for download\n"
-#: lib/libalpm/sync.c:516
+#: lib/libalpm/server.c:458
#, c-format
-msgid "'%s' not found in transaction set -- skipping"
-msgstr "'%s' not found in transaction set -- skipping"
+msgid "failed to download %s\n"
+msgstr "failed to download %s\n"
-#: lib/libalpm/sync.c:527
+#: lib/libalpm/sync.c:135
#, c-format
-msgid "package '%s' provides its own conflict"
-msgstr "package '%s' provides its own conflict"
+msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
+msgstr "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
-#: lib/libalpm/sync.c:550 lib/libalpm/sync.c:555
+#: lib/libalpm/sync.c:250
#, c-format
-msgid "'%s' is in the target list -- keeping it"
-msgstr "'%s' is in the target list -- keeping it"
+msgid "%s: ignoring package upgrade (%s => %s)\n"
+msgstr "%s: ignoring package upgrade (%s => %s)\n"
-#: lib/libalpm/sync.c:567 lib/libalpm/sync.c:604
+#: lib/libalpm/sync.c:320
#, c-format
-msgid "removing '%s' from target list"
-msgstr "removing '%s' from target list"
+msgid "repository '%s' not found\n"
+msgstr "repository '%s' not found\n"
-#: lib/libalpm/sync.c:576
-#, c-format
-msgid "resolving package '%s' conflict"
-msgstr "resolving package '%s' conflict"
-
-#: lib/libalpm/sync.c:599
-#, c-format
-msgid "electing '%s' for removal"
-msgstr "electing '%s' for removal"
-
-#: lib/libalpm/sync.c:610 lib/libalpm/sync.c:626
-msgid "unresolvable package conflicts detected"
-msgstr "unresolvable package conflicts detected"
-
-#: lib/libalpm/sync.c:678
-msgid "checking dependencies of packages designated for removal"
-msgstr "checking dependencies of packages designated for removal"
-
-#: lib/libalpm/sync.c:692
-msgid "something has gone horribly wrong"
-msgstr "something has gone horribly wrong"
-
-#: lib/libalpm/sync.c:712
+#: lib/libalpm/sync.c:354
#, c-format
-msgid "found '%s' as a provision for '%s' -- conflict aborted"
-msgstr "found '%s' as a provision for '%s' -- conflict aborted"
+msgid "%s-%s is up to date -- skipping\n"
+msgstr "%s-%s is up to date -- skipping\n"
-#: lib/libalpm/sync.c:808
+#: lib/libalpm/sync.c:358
#, c-format
-msgid "%s is already in the cache\n"
-msgstr "%s is already in the cache\n"
+msgid "%s-%s is up to date -- reinstalling\n"
+msgstr "%s-%s is up to date -- reinstalling\n"
-#: lib/libalpm/sync.c:819
-#, c-format
-msgid "no %s cache exists, creating...\n"
-msgstr "no %s cache exists, creating...\n"
+#: lib/libalpm/sync.c:613
+#: lib/libalpm/sync.c:618
+msgid "unresolvable package conflicts detected\n"
+msgstr "unresolvable package conflicts detected\n"
-#: lib/libalpm/sync.c:820
+#: lib/libalpm/sync.c:628
#, c-format
-msgid "warning: no %s cache exists, creating..."
-msgstr "warning: no %s cache exists, creating..."
+msgid "malloc failure: could not allocate %zd bytes\n"
+msgstr "malloc failure: could not allocate %zd bytes\n"
#: lib/libalpm/sync.c:825
-msgid "couldn't create package cache, using /tmp instead\n"
-msgstr "couldn't create package cache, using /tmp instead\n"
-
-#: lib/libalpm/sync.c:826
-msgid "warning: couldn't create package cache, using /tmp instead"
-msgstr "warning: couldn't create package cache, using /tmp instead"
-
-#: lib/libalpm/sync.c:833
-#, c-format
-msgid "failed to retrieve some files from %s\n"
-msgstr "failed to retrieve some files from %s\n"
-
-#: lib/libalpm/sync.c:863 lib/libalpm/sync.c:875
-#, c-format
-msgid "can't get md5 or sha1 checksum for package %s\n"
-msgstr "can't get md5 or sha1 checksum for package %s\n"
-
-#: lib/libalpm/sync.c:894
#, c-format
-msgid "archive %s was corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr "archive %s was corrupted (bad MD5 or SHA1 checksum)\n"
+msgid "command: %s\n"
+msgstr "command: %s\n"
+#: lib/libalpm/sync.c:888
#: lib/libalpm/sync.c:896
#, c-format
-msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
-
-#: lib/libalpm/sync.c:917
-msgid "could not create removal transaction"
-msgstr "could not create removal transaction"
-
-#: lib/libalpm/sync.c:923
-msgid "could not initialize the removal transaction"
-msgstr "could not initialise the removal transaction"
-
-#: lib/libalpm/sync.c:943
-msgid "removing conflicting and to-be-replaced packages"
-msgstr "removing conflicting and to-be-replaced packages"
+msgid "can't get md5 checksum for file %s\n"
+msgstr "can't get md5 checksum for file %s\n"
-#: lib/libalpm/sync.c:945
-msgid "could not prepare removal transaction"
-msgstr "could not prepare removal transaction"
-
-#: lib/libalpm/sync.c:951
-msgid "could not commit removal transaction"
-msgstr "could not commit removal transaction"
-
-#: lib/libalpm/sync.c:958
-msgid "installing packages"
-msgstr "installing packages"
-
-#: lib/libalpm/sync.c:961
-msgid "could not create transaction"
-msgstr "could not create transaction"
-
-#: lib/libalpm/sync.c:966
-msgid "could not initialize transaction"
-msgstr "could not initialise transaction"
-
-#: lib/libalpm/sync.c:989
-msgid "could not prepare transaction"
-msgstr "could not prepare transaction"
-
-#: lib/libalpm/sync.c:1001
-msgid "updating database for replaced packages' dependencies"
-msgstr "updating database for replaced packages' dependencies"
-
-#: lib/libalpm/sync.c:1030
+#: lib/libalpm/sync.c:910
#, c-format
-msgid "could not update requiredby for database entry %s-%s"
-msgstr "could not update requiredby for database entry %s-%s"
+msgid "file %s was corrupted (bad MD5 checksum)\n"
+msgstr "file %s was corrupted (bad MD5 checksum)\n"
-#: lib/libalpm/sync.c:1039
+#: lib/libalpm/sync.c:1056
#, c-format
-msgid "could not update new database entry %s-%s"
-msgstr "could not update new database entry %s-%s"
+msgid "failed to retrieve some files from %s\n"
+msgstr "failed to retrieve some files from %s\n"
-#: lib/libalpm/sync.c:1079
-#, c-format
-msgid "found package '%s-%s' in sync"
-msgstr "found package '%s-%s' in sync"
+#: lib/libalpm/sync.c:1137
+msgid "could not create removal transaction\n"
+msgstr "could not create removal transaction\n"
-#: lib/libalpm/sync.c:1085
-#, c-format
-msgid "package '%s' not found in sync"
-msgstr "package '%s' not found in sync"
+#: lib/libalpm/sync.c:1143
+msgid "could not initialize the removal transaction\n"
+msgstr "could not initialise the removal transaction\n"
-#: lib/libalpm/trans.c:271
-#, c-format
-msgid "updating dependency packages 'requiredby' fields for %s-%s"
-msgstr "updating dependency packages 'requiredby' fields for %s-%s"
+#: lib/libalpm/sync.c:1165
+msgid "could not prepare removal transaction\n"
+msgstr "could not prepare removal transaction\n"
-#: lib/libalpm/trans.c:274
-msgid "package has no dependencies, no other packages to update"
-msgstr "package has no dependencies, no other packages to update"
+#: lib/libalpm/sync.c:1171
+msgid "could not commit removal transaction\n"
+msgstr "could not commit removal transaction\n"
-#: lib/libalpm/trans.c:311 lib/libalpm/trans.c:341
-#, c-format
-msgid "updating 'requiredby' field for package '%s'"
-msgstr "updating 'requiredby' field for package '%s'"
-
-#: lib/libalpm/trans.c:326 lib/libalpm/trans.c:356
-#, c-format
-msgid "could not update 'requiredby' database entry %s-%s"
-msgstr "could not update 'requiredby' database entry %s-%s"
+#: lib/libalpm/sync.c:1182
+msgid "could not create transaction\n"
+msgstr "could not create transaction\n"
-#: lib/libalpm/trans.c:333
-#, c-format
-msgid "could not find dependency '%s'"
-msgstr "could not find dependency '%s'"
+#: lib/libalpm/sync.c:1187
+msgid "could not initialize transaction\n"
+msgstr "could not initialise transaction\n"
-#: lib/libalpm/util.c:142
-#, c-format
-msgid "failed to make path '%s' : %s"
-msgstr "failed to make path '%s' : %s"
+#: lib/libalpm/sync.c:1214
+msgid "could not prepare transaction\n"
+msgstr "could not prepare transaction\n"
-#: lib/libalpm/util.c:280
-#, c-format
-msgid "could not open %s: %s\n"
-msgstr "could not open %s: %s\n"
+#: lib/libalpm/sync.c:1219
+msgid "could not commit transaction\n"
+msgstr "could not commit transaction\n"
-#: lib/libalpm/util.c:293
+#: lib/libalpm/trans.c:214
#, c-format
-msgid "could not extract %s: %s\n"
-msgstr "could not extract %s: %s\n"
+msgid "could not remove lock file %s\n"
+msgstr "could not remove lock file %s\n"
-#: lib/libalpm/util.c:350
+#: lib/libalpm/trans.c:483
#, c-format
-msgid "logaction called: %s"
-msgstr "logaction called: %s"
+msgid "No /bin/sh in root dir (%s), aborting scriptlet\n"
+msgstr "No /bin/sh in root dir (%s), aborting scriptlet\n"
-#: lib/libalpm/util.c:445
-msgid "could not create temp directory"
-msgstr "could not create temp directory"
+#: lib/libalpm/trans.c:494
+msgid "could not create temp directory\n"
+msgstr "could not create temp directory\n"
-#: lib/libalpm/util.c:472
+#: lib/libalpm/trans.c:536
#, c-format
-msgid "could not change directory to %s (%s)"
-msgstr "could not change directory to %s (%s)"
+msgid "could not change directory to %s (%s)\n"
+msgstr "could not change directory to %s (%s)\n"
-#: lib/libalpm/util.c:476
+#: lib/libalpm/trans.c:554
#, c-format
-msgid "executing %s script..."
-msgstr "executing %s script..."
+msgid "could not fork a new process (%s)\n"
+msgstr "could not fork a new process (%s)\n"
-#: lib/libalpm/util.c:489
+#: lib/libalpm/trans.c:564
#, c-format
-msgid "could not fork a new process (%s)"
-msgstr "could not fork a new process (%s)"
+msgid "could not change the root directory (%s)\n"
+msgstr "could not change the root directory (%s)\n"
-#: lib/libalpm/util.c:496
+#: lib/libalpm/trans.c:569
#, c-format
-msgid "chrooting in %s"
-msgstr "chrooting in %s"
+msgid "could not change directory to / (%s)\n"
+msgstr "could not change directory to / (%s)\n"
-#: lib/libalpm/util.c:498
+#: lib/libalpm/trans.c:578
#, c-format
-msgid "could not change the root directory (%s)"
-msgstr "could not change the root directory (%s)"
+msgid "call to popen failed (%s)"
+msgstr "call to popen failed (%s)"
-#: lib/libalpm/util.c:502
+#: lib/libalpm/trans.c:597
#, c-format
-msgid "could not change directory to / (%s)"
-msgstr "could not change directory to / (%s)"
+msgid "call to waitpid failed (%s)\n"
+msgstr "call to waitpid failed (%s)\n"
-#: lib/libalpm/util.c:506
-#, c-format
-msgid "executing \"%s\""
-msgstr "executing \"%s\""
+#: lib/libalpm/trans.c:606
+msgid "scriptlet failed to execute correctly\n"
+msgstr "scriptlet failed to execute correctly\n"
-#: lib/libalpm/util.c:509
+#: lib/libalpm/trans.c:615
#, c-format
-msgid "call to popen failed (%s)"
-msgstr "call to popen failed (%s)"
+msgid "could not remove tmpdir %s\n"
+msgstr "could not remove tmpdir %s\n"
-#: lib/libalpm/util.c:541
+#: lib/libalpm/util.c:204
#, c-format
-msgid "call to waitpid failed (%s)"
-msgstr "call to waitpid failed (%s)"
+msgid "failed to make path '%s' : %s\n"
+msgstr "failed to make path '%s' : %s\n"
-#: lib/libalpm/util.c:550
+#: lib/libalpm/util.c:389
#, c-format
-msgid "could not remove tmpdir %s"
-msgstr "could not remove tmpdir %s"
+msgid "could not open %s: %s\n"
+msgstr "could not open %s: %s\n"
-#: lib/libalpm/util.c:568
+#: lib/libalpm/util.c:573
#, c-format
-msgid "cannot read disk space information from %s: %s"
-msgstr ""
+msgid "no %s cache exists, creating...\n"
+msgstr "no %s cache exists, creating...\n"
-#: lib/libalpm/util.c:609
-#, c-format
-msgid "check_freespace: total pkg size: %lld, disk space: %lld"
-msgstr "check_freespace: total pkg size: %lld, disk space: %lld"
+#: lib/libalpm/util.c:593
+msgid "couldn't create package cache, using /tmp instead\n"
+msgstr "couldn't create package cache, using /tmp instead\n"
-#: lib/libalpm/versioncmp.c:279
-#, c-format
-msgid "depcmp: %s-%s %s %s-%s => %s"
-msgstr "depcmp: %s-%s %s %s-%s => %s"
+#: lib/libalpm/util.c:643
+#, c-format
+msgid "md5: %s can't be opened\n"
+msgstr "md5: %s can't be opened\n"
+
+#: lib/libalpm/util.c:645
+#, c-format
+msgid "md5: %s can't be read\n"
+msgstr "md5: %s can't be read\n"
+
+#~ msgid "please remove '%s' first, using -Rd\n"
+#~ msgstr "please remove '%s' first, using -Rd\n"
+#~ msgid "cannot resolve dependencies for \"%s\"\n"
+#~ msgstr "cannot resolve dependencies for \"%s\"\n"
+#~ msgid "could not update requiredby for database entry %s-%s\n"
+#~ msgstr "could not update requiredby for database entry %s-%s\n"
+#~ msgid "could not update new database entry %s-%s\n"
+#~ msgstr "could not update new database entry %s-%s\n"
+#~ msgid "could not update 'requiredby' database entry %s-%s\n"
+#~ msgstr "could not update 'requiredby' database entry %s-%s\n"
+#~ msgid "could not extract %s (%s)"
+#~ msgstr "could not extract %s (%s)"
+#~ msgid "could not update provision '%s' from '%s'"
+#~ msgstr "could not update provision '%s' from '%s'"
+
+#, fuzzy
+#~ msgid "%s: description file is missing"
+#~ msgstr "%s: syntax error in description file line %d"
+#~ msgid "malloc failed: could not allocate %d bytes"
+#~ msgstr "malloc failed: could not allocate %d bytes"
+#~ msgid ""
+#~ "cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+#~ msgstr ""
+#~ "cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+#~ msgid "cannot canonicalize specified root path '%s'"
+#~ msgstr "cannot canonicalise specified root path '%s'"
+#~ msgid "could not get sha1sum for package %s-%s"
+#~ msgstr "could not get sha1sum for package %s-%s"
+#~ msgid "sha1sums do not match for package %s-%s"
+#~ msgstr "sha1sums do not match for package %s-%s"
+#~ msgid "cannot remove file %s: %s"
+#~ msgstr "cannot remove file %s: %s"
+#~ msgid "sha1: %s can't be opened\n"
+#~ msgstr "sha1: %s can't be opened\n"
+#~ msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
+#~ msgstr "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
-#: lib/libalpm/versioncmp.c:284
-#, c-format
-msgid "depcmp: %s-%s %s %s => %s"
-msgstr "depcmp: %s-%s %s %s => %s"
diff --git a/lib/libalpm/po/es.po b/lib/libalpm/po/es.po
index 60acc003..10cd8329 100644
--- a/lib/libalpm/po/es.po
+++ b/lib/libalpm/po/es.po
@@ -1,16 +1,9 @@
-# translation of es.fix.po to
-# Spanish translation for libalpm package.
-# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
-# This file is distributed under the same license as the Pacman package manager package.
-#
-# Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar>, 2007.
-# Juan Pablo González Tognarelli <jotapesan@gmail.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: libalpm\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-09-16 16:55-0500\n"
-"PO-Revision-Date: 2007-04-29 11:12-0300\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: 2007-04-20 21:19-0300\n"
"Last-Translator: Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar>\n"
"Language-Team: juan pablo gonzález tognarelli <lord_jotape@yahoo.com.ar>\n"
"MIME-Version: 1.0\n"
@@ -20,1513 +13,729 @@ msgstr ""
"X-Poedit-Country: CHILE\n"
"X-Poedit-SourceCharset: utf-8\n"
-#: lib/libalpm/add.c:77
-#, c-format
-msgid "loading target '%s'"
-msgstr "cargando el archivo '%s'"
-
-#: lib/libalpm/add.c:122
-#, c-format
-msgid "replacing older version %s-%s by %s in target list"
+#: lib/libalpm/add.c:88
+#, fuzzy, c-format
+msgid "replacing older version %s-%s by %s in target list\n"
msgstr "reemplazando la versión antigua %s-%s por %s en la lista de objetivos"
-#: lib/libalpm/add.c:131
-#, c-format
-msgid "newer version %s-%s is in the target list -- skipping"
+#: lib/libalpm/add.c:97
+#, fuzzy, c-format
+msgid "newer version %s-%s is in the target list -- skipping\n"
msgstr ""
"una nueva versión %s-%s esta en la lista de objetivos list -- saltándola"
-#: lib/libalpm/add.c:138
-#, c-format
-msgid "reading '%s' metadata"
-msgstr "leyendo los metadatos '%s'"
-
-#: lib/libalpm/add.c:191 lib/libalpm/remove.c:111
-msgid "looking for unsatisfied dependencies"
-msgstr "buscando por dependencias no satisfechas"
-
-#: lib/libalpm/add.c:203 lib/libalpm/sync.c:483
-msgid "looking for conflicts"
-msgstr "buscando por conflictos"
-
-#: lib/libalpm/add.c:208
-msgid "replacing packages with -A and -U is not supported yet"
-msgstr "el reemplazo de paquetes con -A y -U aún no esta soportado"
-
-#: lib/libalpm/add.c:209
-#, c-format
-msgid "please remove '%s' first, using -Rd"
-msgstr "por favor quitar '%s' primero, usando -Rd"
-
-#: lib/libalpm/add.c:250 lib/libalpm/remove.c:147
-msgid "sorting by dependencies"
-msgstr "ordenando por dependencias"
-
-#: lib/libalpm/add.c:262
-msgid "cleaning up"
-msgstr "limpiando"
-
-#: lib/libalpm/add.c:277
-msgid "looking for file conflicts"
-msgstr "buscando por conflictos de archivos"
+#: lib/libalpm/add.c:168
+msgid "conflicting packages were found in the target list\n"
+msgstr ""
-#: lib/libalpm/add.c:346
-#, c-format
-msgid "upgrading package %s-%s"
-msgstr "actualizando el paquete %s-%s"
+#: lib/libalpm/add.c:169
+msgid "you cannot install two conflicting packages at the same time\n"
+msgstr ""
-#: lib/libalpm/add.c:370
-#, c-format
-msgid "adding package %s-%s"
-msgstr "agregando el paquete %s-%s"
+#: lib/libalpm/add.c:172
+#, fuzzy
+msgid "replacing packages with -A and -U is not supported yet\n"
+msgstr "el reemplazo de paqutes con -A y -U aún no esta soportado"
-#: lib/libalpm/add.c:383
-#, c-format
-msgid "removing old package first (%s-%s)"
-msgstr "quitando el paquete antiguo primero (%s-%s)"
+#: lib/libalpm/add.c:173
+msgid "you can replace packages manually using -Rd and -U\n"
+msgstr ""
-#: lib/libalpm/add.c:411
+#: lib/libalpm/add.c:365
#, c-format
-msgid "adding %s to the NoUpgrade array temporarily"
-msgstr "agregando %s al arreglo NoUpgrade temporalmente"
-
-#: lib/libalpm/add.c:429
-msgid "extracting files"
-msgstr "descomprimiendo archivos"
-
-#: lib/libalpm/add.c:444 lib/libalpm/util.c:465
-msgid "could not get current working directory"
-msgstr "no se pudo obtener el directorio de trabajo actual"
+msgid ""
+"directory permissions differ on %s\n"
+"filesystem: %o package: %o\n"
+msgstr ""
-#: lib/libalpm/add.c:500 lib/libalpm/add.c:501
+#: lib/libalpm/add.c:392
#, c-format
-msgid "%s is in NoExtract, skipping extraction"
-msgstr "%s está en NoExtract. Saltando la extracción"
+msgid "extract: symlink %s does not point to dir\n"
+msgstr ""
-#: lib/libalpm/add.c:508
+#: lib/libalpm/add.c:399
#, c-format
-msgid "%s is in trans->skip_add, skipping extraction"
-msgstr "%s esta en la extracción trans->skip_add, skipping"
+msgid "extract: not overwriting dir with file %s\n"
+msgstr ""
-#: lib/libalpm/add.c:554 lib/libalpm/add.c:555 lib/libalpm/add.c:706
-#, c-format
-msgid "could not extract %s (%s)"
+#: lib/libalpm/add.c:454 lib/libalpm/add.c:598 lib/libalpm/util.c:422
+#, fuzzy, c-format
+msgid "could not extract %s (%s)\n"
msgstr "no se pudo extraer %s (%s)"
-#: lib/libalpm/add.c:598
-#, c-format
-msgid "checking md5 hashes for %s"
-msgstr "verificando los hash md5 para %s"
-
-#: lib/libalpm/add.c:600
-#, c-format
-msgid "checking sha1 hashes for %s"
-msgstr "verificando los hash SHA1 para %s"
-
-#: lib/libalpm/add.c:602
-#, c-format
-msgid "current: %s"
-msgstr "actual: %s"
-
-#: lib/libalpm/add.c:603
-#, c-format
-msgid "new: %s"
-msgstr "nuevo: %s"
-
-#: lib/libalpm/add.c:604
-#, c-format
-msgid "original: %s"
-msgstr "original: %s"
-
-#: lib/libalpm/add.c:616
-#, c-format
-msgid "could not rename %s (%s)"
+#: lib/libalpm/add.c:505
+#, fuzzy, c-format
+msgid "could not rename %s (%s)\n"
msgstr "no se pudo renombrar %s (%s)"
-#: lib/libalpm/add.c:617
-#, c-format
-msgid "error: could not rename %s (%s)"
-msgstr "error: no se pudo renombrar %s (%s)"
-
-#: lib/libalpm/add.c:623 lib/libalpm/add.c:642
-#, c-format
-msgid "could not copy tempfile to %s (%s)"
+#: lib/libalpm/add.c:512 lib/libalpm/add.c:532 lib/libalpm/trans.c:508
+#, fuzzy, c-format
+msgid "could not copy tempfile to %s (%s)\n"
msgstr "no se pudo copiar el archivo temporal a %s (%s)"
-#: lib/libalpm/add.c:624
-#, c-format
-msgid "error: could not copy tempfile to %s (%s)"
-msgstr "error: no se pudo copiar el archivo temporal a %s (%s)"
-
-#: lib/libalpm/add.c:628 lib/libalpm/remove.c:247
-#, c-format
-msgid "%s saved as %s"
+#: lib/libalpm/add.c:517 lib/libalpm/remove.c:234
+#, fuzzy, c-format
+msgid "%s saved as %s\n"
msgstr "%s guardado como %s"
-#: lib/libalpm/add.c:629
-#, c-format
-msgid "warning: %s saved as %s"
-msgstr "advertencia: %s guardado como %s"
-
-#: lib/libalpm/add.c:639
-#, c-format
-msgid "action: installing new file: %s"
-msgstr "acción: instalando nuevo archivo: %s"
-
-#: lib/libalpm/add.c:649 lib/libalpm/add.c:655 lib/libalpm/add.c:660
-msgid "action: leaving existing file in place"
-msgstr "acción: dejando el archivo existente en su lugar"
-
-#: lib/libalpm/add.c:663
-msgid "action: keeping current file and installing new one with .pacnew ending"
-msgstr ""
-"action:manteniendo el archivo actual e instalando un no nuevo con postfijo ."
-"pacnew"
-
-#: lib/libalpm/add.c:666
-#, c-format
-msgid "could not install %s as %s: %s"
+#: lib/libalpm/add.c:556
+#, fuzzy, c-format
+msgid "could not install %s as %s: %s\n"
msgstr "no se pudo instalar %s como %s: %s"
-#: lib/libalpm/add.c:667
-#, c-format
-msgid "error: could not install %s as %s: %s"
-msgstr "error: no se pudo instalar %s como %s: %s"
-
-#: lib/libalpm/add.c:669
-#, c-format
-msgid "%s installed as %s"
+#: lib/libalpm/add.c:559
+#, fuzzy, c-format
+msgid "%s installed as %s\n"
msgstr "%s instalado como %s"
-#: lib/libalpm/add.c:670
-#, c-format
-msgid "warning: %s installed as %s"
-msgstr "advertencia: %s instalado como %s"
-
-#: lib/libalpm/add.c:684
-#, c-format
-msgid "%s is in NoUpgrade -- skipping"
-msgstr "%s esta en en los no actualizables -- saltando"
-
-#: lib/libalpm/add.c:685
-#, c-format
-msgid "extracting %s as %s.pacnew"
+#: lib/libalpm/add.c:576
+#, fuzzy, c-format
+msgid "extracting %s as %s.pacnew\n"
msgstr "descomprimiendo %s como %s.pacnew"
-#: lib/libalpm/add.c:686
-#, c-format
-msgid "warning: extracting %s as %s.pacnew"
-msgstr "advertencia: descomprimiendo %s como %s.pacnew"
-
-#: lib/libalpm/add.c:689
-#, c-format
-msgid "extracting %s"
-msgstr "descomprimiendo %s"
-
-#: lib/libalpm/add.c:707
-#, c-format
-msgid "error: could not extract %s (%s)"
-msgstr "error: no se pudo descomprimir %s (%s)"
-
-#: lib/libalpm/add.c:719
-#, c-format
-msgid "appending backup entry for %s"
-msgstr "agregando la entrada de respaldo para %s"
+#: lib/libalpm/add.c:711 lib/libalpm/trans.c:529
+#, fuzzy
+msgid "could not get current working directory\n"
+msgstr "no se pudo obtener el directorio de trabajo actual"
-#: lib/libalpm/add.c:751 lib/libalpm/add.c:753
-#, c-format
-msgid "errors occurred while %s %s"
+#: lib/libalpm/add.c:765
+#, fuzzy, c-format
+msgid "problem occurred while upgrading %s\n"
msgstr "ocurrieron errores mientras %s %s"
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "upgrading"
-msgstr "actualizando"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "installing"
-msgstr "instalando"
-
-#: lib/libalpm/add.c:771
-#, c-format
-msgid "provision '%s' has been removed from package %s (%s => %s)"
-msgstr "el provisional '%s' ha sido eliminado desde el paquete %s (%s => %s)"
-
-#: lib/libalpm/add.c:783
-#, c-format
-msgid "updating '%s' due to provision change (%s)"
-msgstr "actualizando '%s' debido a un cambio de provisiones (%s)"
-
-#: lib/libalpm/add.c:787 lib/libalpm/add.c:788
-#, c-format
-msgid "could not update provision '%s' from '%s'"
-msgstr "no se pudo actualizar la provisión '%s' desde '%s'"
-
-#: lib/libalpm/add.c:801 lib/libalpm/remove.c:336
-msgid "updating database"
-msgstr "actualizando la base de datos"
-
-#: lib/libalpm/add.c:802
-#, c-format
-msgid "adding database entry '%s'"
-msgstr "agregando a la base de datos '%s'"
+#: lib/libalpm/add.c:770
+#, fuzzy, c-format
+msgid "problem occurred while installing %s\n"
+msgstr "ocurrieron errores mientras %s %s"
-#: lib/libalpm/add.c:805 lib/libalpm/add.c:807
-#, c-format
-msgid "could not update database entry %s-%s"
+#: lib/libalpm/add.c:785
+#, fuzzy, c-format
+msgid "could not update database entry %s-%s\n"
msgstr "no se pudo actualizar en la base de datos la entrada %s-%s"
-#: lib/libalpm/add.c:813
-#, c-format
-msgid "could not add entry '%s' in cache"
+#: lib/libalpm/add.c:793
+#, fuzzy, c-format
+msgid "could not add entry '%s' in cache\n"
msgstr "no se pudo agregar '%s' en la cache"
-#: lib/libalpm/add.c:843 lib/libalpm/remove.c:363 lib/libalpm/sync.c:1055
-#, c-format
-msgid "running \"ldconfig -r %s\""
-msgstr "ejecutando \"ldconfig -r %s\""
-
-#: lib/libalpm/alpm.c:116
-#, c-format
-msgid "removing DB %s, %d remaining..."
-msgstr "quitando la base de datos %s, %d quedando..."
-
-#: lib/libalpm/alpm.c:181
-#, c-format
-msgid "unregistering database '%s'"
-msgstr "desmarcando la base de datos '%s'"
-
-#: lib/libalpm/alpm.c:186
-#, c-format
-msgid "closing database '%s'"
-msgstr "cerrando la base de datos '%s'"
-
-#: lib/libalpm/alpm.c:232
-#, c-format
-msgid ""
-"adding new server to database '%s': protocol '%s', server '%s', path '%s'"
-msgstr ""
-"agregando un nuevo servidor a la base de datos '%s': protocolo '%s', "
-"servidor '%s', ruta '%s'"
-
-#: lib/libalpm/alpm.c:236
-#, c-format
-msgid "serverlist flushed for '%s'"
-msgstr "lista de servidores se ha barrido para '%s'"
-
-#: lib/libalpm/alpm.c:279
-#, c-format
-msgid "failed to get lastupdate time for %s (no big deal)"
-msgstr ""
-"fallo al obtener la última fecha de actualización para %s (no es un gran "
-"problema)"
-
-#: lib/libalpm/alpm.c:298
-#, c-format
-msgid "failed to sync db: %s [%d]"
-msgstr "fallo al sincronizar la base de datos: %s [%d]"
-
-#: lib/libalpm/alpm.c:302
-#, c-format
-msgid "sync: new mtime for %s: %s"
-msgstr "sync: nuevo mtime para %s: %s"
-
-#: lib/libalpm/alpm.c:308
-#, c-format
-msgid "flushing database %s%s"
-msgstr "barriendo la base de datos %s%s"
-
-#: lib/libalpm/alpm.c:312
-#, c-format
-msgid "could not remove database entry %s%s"
-msgstr "no se pudo quitar la entrada en la base de datos %s%s"
-
-#: lib/libalpm/alpm.c:481
-#, c-format
-msgid "could not get sha1sum for package %s-%s"
-msgstr "no se pudo obtener la verificación sha1 para %s-%s"
-
-#: lib/libalpm/alpm.c:487
-#, c-format
-msgid "sha1sums for package %s-%s match"
-msgstr "verificando sha1 para el paquete %s-%s coincide"
-
-#: lib/libalpm/alpm.c:490
-#, c-format
-msgid "sha1sums do not match for package %s-%s"
-msgstr "la verificación sha1 no coincide para %s-%s"
-
-#: lib/libalpm/alpm.c:525
-#, c-format
-msgid "could not get md5sum for package %s-%s"
-msgstr "no se pudo obtener la verificación md5 para %s-%s"
-
-#: lib/libalpm/alpm.c:531
-#, c-format
-msgid "md5sums for package %s-%s match"
-msgstr "la verificación md5 para el paquete %s-%s concuerda"
-
-#: lib/libalpm/alpm.c:534
-#, c-format
-msgid "md5sums do not match for package %s-%s"
-msgstr "la verificación md5 para el paquete %s-%s no concuerda"
-
-#: lib/libalpm/alpm.c:783
-#, c-format
-msgid "could not remove lock file %s"
-msgstr "no se pudo quitar el archivo de bloqueo %s"
-
-#: lib/libalpm/alpm.c:784
-#, c-format
-msgid "warning: could not remove lock file %s"
-msgstr "advertencia: no se pudo eliminar el archivo de bloqueo %s"
-
-#: lib/libalpm/alpm.c:920
-#, c-format
-msgid "config: new section '%s'"
-msgstr "config: nueva sección '%s'"
-
-#: lib/libalpm/alpm.c:951
-msgid "config: nopassiveftp"
-msgstr "config: nopassiveftp"
-
-#: lib/libalpm/alpm.c:954
-msgid "config: usesyslog"
-msgstr "config: usesyslog"
-
-#: lib/libalpm/alpm.c:957
-msgid "config: chomp"
-msgstr "config: chomp"
-
-#: lib/libalpm/alpm.c:960
-msgid "config: usecolor"
-msgstr "config: usecolor"
-
-#: lib/libalpm/alpm.c:969
-#, c-format
-msgid "config: including %s"
-msgstr "config: incluyendo %s"
-
-#: lib/libalpm/alpm.c:979 lib/libalpm/alpm.c:984
-#, c-format
-msgid "config: noupgrade: %s"
-msgstr "config: noupgrade: %s"
-
-#: lib/libalpm/alpm.c:992 lib/libalpm/alpm.c:997
-#, c-format
-msgid "config: noextract: %s"
-msgstr "config: noextract: %s"
-
-#: lib/libalpm/alpm.c:1005 lib/libalpm/alpm.c:1010
-#, c-format
-msgid "config: ignorepkg: %s"
-msgstr "config: ignorepkg: %s"
-
-#: lib/libalpm/alpm.c:1018 lib/libalpm/alpm.c:1023
-#, c-format
-msgid "config: holdpkg: %s"
-msgstr "config: holdpkg: %s"
-
-#: lib/libalpm/alpm.c:1030
-#, c-format
-msgid "config: dbpath: %s"
-msgstr "config: dbpath: %s"
-
-#: lib/libalpm/alpm.c:1037
-#, c-format
-msgid "config: cachedir: %s"
-msgstr "config: cachedir: %s"
-
-#: lib/libalpm/alpm.c:1044
+#: lib/libalpm/be_files.c:223
#, fuzzy, c-format
-msgid "config: rootdir: %s"
-msgstr "config: cachedir: %s"
-
-#: lib/libalpm/alpm.c:1047
-#, c-format
-msgid "config: logfile: %s"
-msgstr "config: logfile: %s"
-
-#: lib/libalpm/alpm.c:1050
-#, c-format
-msgid "config: xfercommand: %s"
-msgstr "config: xfercommand: %s"
-
-#: lib/libalpm/alpm.c:1055
-#, c-format
-msgid "config: upgradedelay: %d"
-msgstr "config: upgradedelay: %d"
-
-#: lib/libalpm/alpm.c:1093 lib/libalpm/sync.c:107
-msgid "checking for package replacements"
-msgstr "verificando si hay reemplazo de paquetes"
-
-#: lib/libalpm/alpm.c:1104 lib/libalpm/sync.c:123
-#, c-format
-msgid "checking replacement '%s' for package '%s'"
-msgstr "verificando el reemplazo '%s' para el paquete '%s'"
-
-#: lib/libalpm/alpm.c:1107 lib/libalpm/sync.c:125
-#, c-format
-msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)"
-msgstr ""
-"%s-%s: ignorando la actualización del paquete(para ser reemplazado por %s-%s)"
-
-#: lib/libalpm/alpm.c:1137 lib/libalpm/sync.c:160
-#, c-format
-msgid "%s-%s elected for upgrade (to be replaced by %s-%s)"
-msgstr "%s-%s escogido para actualizar (para ser reemplazado por %s-%s)"
-
-#: lib/libalpm/alpm.c:1159 lib/libalpm/sync.c:194
-#, c-format
-msgid "'%s' not found in sync db -- skipping"
-msgstr "'%s' not encontrado en la base -- saltando"
-
-#: lib/libalpm/alpm.c:1173 lib/libalpm/sync.c:208 lib/libalpm/sync.c:509
-#, c-format
-msgid "'%s' is already elected for removal -- skipping"
-msgstr "'%s' está ya seleccionado para quitar -- saltando"
-
-#: lib/libalpm/alpm.c:1179
-#, c-format
-msgid "%s elected for upgrade (%s => %s)"
-msgstr "%s seleccionado para actualizar (%s => %s)"
-
-#: lib/libalpm/be_files.c:61
-#, c-format
-msgid "unpacking database '%s'"
-msgstr "desempaquetando la base de datos '%s'"
-
-#: lib/libalpm/be_files.c:78
-#, c-format
-msgid "opening database from path '%s'"
-msgstr "abriendo la base de datos desde la ruta '%s'"
-
-#: lib/libalpm/be_files.c:182
-#, c-format
-msgid "db scan could not find package: %s"
-msgstr "db scan no pudo encontrar el paquete: %s"
-
-#: lib/libalpm/be_files.c:186
-#, c-format
-msgid "invalid name for database entry '%s'"
+msgid "invalid name for database entry '%s'\n"
msgstr "nombre invalido para la entrada de la base de datos '%s'"
-#: lib/libalpm/be_files.c:221
-msgid "invalid package entry provided to _alpm_db_read, skipping"
-msgstr "entrada de paquete invalida a _alpm_db_read, saltando"
-
-#: lib/libalpm/be_files.c:226
-#, c-format
-msgid ""
-"request to read database info for a file-based package '%s', skipping..."
-msgstr ""
-"petición para leer la información de la base para el paquete basado en "
-"archivo '%s', saltando..."
-
-#: lib/libalpm/be_files.c:239
-#, c-format
-msgid "loading package data for %s : level=%d"
+#: lib/libalpm/be_files.c:275
+#, fuzzy, c-format
+msgid "loading package data for %s : level=%d\n"
msgstr "cargando la información del paquete para %s : nivel=%d"
-#: lib/libalpm/be_files.c:247
-#, c-format
-msgid "cannot find '%s-%s' in db '%s'"
-msgstr "no se pudo encontrar '%s-%s' en la base '%s'"
-
-#: lib/libalpm/be_files.c:255 lib/libalpm/be_files.c:401
-#: lib/libalpm/be_files.c:424 lib/libalpm/be_files.c:515
-#: lib/libalpm/be_files.c:605 lib/libalpm/be_files.c:632
-#: lib/libalpm/package.c:208
-#, c-format
-msgid "could not open file %s: %s"
+#: lib/libalpm/be_files.c:292 lib/libalpm/be_files.c:429
+#: lib/libalpm/be_files.c:452 lib/libalpm/be_files.c:563
+#: lib/libalpm/be_files.c:641 lib/libalpm/be_files.c:669
+#: lib/libalpm/package.c:787
+#, fuzzy, c-format
+msgid "could not open file %s: %s\n"
msgstr "no se pudo abrir el archivo %s: %s"
-#: lib/libalpm/be_files.c:512
-#, c-format
-msgid "writing %s-%s DESC information back to db"
-msgstr "escribiendo %s-%s, información DESC en la base"
-
-#: lib/libalpm/be_files.c:602
-#, c-format
-msgid "writing %s-%s FILES information back to db"
-msgstr "escribiendo %s-%s, información FILES en la base"
-
-#: lib/libalpm/be_files.c:629
-#, c-format
-msgid "writing %s-%s DEPENDS information back to db"
-msgstr "escribiendo %s-%s, información DEPENDS en la base"
-
-#: lib/libalpm/cache.c:59
-#, c-format
-msgid "loading package cache for repository '%s'"
-msgstr "cargando la cache de paquetes para el repositorio '%s'"
-
-#: lib/libalpm/cache.c:64
-#, c-format
-msgid "adding '%s' to package cache for db '%s'"
+#: lib/libalpm/cache.c:62
+#, fuzzy, c-format
+msgid "adding '%s' to package cache for db '%s'\n"
msgstr "agregando '%s' a la cache de paquetes para la base '%s'"
-#: lib/libalpm/cache.c:85
-#, c-format
-msgid "freeing package cache for repository '%s'"
-msgstr "liberando la cache de paquetes para el repositorio '%s'"
-
-#: lib/libalpm/cache.c:109
-#, c-format
-msgid "error: pkgcache is NULL for db '%s'"
-msgstr "error: la cache de paquetes es nula para la base de datos '%s'"
-
-#: lib/libalpm/cache.c:129
-#, c-format
-msgid "adding entry '%s' in '%s' cache"
-msgstr "agregando '%s' en la cache '%s'"
-
-#: lib/libalpm/cache.c:149
-#, c-format
-msgid "removing entry '%s' from '%s' cache"
-msgstr "quitando '%s' de la cache '%s'"
-
-#: lib/libalpm/cache.c:156
-#, c-format
-msgid "cannot remove entry '%s' from '%s' cache: not found"
-msgstr "no se pudo quitar '%s' de la cache '%s': no encontrado"
-
-#: lib/libalpm/cache.c:178
-#, c-format
-msgid "error: failed to get '%s' from NULL pkgcache"
-msgstr ""
-"error: se produjo un fallo al obtener '%s' desde la cache de paquetes \"NULL"
-"\""
-
-#: lib/libalpm/cache.c:201
-#, c-format
-msgid "loading group cache for repository '%s'"
-msgstr "cargando la cache de grupo para el repositorio '%s'"
-
-#: lib/libalpm/conflict.c:69
-#, c-format
-msgid " found conflict '%s' : package '%s'"
-msgstr " se ha encontrado un conflicto '%s' : paquete '%s'"
-
-#: lib/libalpm/conflict.c:78
-#, c-format
-msgid " found conflict '%s' : package '%s' provides '%s'"
-msgstr " se ha encontrado un conflicto '%s' : paquete '%s' provee '%s'"
-
-#: lib/libalpm/conflict.c:101 lib/libalpm/conflict.c:143
-#, c-format
-msgid "package '%s' conflicts with itself - packaging error"
-msgstr "el paquete '%s' posee conflictos con si mismo- error del paquete"
-
-#: lib/libalpm/conflict.c:107
-#, c-format
-msgid "checkconflicts: target '%s' vs db"
-msgstr "checkconflicts: el objetivo '%s' vs la base de datos"
-
-#: lib/libalpm/conflict.c:149
-#, c-format
-msgid "checkconflicts: target '%s' vs all targets"
-msgstr "checkconflicts: el objetivo '%s' vs todos los objetivos"
-
-#: lib/libalpm/conflict.c:181
-#, c-format
-msgid "checkconflicts: db vs target '%s'"
-msgstr "checkconflicts: la base de datos vs el objetivo '%s'"
-
-#: lib/libalpm/conflict.c:201
-#, c-format
-msgid "target '%s' is also in target list, using NEW conflicts"
-msgstr ""
-"'%s' esta también en la lista de objetivos, usando NEW provoca conflictos"
-
-#: lib/libalpm/conflict.c:257
-#, c-format
-msgid "\tCONFLICTS:: %s conflicts with %s"
-msgstr "\tCONFLICTS:: %s posee conflictos con %s"
-
-#: lib/libalpm/conflict.c:349 lib/libalpm/deps.c:60 lib/libalpm/deps.c:438
-#: lib/libalpm/deps.c:634 lib/libalpm/deps.c:674 lib/libalpm/group.c:45
-#: lib/libalpm/handle.c:51 lib/libalpm/package.c:82 lib/libalpm/sync.c:67
-#: lib/libalpm/sync.c:614 lib/libalpm/sync.c:630 lib/libalpm/sync.c:727
-#: lib/libalpm/trans.c:55 lib/libalpm/util.c:614 lib/libalpm/util.c:621
-#, c-format
-msgid "malloc failure: could not allocate %d bytes"
-msgstr "falla en malloc: no se pudo alocar %d bytes"
-
-#: lib/libalpm/db.c:64 lib/libalpm/db.c:71
-#, c-format
-msgid "malloc failed: could not allocate %d bytes"
-msgstr "malloc falló: no se pudo alocar %d bytes"
+#: lib/libalpm/db.c:285
+#, fuzzy, c-format
+msgid "could not remove database entry %s%s\n"
+msgstr "no se pudo quitar la entrada en la base de datos %s%s"
-#: lib/libalpm/db.c:167
-msgid "attempt to re-register the 'local' DB"
+#: lib/libalpm/db.c:553
+#, fuzzy
+msgid "attempt to re-register the 'local' DB\n"
msgstr "intento para re-registrar la base de datos 'local'"
-#: lib/libalpm/db.c:175
-#, c-format
-msgid "attempt to re-register the '%s' database, using existing"
-msgstr "intento para re-registrar la base de datos '%s', usando la existente"
-
-#: lib/libalpm/db.c:181
-#, c-format
-msgid "registering database '%s'"
-msgstr "registrando la base de datos '%s'"
-
-#: lib/libalpm/db.c:186
-#, c-format
-msgid "database directory '%s' does not exist, creating it"
-msgstr "el directorio de base de datos '%s' no existe, creando"
-
-#: lib/libalpm/db.c:197
-#, c-format
-msgid "opening database '%s'"
-msgstr "abriendo la base de datos '%s'"
-
-#: lib/libalpm/deps.c:131
-msgid "started sorting dependencies"
-msgstr "empezando a ordenar dependencias"
-
-#: lib/libalpm/deps.c:136
-msgid "possible dependency cycle detected"
-msgstr "posible ciclo de dependencias detectado"
-
-#: lib/libalpm/deps.c:183
-msgid "sorting dependencies finished"
-msgstr "ordenamiento de dependencias finalizado"
-
-#: lib/libalpm/deps.c:225 lib/libalpm/deps.c:310
-msgid "null package found in package list"
-msgstr "se ha encontrado un paquete nulo en la lista de paquetes"
-
-#: lib/libalpm/deps.c:230
-#, c-format
-msgid "cannot find package installed '%s'"
-msgstr "no se pudo encontrar el paquete instalado '%s'"
-
-#: lib/libalpm/deps.c:261
-#, c-format
-msgid "checkdeps: dependency '%s' has moved from '%s' to '%s'"
-msgstr "checkdeps: la dependencia '%s' ha sido movida desde '%s' a '%s'"
+#: lib/libalpm/db.c:562 lib/libalpm/db.c:613
+#, fuzzy
+msgid "database path is undefined\n"
+msgstr "base de datos no inicializada"
-#: lib/libalpm/deps.c:280
-#, c-format
-msgid "checkdeps: dependency '%s' satisfied by installed package '%s'"
-msgstr ""
-"checkdeps: la dependencia '%s' es satisfecha por el paquete instalado '%s'"
+#: lib/libalpm/deps.c:173
+#, fuzzy
+msgid "dependency cycle detected:\n"
+msgstr "ciclo de dependencias detectado: %s"
-#: lib/libalpm/deps.c:289
+#: lib/libalpm/deps.c:175
#, c-format
-msgid "checkdeps: updated '%s' won't satisfy a dependency of '%s'"
+msgid "%s will be removed after its %s dependency\n"
msgstr ""
-"checkdeps: El paquete actualizado '%s' no satisfará una dependencia de'%s'"
-#: lib/libalpm/deps.c:359
+#: lib/libalpm/deps.c:177
#, c-format
-msgid "missing dependency '%s' for package '%s'"
-msgstr "dependencia faltante '%s' para el paquete '%s'"
-
-#: lib/libalpm/deps.c:409
-#, c-format
-msgid "checkdeps: found %s as required by %s"
-msgstr "checkdeps: encontrado %s como lo requería %s"
-
-#: lib/libalpm/deps.c:485
-#, c-format
-msgid "excluding %s -- explicitly installed"
-msgstr "excluyendo %s -- instalado explícitamente"
-
-#: lib/libalpm/deps.c:532
-#, c-format
-msgid "cannot find package \"%s\" or anything that provides it!"
-msgstr "no se pudo encontrar el paquete \"%s\" o algo que lo provea!"
-
-#: lib/libalpm/deps.c:540 lib/libalpm/deps.c:551
-#, c-format
-msgid "adding '%s' to the targets"
-msgstr "agregando '%s' a los objetivos"
-
-#: lib/libalpm/deps.c:583
-msgid "started resolving dependencies"
-msgstr "empezando a resolver dependencias"
-
-#: lib/libalpm/deps.c:601
-#, c-format
-msgid "%s provides dependency %s -- skipping"
-msgstr "%s provee la dependencia %s -- saltando"
-
-#: lib/libalpm/deps.c:630
-#, c-format
-msgid ""
-"cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+msgid "%s will be installed before its %s dependency\n"
msgstr ""
-"no se pudo resolver dependecias para \"%s\" (\"%s\" no está en las listas de "
-"paquetes)"
-#: lib/libalpm/deps.c:647
-#, c-format
-msgid "dependency %s is already in the target list -- skipping"
-msgstr "la dependencia %s ya está en la lista de objetivos -- saltando"
-
-#: lib/libalpm/deps.c:667
-#, c-format
-msgid "pulling dependency %s (needed by %s)"
-msgstr "trayendo la dependencia %s (necesitada por %s)"
-
-#: lib/libalpm/deps.c:671
-#, c-format
-msgid "cannot resolve dependencies for \"%s\""
+#: lib/libalpm/deps.c:573
+#, fuzzy, c-format
+msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "no se pudo resolver las dependencias para \"%s\""
-#: lib/libalpm/deps.c:687
-#, c-format
-msgid "dependency cycle detected: %s"
-msgstr "ciclo de dependencias detectado: %s"
-
-#: lib/libalpm/deps.c:691
-msgid "finished resolving dependencies"
-msgstr "se ha finalizado la resolución de dependencias"
-
-#: lib/libalpm/error.c:40
+#: lib/libalpm/error.c:43
msgid "out of memory!"
msgstr "no hay memoria!"
-#: lib/libalpm/error.c:42
+#: lib/libalpm/error.c:45
msgid "unexpected system error"
msgstr "error de sistema inesperado"
-#: lib/libalpm/error.c:44
+#: lib/libalpm/error.c:47
msgid "insufficient privileges"
msgstr "privilegios insuficientes"
-#: lib/libalpm/error.c:46
+#: lib/libalpm/error.c:49
msgid "could not find or read file"
msgstr "no se pudo encontrar o leer el archivo"
-#: lib/libalpm/error.c:48
+#: lib/libalpm/error.c:51
+#, fuzzy
+msgid "could not find or read directory"
+msgstr "no se pudo encontrar o leer el archivo"
+
+#: lib/libalpm/error.c:53
msgid "wrong or NULL argument passed"
msgstr "argumento erroneo o núlo"
-#: lib/libalpm/error.c:51
+#: lib/libalpm/error.c:56
msgid "library not initialized"
msgstr "librería no inicializada"
-#: lib/libalpm/error.c:53
+#: lib/libalpm/error.c:58
msgid "library already initialized"
msgstr "la librería ya fue inicializada"
-#: lib/libalpm/error.c:55
+#: lib/libalpm/error.c:60
msgid "unable to lock database"
msgstr "no se pudo bloquear la base de datos"
-#: lib/libalpm/error.c:58
+#: lib/libalpm/error.c:63
msgid "could not open database"
msgstr "no se pudo abrir la base de datos"
-#: lib/libalpm/error.c:60
+#: lib/libalpm/error.c:65
msgid "could not create database"
msgstr "no se pudo crear la base de datos"
-#: lib/libalpm/error.c:62
+#: lib/libalpm/error.c:67
msgid "database not initialized"
msgstr "base de datos no inicializada"
-#: lib/libalpm/error.c:64
+#: lib/libalpm/error.c:69
msgid "database already registered"
msgstr "base de datos ya registrada"
-#: lib/libalpm/error.c:66
+#: lib/libalpm/error.c:71
msgid "could not find database"
msgstr "no se pudo encontrar la base de datos"
-#: lib/libalpm/error.c:68
+#: lib/libalpm/error.c:73
msgid "could not update database"
msgstr "no se pudo actualizar la base de datos"
-#: lib/libalpm/error.c:70
+#: lib/libalpm/error.c:75
msgid "could not remove database entry"
msgstr "no se pudo quitar la entrada de la base de datos"
-#: lib/libalpm/error.c:73
+#: lib/libalpm/error.c:78
msgid "invalid url for server"
msgstr "dirección inválida para el servidor"
-#: lib/libalpm/error.c:80
+#: lib/libalpm/error.c:85
msgid "could not set parameter"
msgstr "no se pudo fijar el parámetro"
-#: lib/libalpm/error.c:83
+#: lib/libalpm/error.c:88
msgid "transaction already initialized"
msgstr "la operación ya se inicializó"
-#: lib/libalpm/error.c:85 lib/libalpm/error.c:89
+#: lib/libalpm/error.c:90 lib/libalpm/error.c:94
msgid "transaction not initialized"
msgstr "operación no inicializada"
-#: lib/libalpm/error.c:87
+#: lib/libalpm/error.c:92
msgid "duplicate target"
msgstr "objetivo duplicado"
-#: lib/libalpm/error.c:91
+#: lib/libalpm/error.c:96
msgid "transaction not prepared"
msgstr "operación no lista"
-#: lib/libalpm/error.c:93
+#: lib/libalpm/error.c:98
msgid "transaction aborted"
msgstr "operación abortada"
-#: lib/libalpm/error.c:95
+#: lib/libalpm/error.c:100
msgid "operation not compatible with the transaction type"
msgstr "la operación no es compatible con el tipo de transacción"
-#: lib/libalpm/error.c:97 lib/libalpm/sync.c:994
+#: lib/libalpm/error.c:102
msgid "could not commit transaction"
msgstr "no se pudo hacer la transacción"
-#: lib/libalpm/error.c:99
+#: lib/libalpm/error.c:104
msgid "could not download all files"
msgstr "no se pudo descargar todos los archivos"
-#: lib/libalpm/error.c:102
+#: lib/libalpm/error.c:107
msgid "could not find or read package"
msgstr "no se pudo encontrar o leer el paquete"
-#: lib/libalpm/error.c:104
+#: lib/libalpm/error.c:109
msgid "invalid or corrupted package"
msgstr "paquete invalido o corrupto"
-#: lib/libalpm/error.c:106
+#: lib/libalpm/error.c:111
msgid "cannot open package file"
msgstr "no se pudo abrir el archivo de paquetes"
-#: lib/libalpm/error.c:108
+#: lib/libalpm/error.c:113
msgid "cannot load package data"
msgstr "no se pudo cargar la información del paquete"
-#: lib/libalpm/error.c:110
+#: lib/libalpm/error.c:115
msgid "package already installed"
msgstr "el paquete ya está instalado"
-#: lib/libalpm/error.c:112
+#: lib/libalpm/error.c:117
msgid "package not installed or lesser version"
msgstr "el paquete no está instalado o es una versión menor"
-#: lib/libalpm/error.c:114
+#: lib/libalpm/error.c:119
msgid "cannot remove all files for package"
msgstr "no se pudo quitar todos los archivos del paquete"
-#: lib/libalpm/error.c:116
+#: lib/libalpm/error.c:121
msgid "package name is not valid"
msgstr "el nombre del paquete no es válido"
-#: lib/libalpm/error.c:118
+#: lib/libalpm/error.c:123
msgid "corrupted package"
msgstr "paquete corrupto"
-#: lib/libalpm/error.c:120
+#: lib/libalpm/error.c:125
msgid "no such repository"
msgstr "no existe el repositorio"
-#: lib/libalpm/error.c:123
+#: lib/libalpm/error.c:128
+#, fuzzy
+msgid "corrupted delta"
+msgstr "paquete corrupto"
+
+#: lib/libalpm/error.c:130
+msgid "delta patch failed"
+msgstr ""
+
+#: lib/libalpm/error.c:133
msgid "group not found"
msgstr "grupo no encontrado"
-#: lib/libalpm/error.c:126
+#: lib/libalpm/error.c:136
msgid "could not satisfy dependencies"
msgstr "no se pudieron satisfacer las dependencias"
-#: lib/libalpm/error.c:128
+#: lib/libalpm/error.c:138
msgid "conflicting dependencies"
msgstr "dependencias en conflicto"
-#: lib/libalpm/error.c:130
+#: lib/libalpm/error.c:140
msgid "conflicting files"
msgstr "archivos en conflicto"
-#: lib/libalpm/error.c:133
+#: lib/libalpm/error.c:143
msgid "user aborted the operation"
msgstr "el usuario abortó la operación"
-#: lib/libalpm/error.c:135
+#: lib/libalpm/error.c:145
msgid "internal error"
msgstr "error interno"
-#: lib/libalpm/error.c:137
+#: lib/libalpm/error.c:147
msgid "libarchive error"
msgstr "error de libarchive"
-#: lib/libalpm/error.c:139
-msgid "not enough space on disk"
-msgstr "no hay suficiente espacio en el disco"
-
-#: lib/libalpm/error.c:142
+#: lib/libalpm/error.c:150
msgid "not confirmed"
msgstr "no confirmado"
-#: lib/libalpm/error.c:145
-msgid "bad configuration section name"
-msgstr "nombre de sección de configuración erróneo"
-
-#: lib/libalpm/error.c:147
-msgid "'local' is reserved and cannot be used as a repository name"
-msgstr ""
-"'local' esta reservado y no puede ser utilizado como nombre de repositorio"
-
-#: lib/libalpm/error.c:149
-msgid "syntax error in config file"
-msgstr "error de sintaxis en el archivo de configuración"
-
-#: lib/libalpm/error.c:151
-msgid "all directives must belong to a section"
-msgstr "todas las directivas deben pertenecer a una sección"
-
-#: lib/libalpm/error.c:153
+#: lib/libalpm/error.c:152
msgid "invalid regular expression"
msgstr "expresión regular inválida"
-#: lib/libalpm/error.c:156
+#: lib/libalpm/error.c:155
msgid "connection to remote host failed"
msgstr "falló la conexión con el host remoto"
-#: lib/libalpm/error.c:159
+#: lib/libalpm/error.c:158
msgid "unexpected error"
msgstr "error inesperado"
-# canonicalize.. no supe traducirla bien
-#: lib/libalpm/handle.c:163
-#, c-format
-msgid "cannot canonicalize specified root path '%s'"
-msgstr "no se pudo obtener el la ruta canonica de la raiz especificada '%s'"
-
-#: lib/libalpm/handle.c:175
-#, c-format
-msgid "option 'root' = %s"
-msgstr "opción 'root' = %s"
-
-#: lib/libalpm/handle.c:195
-#, c-format
-msgid "option 'dbpath' = %s"
-msgstr "opción 'dbpath' = %s"
-
-#: lib/libalpm/handle.c:211
-#, c-format
-msgid "option 'cachedir' = %s"
-msgstr "opción 'cachedir' = %s"
-
-#: lib/libalpm/md5driver.c:56
-#, c-format
-msgid "%s can't be opened\n"
-msgstr "%s no puede ser abierto\n"
-
-#: lib/libalpm/md5driver.c:74
-#, c-format
-msgid "md5(%s) = %s"
-msgstr "md5(%s) = %s"
+#: lib/libalpm/package.c:124
+#, fuzzy, c-format
+msgid "could not get md5sum for package %s-%s\n"
+msgstr "no se pudo obtener la verificación md5 para %s-%s"
-#: lib/libalpm/package.c:147
-#, c-format
-msgid "%s-%s: ignoring package upgrade (%s)"
-msgstr "%s-%s: ignorando la actualización del paquete (%s)"
+#: lib/libalpm/package.c:133
+#, fuzzy, c-format
+msgid "md5sums do not match for package %s-%s\n"
+msgstr "la verificación md5 para el paquete %s-%s no concuerda"
-#: lib/libalpm/package.c:158
-#, c-format
-msgid "%s: forcing upgrade to version %s"
+#: lib/libalpm/package.c:737
+#, fuzzy, c-format
+msgid "%s: forcing upgrade to version %s\n"
msgstr "%s: forzando la actualización a la versión %s"
-#: lib/libalpm/package.c:163
-#, c-format
-msgid "%s: local (%s) is newer than %s (%s)"
+#: lib/libalpm/package.c:742
+#, fuzzy, c-format
+msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: local (%s) es más nuevo que %s (%s)"
-#: lib/libalpm/package.c:171
-#, c-format
-msgid "%s-%s: delaying upgrade of package (%s)"
+#: lib/libalpm/package.c:750
+#, fuzzy, c-format
+msgid "%s-%s: delaying upgrade of package (%s)\n"
msgstr "%s-%s: aplazando la actualización del paquete (%s)"
-#: lib/libalpm/package.c:222 lib/libalpm/package.c:281
-#, c-format
-msgid "%s: syntax error in description file line %d"
-msgstr "%s: error de sintaxis en la linea de descripción de archivos %d"
-
-#: lib/libalpm/package.c:355
-msgid "could not parse the package description file"
+#: lib/libalpm/package.c:931
+#, fuzzy, c-format
+msgid "could not parse package description file in %s\n"
msgstr "no se pudo interpretar el archivo de descripción"
-#: lib/libalpm/package.c:359
-#, c-format
-msgid "missing package name in %s"
+#: lib/libalpm/package.c:936
+#, fuzzy, c-format
+msgid "missing package name in %s\n"
msgstr "nombre de paquete perdido en %s"
-#: lib/libalpm/package.c:363
-#, c-format
-msgid "missing package version in %s"
+#: lib/libalpm/package.c:940
+#, fuzzy, c-format
+msgid "missing package version in %s\n"
msgstr "versión de paquete perdida en %s"
-#: lib/libalpm/package.c:398
-#, c-format
-msgid "could not remove tempfile %s"
+#: lib/libalpm/package.c:970
+#, fuzzy, c-format
+msgid "could not remove tempfile %s\n"
msgstr "no se pudo quitar el archivo temporal %s"
-#: lib/libalpm/package.c:411 lib/libalpm/package.c:418
-#, c-format
-msgid "error while reading package: %s"
+#: lib/libalpm/package.c:985 lib/libalpm/package.c:998
+#, fuzzy, c-format
+msgid "error while reading package %s: %s\n"
msgstr "error mientras se leía el paquete : %s"
-#: lib/libalpm/package.c:424
-msgid "missing package metadata"
-msgstr "faltan los metadatos del paquete "
+#: lib/libalpm/package.c:1005
+#, fuzzy, c-format
+msgid "missing package metadata in %s\n"
+msgstr "falta la metadata del paquete "
-#: lib/libalpm/package.c:431
-#, c-format
-msgid "missing package filelist in %s, generating one"
+#: lib/libalpm/package.c:1012
+#, fuzzy, c-format
+msgid "missing package filelist in %s, generating one\n"
msgstr "falta la lita de paquetes en %s. generando una"
-#: lib/libalpm/package.c:570
-#, c-format
-msgid "adding '%s' in requiredby field for '%s'"
-msgstr "agregando '%s' en el campo requiredby para '%s'"
-
-#: lib/libalpm/package.c:584
-#, c-format
-msgid "adding '%s' in requiredby field for '%s' (provides: %s)"
-msgstr "agregando '%s' en el campo requiredby para '%s' (provee %s)"
-
-#: lib/libalpm/remove.c:79
-#, c-format
-msgid "could not find %s in database"
-msgstr "no se pudo encontrar %s en la base de datos"
-
-#: lib/libalpm/remove.c:93
-#, c-format
-msgid "adding %s in the targets list"
-msgstr "agregando %s en la lista de objetivos"
-
#: lib/libalpm/remove.c:121
-#, c-format
-msgid "pulling %s in the targets list"
-msgstr "poniendo %s en la lista de objetivos"
-
-#: lib/libalpm/remove.c:124
-#, c-format
-msgid "could not find %s in database -- skipping"
+#, fuzzy, c-format
+msgid "could not find %s in database -- skipping\n"
msgstr "no se pudo encontrar %s en la base de datos -- saltando"
-#: lib/libalpm/remove.c:142
-msgid "finding removable dependencies"
-msgstr "buscando dependencias a eliminar"
-
-#: lib/libalpm/remove.c:175
-#, c-format
-msgid "cannot remove file '%s': %s"
+#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:243
+#, fuzzy, c-format
+msgid "cannot remove file '%s': %s\n"
msgstr "no se pudo quitar el archivo '%s': %s"
-#: lib/libalpm/remove.c:213
-#, c-format
-msgid "Skipping removal of '%s' due to NoUpgrade"
-msgstr ""
-"saltando la eliminación de '%s' debido a la condición de no actualización"
-
-#: lib/libalpm/remove.c:220
-#, c-format
-msgid "file %s does not exist"
-msgstr "el archivo %s no existe"
-
-#: lib/libalpm/remove.c:227
-#, c-format
-msgid "keeping directory %s"
-msgstr "manteniendo el directorio %s"
-
-#: lib/libalpm/remove.c:229
-#, c-format
-msgid "removing directory %s"
-msgstr "quitando el directorio %s"
-
-#: lib/libalpm/remove.c:236
-#, c-format
-msgid "%s is in trans->skip_remove, skipping removal"
-msgstr "%s esta en trans->skip_remove, saltando la eliminación"
-
-#: lib/libalpm/remove.c:250
-#, c-format
-msgid "transaction is set to NOSAVE, not backing up '%s'"
-msgstr "la transacción esta definida como NOSAVE, no se respaldará '%s'"
-
-#: lib/libalpm/remove.c:254
-#, c-format
-msgid "unlinking %s"
-msgstr "desvinculando %s"
-
-#: lib/libalpm/remove.c:261
-#, c-format
-msgid "cannot remove file %s: %s"
-msgstr "no se pudo quitar el archivo %s: %s"
-
-#: lib/libalpm/remove.c:294
-#, c-format
-msgid "removing package %s-%s"
-msgstr "quitando el paquete %s-%s"
-
-#: lib/libalpm/remove.c:309
-#, c-format
-msgid "not removing package '%s', can't remove all files"
-msgstr "no se quitará el paquete '%s', no se puede quitar todos los archivos"
-
-#: lib/libalpm/remove.c:316
-#, c-format
-msgid "removing %d files"
-msgstr "quitando %d archivos"
-
#: lib/libalpm/remove.c:337
-#, c-format
-msgid "removing database entry '%s'"
-msgstr "quitando de la base de datos '%s'"
-
-#: lib/libalpm/remove.c:339
-#, c-format
-msgid "could not remove database entry %s-%s"
+#, fuzzy, c-format
+msgid "could not remove database entry %s-%s\n"
msgstr "no se pudo quitar de la base de datos %s-%s"
-#: lib/libalpm/remove.c:344
-#, c-format
-msgid "could not remove entry '%s' from cache"
+#: lib/libalpm/remove.c:342
+#, fuzzy, c-format
+msgid "could not remove entry '%s' from cache\n"
msgstr "no se pudo quitar la entrada '%s' de la cache"
-#: lib/libalpm/sha1.c:397
-#, c-format
-msgid "sha1: %s can't be opened\n"
-msgstr "sha1: %s no puede ser abierto\n"
-
-#: lib/libalpm/sha1.c:412
+#: lib/libalpm/server.c:56
#, c-format
-msgid "sha1(%s) = %s"
-msgstr "sha1(%s) = %s"
-
-#: lib/libalpm/sync.c:183
-msgid "checking for package upgrades"
-msgstr "verificando actualizaciones de paquetes"
-
-#: lib/libalpm/sync.c:215
-#, c-format
-msgid "%s-%s elected for upgrade (%s => %s)"
-msgstr "%s-%s seleccionada para actualización (%s => %s)"
+msgid "url '%s' is invalid, ignoring\n"
+msgstr ""
-#: lib/libalpm/sync.c:270
-#, c-format
-msgid "searching for target in repo '%s'"
-msgstr "buscando el objetivo en el repositorio '%s'"
+#: lib/libalpm/server.c:60
+msgid "url scheme not specified, assuming http\n"
+msgstr ""
-#: lib/libalpm/sync.c:278 lib/libalpm/sync.c:301
-#, c-format
-msgid "target '%s' not found -- looking for provisions"
-msgstr "'%s' no se encontró -- buscando provisionales"
+#: lib/libalpm/server.c:241
+msgid "disk"
+msgstr ""
-#: lib/libalpm/sync.c:283 lib/libalpm/sync.c:306
-#, c-format
-msgid "found '%s' as a provision for '%s'"
-msgstr "encontrado '%s' como provisional para '%s'"
+#: lib/libalpm/server.c:245
+#, fuzzy, c-format
+msgid "failed retrieving file '%s' from %s : %s\n"
+msgstr "fallo al descargar algunos archivos desde %s\n"
-#: lib/libalpm/sync.c:290
-#, c-format
-msgid "repository '%s' not found"
-msgstr "repositorio '%s' no encontrado"
+#: lib/libalpm/server.c:275
+msgid "cannot resume download, starting over\n"
+msgstr ""
-#: lib/libalpm/sync.c:331
-#, c-format
-msgid "%s-%s is up to date -- skipping"
-msgstr "%s-%s esta al día -- saltando"
+#: lib/libalpm/server.c:288
+#, fuzzy, c-format
+msgid "cannot write to file '%s'\n"
+msgstr "no se pudo quitar el archivo '%s': %s"
-#: lib/libalpm/sync.c:354
-#, c-format
-msgid "adding target '%s' to the transaction set"
-msgstr "agregando el objetivo '%s' a la lista de transacciones"
+#: lib/libalpm/server.c:307
+#, fuzzy, c-format
+msgid "error downloading '%s': %s\n"
+msgstr "error mientras se leía el paquete : %s"
-#: lib/libalpm/sync.c:402
-msgid "resolving target's dependencies"
-msgstr "resolviendo las dependencias"
+#: lib/libalpm/server.c:319
+#, fuzzy, c-format
+msgid "error writing to file '%s': %s\n"
+msgstr "no se pudo quitar el archivo '%s': %s"
-#: lib/libalpm/sync.c:422
-#, c-format
-msgid "adding package %s-%s to the transaction targets"
-msgstr "agregando el paquete %s-%s como blanco para la transacción"
+#: lib/libalpm/server.c:387
+#, fuzzy, c-format
+msgid "could not chdir to %s\n"
+msgstr "no se pudo cambiar el directorio a / (%s)"
-#: lib/libalpm/sync.c:463
-msgid "looking for unresolvable dependencies"
-msgstr "buscando dependencias no resueltas"
+#: lib/libalpm/server.c:394
+msgid "running XferCommand: fork failed!\n"
+msgstr ""
-#: lib/libalpm/sync.c:494
-#, c-format
-msgid "package '%s' conflicts with '%s'"
-msgstr "el paquete '%s' posee conflictos con '%s'"
+#: lib/libalpm/server.c:445
+msgid "URL does not contain a file for download\n"
+msgstr ""
-#: lib/libalpm/sync.c:516
-#, c-format
-msgid "'%s' not found in transaction set -- skipping"
-msgstr "'%s' no se encontró en las transacciones -- saltando"
+#: lib/libalpm/server.c:458
+#, fuzzy, c-format
+msgid "failed to download %s\n"
+msgstr "no se pudo descargar todos los archivos"
-#: lib/libalpm/sync.c:527
-#, c-format
-msgid "package '%s' provides its own conflict"
-msgstr "el paquete '%s' provee su propio conflicto"
+#: lib/libalpm/sync.c:135
+#, fuzzy, c-format
+msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
+msgstr ""
+"%s-%s: ignorando la actualización del paquete(para ser reemplazado por %s-%s)"
-#: lib/libalpm/sync.c:550 lib/libalpm/sync.c:555
-#, c-format
-msgid "'%s' is in the target list -- keeping it"
-msgstr "'%s' esta en la lista de objetivos -- manteniendolo"
+#: lib/libalpm/sync.c:250
+#, fuzzy, c-format
+msgid "%s: ignoring package upgrade (%s => %s)\n"
+msgstr "%s-%s: ignorando la actualización del paquete (%s)"
-#: lib/libalpm/sync.c:567 lib/libalpm/sync.c:604
-#, c-format
-msgid "removing '%s' from target list"
-msgstr "quitando '%s' de la lista de objetivos"
+#: lib/libalpm/sync.c:320
+#, fuzzy, c-format
+msgid "repository '%s' not found\n"
+msgstr "repositorio '%s' no encontrado"
-#: lib/libalpm/sync.c:576
-#, c-format
-msgid "resolving package '%s' conflict"
-msgstr "resolviendo el conflicto del paquete '%s'"
+#: lib/libalpm/sync.c:354
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- skipping\n"
+msgstr "%s-%s esta al día -- saltando"
-#: lib/libalpm/sync.c:599
-#, c-format
-msgid "electing '%s' for removal"
-msgstr "escogiendo '%s' para quitarlo"
+#: lib/libalpm/sync.c:358
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- reinstalling\n"
+msgstr "%s-%s esta al día -- saltando"
-#: lib/libalpm/sync.c:610 lib/libalpm/sync.c:626
-msgid "unresolvable package conflicts detected"
+#: lib/libalpm/sync.c:613 lib/libalpm/sync.c:618
+#, fuzzy
+msgid "unresolvable package conflicts detected\n"
msgstr "se han detectado paquetes con conflictos no resueltos"
-#: lib/libalpm/sync.c:678
-msgid "checking dependencies of packages designated for removal"
-msgstr "verificando dependencias de paquetes indicados para quitar"
-
-#: lib/libalpm/sync.c:692
-msgid "something has gone horribly wrong"
-msgstr "algo ha ido horriblemente mal"
-
-#: lib/libalpm/sync.c:712
-#, c-format
-msgid "found '%s' as a provision for '%s' -- conflict aborted"
-msgstr "encontrado '%s' como provisional para '%s' -- conflicto abortado"
-
-#: lib/libalpm/sync.c:808
-#, c-format
-msgid "%s is already in the cache\n"
-msgstr "%s ya esta en la cache\n"
-
-#: lib/libalpm/sync.c:819
-#, c-format
-msgid "no %s cache exists, creating...\n"
-msgstr "no existe la cache %s, creando...\n"
-
-#: lib/libalpm/sync.c:820
-#, c-format
-msgid "warning: no %s cache exists, creating..."
-msgstr "advertencia: no existe la cache %s. creándola..."
+#: lib/libalpm/sync.c:628
+#, fuzzy, c-format
+msgid "malloc failure: could not allocate %zd bytes\n"
+msgstr "falla en malloc: no se pudo alocar %d bytes"
#: lib/libalpm/sync.c:825
-msgid "couldn't create package cache, using /tmp instead\n"
-msgstr "no se pudo crear la cache de paquetes, usando /tmp en su lugar\n"
-
-#: lib/libalpm/sync.c:826
-msgid "warning: couldn't create package cache, using /tmp instead"
-msgstr ""
-"advertencia: no se pudo crear la cache para paquetes. usando /tmp en su lugar"
-
-#: lib/libalpm/sync.c:833
#, c-format
-msgid "failed to retrieve some files from %s\n"
-msgstr "fallo al descargar algunos archivos desde %s\n"
+msgid "command: %s\n"
+msgstr ""
-#: lib/libalpm/sync.c:863 lib/libalpm/sync.c:875
-#, c-format
-msgid "can't get md5 or sha1 checksum for package %s\n"
+#: lib/libalpm/sync.c:888 lib/libalpm/sync.c:896
+#, fuzzy, c-format
+msgid "can't get md5 checksum for file %s\n"
msgstr "no se pudo verificar md5 o sha1 para el paquete %s\n"
-#: lib/libalpm/sync.c:894
-#, c-format
-msgid "archive %s was corrupted (bad MD5 or SHA1 checksum)\n"
+#: lib/libalpm/sync.c:910
+#, fuzzy, c-format
+msgid "file %s was corrupted (bad MD5 checksum)\n"
msgstr ""
"el archivo %s estaba corrupto (no coincidió la verificación MD5 o SHA1)\n"
-#: lib/libalpm/sync.c:896
+#: lib/libalpm/sync.c:1056
#, c-format
-msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr "el archivo %s esta corrupto (verificación MD5 o SHA1 errónea)\n"
+msgid "failed to retrieve some files from %s\n"
+msgstr "fallo al descargar algunos archivos desde %s\n"
-#: lib/libalpm/sync.c:917
-msgid "could not create removal transaction"
+#: lib/libalpm/sync.c:1137
+#, fuzzy
+msgid "could not create removal transaction\n"
msgstr "no se pudo crear la operación de eliminación"
-#: lib/libalpm/sync.c:923
-msgid "could not initialize the removal transaction"
+#: lib/libalpm/sync.c:1143
+#, fuzzy
+msgid "could not initialize the removal transaction\n"
msgstr "no se pudo iniciar la operación de eliminación"
-#: lib/libalpm/sync.c:943
-msgid "removing conflicting and to-be-replaced packages"
-msgstr "quitando paquetes conflictivos y los que serán reemplazados"
-
-#: lib/libalpm/sync.c:945
-msgid "could not prepare removal transaction"
+#: lib/libalpm/sync.c:1165
+#, fuzzy
+msgid "could not prepare removal transaction\n"
msgstr "no se pudo preparar la operación de eliminación"
-#: lib/libalpm/sync.c:951
-msgid "could not commit removal transaction"
+#: lib/libalpm/sync.c:1171
+#, fuzzy
+msgid "could not commit removal transaction\n"
msgstr "no se pudo asignar la operación de quitado"
-#: lib/libalpm/sync.c:958
-msgid "installing packages"
-msgstr "instalando paquetes"
-
-#: lib/libalpm/sync.c:961
-msgid "could not create transaction"
+#: lib/libalpm/sync.c:1182
+#, fuzzy
+msgid "could not create transaction\n"
msgstr "no se pudo crear la operación"
-#: lib/libalpm/sync.c:966
-msgid "could not initialize transaction"
+#: lib/libalpm/sync.c:1187
+#, fuzzy
+msgid "could not initialize transaction\n"
msgstr "no se pudo iniciar la operación"
-#: lib/libalpm/sync.c:989
-msgid "could not prepare transaction"
+#: lib/libalpm/sync.c:1214
+#, fuzzy
+msgid "could not prepare transaction\n"
msgstr "no se pudo preparar la transacción"
-#: lib/libalpm/sync.c:1001
-msgid "updating database for replaced packages' dependencies"
-msgstr ""
-"actuando la base de datos para las dependencias de los paquetes reemplazados"
+#: lib/libalpm/sync.c:1219
+#, fuzzy
+msgid "could not commit transaction\n"
+msgstr "no se pudo hacer la transacción"
-#: lib/libalpm/sync.c:1030
-#, c-format
-msgid "could not update requiredby for database entry %s-%s"
-msgstr "no se pudo actualizar \"requiredby\" para la entrada %s-%s"
+#: lib/libalpm/trans.c:214
+#, fuzzy, c-format
+msgid "could not remove lock file %s\n"
+msgstr "no se pudo quitar el archivo de bloqueo %s"
-#: lib/libalpm/sync.c:1039
+#: lib/libalpm/trans.c:483
#, c-format
-msgid "could not update new database entry %s-%s"
-msgstr "no se pudo actualizar la nueva entrada a la base de datos %s-%s"
+msgid "No /bin/sh in root dir (%s), aborting scriptlet\n"
+msgstr ""
-#: lib/libalpm/sync.c:1079
-#, c-format
-msgid "found package '%s-%s' in sync"
-msgstr "paquete encontrado '%s-%s' en la base de sincronización"
+#: lib/libalpm/trans.c:494
+#, fuzzy
+msgid "could not create temp directory\n"
+msgstr "no se puede crear el directorio temporal "
-#: lib/libalpm/sync.c:1085
-#, c-format
-msgid "package '%s' not found in sync"
-msgstr "el paquete '%s' no fue encontrado en la base de sincronización"
+#: lib/libalpm/trans.c:536
+#, fuzzy, c-format
+msgid "could not change directory to %s (%s)\n"
+msgstr "no se pudo cambiar el directorio a %s (%s)"
-# No me agrada mucho esta traducción. Habrá una mejor manera de indicarlo?
-#: lib/libalpm/trans.c:271
-#, c-format
-msgid "updating dependency packages 'requiredby' fields for %s-%s"
-msgstr ""
-"actualizando los campos 'requeridospor' de los paquetes de dependencias "
-"para %s-%s"
+#: lib/libalpm/trans.c:554
+#, fuzzy, c-format
+msgid "could not fork a new process (%s)\n"
+msgstr "no se pudo crear un nuevo proceso (%s)"
-#: lib/libalpm/trans.c:274
-msgid "package has no dependencies, no other packages to update"
-msgstr "el paquete no posee dependencias, no hay más paquetes para actualizar"
+#: lib/libalpm/trans.c:564
+#, fuzzy, c-format
+msgid "could not change the root directory (%s)\n"
+msgstr "no se pudo cambiar el directorio raíz (%s)"
-#: lib/libalpm/trans.c:311 lib/libalpm/trans.c:341
-#, c-format
-msgid "updating 'requiredby' field for package '%s'"
-msgstr "actualizando el campo 'requiredby' para '%s'"
+#: lib/libalpm/trans.c:569
+#, fuzzy, c-format
+msgid "could not change directory to / (%s)\n"
+msgstr "no se pudo cambiar el directorio a / (%s)"
-#: lib/libalpm/trans.c:326 lib/libalpm/trans.c:356
-#, c-format
-msgid "could not update 'requiredby' database entry %s-%s"
-msgstr "no se pudo actualizar \"requiredby\" para la entrada %s-%s"
+#: lib/libalpm/trans.c:578
+#, fuzzy, c-format
+msgid "call to popen failed (%s)"
+msgstr "llamada a waitpid fallida (%s)"
-#: lib/libalpm/trans.c:333
-#, c-format
-msgid "could not find dependency '%s'"
-msgstr "no se pudo encontrar la dependencia '%s'"
+#: lib/libalpm/trans.c:597
+#, fuzzy, c-format
+msgid "call to waitpid failed (%s)\n"
+msgstr "llamada a waitpid fallida (%s)"
-#: lib/libalpm/util.c:142
-#, c-format
-msgid "failed to make path '%s' : %s"
+#: lib/libalpm/trans.c:606
+msgid "scriptlet failed to execute correctly\n"
+msgstr ""
+
+#: lib/libalpm/trans.c:615
+#, fuzzy, c-format
+msgid "could not remove tmpdir %s\n"
+msgstr "no se pudo quitar el directorio temporal %s"
+
+#: lib/libalpm/util.c:204
+#, fuzzy, c-format
+msgid "failed to make path '%s' : %s\n"
msgstr "fallo al crear la ruta '%s' : %s"
-#: lib/libalpm/util.c:280
+#: lib/libalpm/util.c:389
#, c-format
msgid "could not open %s: %s\n"
msgstr "no se pudo abrir %s: %s\n"
-#: lib/libalpm/util.c:293
+#: lib/libalpm/util.c:573
#, c-format
-msgid "could not extract %s: %s\n"
-msgstr "no se pudo extraer %s: %s\n"
+msgid "no %s cache exists, creating...\n"
+msgstr "no existe la cache %s, creando...\n"
-#: lib/libalpm/util.c:350
-#, c-format
-msgid "logaction called: %s"
-msgstr "acción de registro llamada: %s"
+#: lib/libalpm/util.c:593
+#, fuzzy
+msgid "couldn't create package cache, using /tmp instead\n"
+msgstr "no se pudo crear la cache de paquetes, usando /tmp en su lugar\n"
-#: lib/libalpm/util.c:445
-msgid "could not create temp directory"
-msgstr "no se puede crear el directorio temporal "
+#: lib/libalpm/util.c:643
+#, fuzzy, c-format
+msgid "md5: %s can't be opened\n"
+msgstr "%s no puede ser abierto\n"
-#: lib/libalpm/util.c:472
-#, c-format
-msgid "could not change directory to %s (%s)"
-msgstr "no se pudo cambiar el directorio a %s (%s)"
+#: lib/libalpm/util.c:645
+#, fuzzy, c-format
+msgid "md5: %s can't be read\n"
+msgstr "%s no puede ser abierto\n"
-#: lib/libalpm/util.c:476
-#, c-format
-msgid "executing %s script..."
-msgstr "ejecutando el script %s..."
+#~ msgid "please remove '%s' first, using -Rd"
+#~ msgstr "por favor quitar '%s' primero, usando -Rd"
-#: lib/libalpm/util.c:489
-#, c-format
-msgid "could not fork a new process (%s)"
-msgstr "no se pudo crear un nuevo proceso (%s)"
+#~ msgid "could not extract %s (%s)"
+#~ msgstr "no se pudo extraer %s (%s)"
-#: lib/libalpm/util.c:496
-#, c-format
-msgid "chrooting in %s"
-msgstr "haciendo cambio de raiz en %s"
+#~ msgid "could not update provision '%s' from '%s'"
+#~ msgstr "no se pudo actualizar la provisión '%s' desde '%s'"
-#: lib/libalpm/util.c:498
-#, c-format
-msgid "could not change the root directory (%s)"
-msgstr "no se pudo cambiar el directorio raíz (%s)"
+#, fuzzy
+#~ msgid "%s: description file is missing"
+#~ msgstr "%s: error de sintaxis en la linea de descripción de archivos %d"
-#: lib/libalpm/util.c:502
-#, c-format
-msgid "could not change directory to / (%s)"
-msgstr "no se pudo cambiar el directorio a / (%s)"
+#~ msgid "malloc failed: could not allocate %d bytes"
+#~ msgstr "malloc falló: no se pudo alocar %d bytes"
-#: lib/libalpm/util.c:506
-#, c-format
-msgid "executing \"%s\""
-msgstr "ejecutando \"%s\""
+#~ msgid ""
+#~ "cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+#~ msgstr ""
+#~ "no se pudo resolver dependecias para \"%s\" (\"%s\" no está en las listas "
+#~ "de paquetes)"
-#: lib/libalpm/util.c:509
-#, c-format
-msgid "call to popen failed (%s)"
-msgstr "llamada a popen fallida (%s)"
+# canonicalize.. no supe traducirla bien
+#~ msgid "cannot canonicalize specified root path '%s'"
+#~ msgstr "no se pudo obtener el la ruta canonica de la raiz especificada '%s'"
-#: lib/libalpm/util.c:541
-#, c-format
-msgid "call to waitpid failed (%s)"
-msgstr "llamada a waitpid fallida (%s)"
+#~ msgid "could not get sha1sum for package %s-%s"
+#~ msgstr "no se pudo obtener la verificación sha1 para %s-%s"
-#: lib/libalpm/util.c:550
-#, c-format
-msgid "could not remove tmpdir %s"
-msgstr "no se pudo quitar el directorio temporal %s"
+#~ msgid "sha1sums do not match for package %s-%s"
+#~ msgstr "la verificación sha1 no coincide para %s-%s"
-#: lib/libalpm/util.c:568
-#, c-format
-msgid "cannot read disk space information from %s: %s"
-msgstr ""
+#~ msgid "cannot remove file %s: %s"
+#~ msgstr "no se pudo quitar el archivo %s: %s"
-#: lib/libalpm/util.c:609
-#, c-format
-msgid "check_freespace: total pkg size: %lld, disk space: %lld"
-msgstr "verificando espacio libre: tamaño total: %lld, espacio en disco: %lld"
+#~ msgid "sha1: %s can't be opened\n"
+#~ msgstr "sha1: %s no puede ser abierto\n"
-#: lib/libalpm/versioncmp.c:279
-#, c-format
-msgid "depcmp: %s-%s %s %s-%s => %s"
-msgstr "depcmp: %s-%s %s %s-%s => %s"
+#~ msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
+#~ msgstr "el archivo %s esta corrupto (verificación MD5 o SHA1 errónea)\n"
-#: lib/libalpm/versioncmp.c:284
-#, c-format
-msgid "depcmp: %s-%s %s %s => %s"
-msgstr "depcmp: %s-%s %s %s => %s"
+#~ msgid "could not update requiredby for database entry %s-%s"
+#~ msgstr "no se pudo actualizar \"requiredby\" para la entrada %s-%s"
+
+#~ msgid "could not update new database entry %s-%s"
+#~ msgstr "no se pudo actualizar la nueva entrada a la base de datos %s-%s"
+
+#~ msgid "could not update 'requiredby' database entry %s-%s"
+#~ msgstr "no se pudo actualizar \"requiredby\" para la entrada %s-%s"
diff --git a/lib/libalpm/po/fr.po b/lib/libalpm/po/fr.po
index d317e575..3ae1dff0 100644
--- a/lib/libalpm/po/fr.po
+++ b/lib/libalpm/po/fr.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.0.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-09-16 16:55-0500\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
"PO-Revision-Date: 2007-04-17 12:45+0100\n"
"Last-Translator: nam <37ii11@altern.org>\n"
"Language-Team: solsTiCe d'Hiver <solstice.dhiver@laposte.net>\n"
@@ -15,1664 +15,733 @@ msgstr ""
"X-Poedit-Language: French\n"
"X-Poedit-Country: FRANCE\n"
-#: lib/libalpm/add.c:77
-#, c-format
-msgid "loading target '%s'"
-msgstr "chargement de la cible '%s'"
-
-#: lib/libalpm/add.c:122
-#, c-format
-msgid "replacing older version %s-%s by %s in target list"
+#: lib/libalpm/add.c:88
+#, fuzzy, c-format
+msgid "replacing older version %s-%s by %s in target list\n"
msgstr ""
"remplacement de l'ancienne version %s-%s par %s dans la liste des cibles"
-#: lib/libalpm/add.c:131
-#, c-format
-msgid "newer version %s-%s is in the target list -- skipping"
+#: lib/libalpm/add.c:97
+#, fuzzy, c-format
+msgid "newer version %s-%s is in the target list -- skipping\n"
msgstr ""
"une version plus récente %s-%s est dans la liste des cibles -- paquet ignoré"
-#: lib/libalpm/add.c:138
-#, c-format
-msgid "reading '%s' metadata"
-msgstr "lecture des méta-données '%s'"
-
-#: lib/libalpm/add.c:191 lib/libalpm/remove.c:111
-msgid "looking for unsatisfied dependencies"
-msgstr "recherche des dépendances non satisfaites"
+#: lib/libalpm/add.c:168
+msgid "conflicting packages were found in the target list\n"
+msgstr ""
-#: lib/libalpm/add.c:203 lib/libalpm/sync.c:483
-msgid "looking for conflicts"
-msgstr "recherche des conflits"
+#: lib/libalpm/add.c:169
+msgid "you cannot install two conflicting packages at the same time\n"
+msgstr ""
-#: lib/libalpm/add.c:208
-msgid "replacing packages with -A and -U is not supported yet"
+#: lib/libalpm/add.c:172
+#, fuzzy
+msgid "replacing packages with -A and -U is not supported yet\n"
msgstr "remplacer un paquet avec -A ou -U n'est pas encore possible"
-#: lib/libalpm/add.c:209
-#, c-format
-msgid "please remove '%s' first, using -Rd"
-msgstr "veuillez supprimer '%s' d'abord, en utilisant -Rd"
-
-#: lib/libalpm/add.c:250 lib/libalpm/remove.c:147
-msgid "sorting by dependencies"
-msgstr "tri par dépendances"
-
-#: lib/libalpm/add.c:262
-msgid "cleaning up"
-msgstr "nettoyage"
-
-#: lib/libalpm/add.c:277
-msgid "looking for file conflicts"
-msgstr "recherche de conflits entre fichiers"
-
-#: lib/libalpm/add.c:346
-#, c-format
-msgid "upgrading package %s-%s"
-msgstr "mise à jour du paquet %s-%s"
-
-#: lib/libalpm/add.c:370
-#, c-format
-msgid "adding package %s-%s"
-msgstr "ajout du paquet %s-%s"
-
-#: lib/libalpm/add.c:383
-#, c-format
-msgid "removing old package first (%s-%s)"
-msgstr "suppression préalable de l'ancien paquet (%s-%s)"
+#: lib/libalpm/add.c:173
+msgid "you can replace packages manually using -Rd and -U\n"
+msgstr ""
-#: lib/libalpm/add.c:411
+#: lib/libalpm/add.c:365
#, c-format
-msgid "adding %s to the NoUpgrade array temporarily"
-msgstr "ajout provisoire de %s parmi les paquets à ne pas mettre à jour"
-
-#: lib/libalpm/add.c:429
-msgid "extracting files"
-msgstr "extraction des fichiers"
-
-# j'ai traduit chaque fois "could not" par "a échoué"
-#: lib/libalpm/add.c:444 lib/libalpm/util.c:465
-msgid "could not get current working directory"
-msgstr "déterminer le répertoire courant a échoué"
+msgid ""
+"directory permissions differ on %s\n"
+"filesystem: %o package: %o\n"
+msgstr ""
-#: lib/libalpm/add.c:500 lib/libalpm/add.c:501
+#: lib/libalpm/add.c:392
#, c-format
-msgid "%s is in NoExtract, skipping extraction"
-msgstr "%s est dans la liste des paquets NoExtract -- extraction non effectuée"
+msgid "extract: symlink %s does not point to dir\n"
+msgstr ""
-#: lib/libalpm/add.c:508
+#: lib/libalpm/add.c:399
#, c-format
-msgid "%s is in trans->skip_add, skipping extraction"
-msgstr "%s est dans trans->skip_add, extraction ignorée"
+msgid "extract: not overwriting dir with file %s\n"
+msgstr ""
-#: lib/libalpm/add.c:554 lib/libalpm/add.c:555 lib/libalpm/add.c:706
-#, c-format
-msgid "could not extract %s (%s)"
+#: lib/libalpm/add.c:454 lib/libalpm/add.c:598 lib/libalpm/util.c:422
+#, fuzzy, c-format
+msgid "could not extract %s (%s)\n"
msgstr "l'extraction de %s (%s) a échoué"
-#: lib/libalpm/add.c:598
-#, c-format
-msgid "checking md5 hashes for %s"
-msgstr "vérification de la 'signature' md5 pour %s"
-
-#: lib/libalpm/add.c:600
-#, c-format
-msgid "checking sha1 hashes for %s"
-msgstr "vérification de la 'signature' sha1 pour %s"
-
-#: lib/libalpm/add.c:602
-#, c-format
-msgid "current: %s"
-msgstr "courant: %s"
-
-#: lib/libalpm/add.c:603
-#, c-format
-msgid "new: %s"
-msgstr "nouveau: %s"
-
-#: lib/libalpm/add.c:604
-#, c-format
-msgid "original: %s"
-msgstr "original: %s"
-
-#: lib/libalpm/add.c:616
-#, c-format
-msgid "could not rename %s (%s)"
+#: lib/libalpm/add.c:505
+#, fuzzy, c-format
+msgid "could not rename %s (%s)\n"
msgstr "renommer %s (%s) a échoué"
-#: lib/libalpm/add.c:617
-#, c-format
-msgid "error: could not rename %s (%s)"
-msgstr "erreur: renommer %s (%s) a échoué"
-
-#: lib/libalpm/add.c:623 lib/libalpm/add.c:642
-#, c-format
-msgid "could not copy tempfile to %s (%s)"
+#: lib/libalpm/add.c:512 lib/libalpm/add.c:532 lib/libalpm/trans.c:508
+#, fuzzy, c-format
+msgid "could not copy tempfile to %s (%s)\n"
msgstr "la copie du fichier temporaire vers %s (%s) a échoué"
-#: lib/libalpm/add.c:624
-#, c-format
-msgid "error: could not copy tempfile to %s (%s)"
-msgstr "erreur: la copie du fichier temporaire vers %s (%s) a échoué"
-
-#: lib/libalpm/add.c:628 lib/libalpm/remove.c:247
-#, c-format
-msgid "%s saved as %s"
+#: lib/libalpm/add.c:517 lib/libalpm/remove.c:234
+#, fuzzy, c-format
+msgid "%s saved as %s\n"
msgstr "%s enregistré en tant que %s"
-#: lib/libalpm/add.c:629
-#, c-format
-msgid "warning: %s saved as %s"
-msgstr "avertissement: %s enregistré en tant que %s"
-
-#: lib/libalpm/add.c:639
-#, c-format
-msgid "action: installing new file: %s"
-msgstr "action: installation du nouveau fichier: %s"
-
-#: lib/libalpm/add.c:649 lib/libalpm/add.c:655 lib/libalpm/add.c:660
-msgid "action: leaving existing file in place"
-msgstr "action: quitte en préservant les fichiers existants"
-
-#: lib/libalpm/add.c:663
-msgid "action: keeping current file and installing new one with .pacnew ending"
-msgstr ""
-"action: conserve le fichier actuel et installe le nouveau avec l'extension ."
-"pacnew"
-
-#: lib/libalpm/add.c:666
-#, c-format
-msgid "could not install %s as %s: %s"
+#: lib/libalpm/add.c:556
+#, fuzzy, c-format
+msgid "could not install %s as %s: %s\n"
msgstr "l'installation de %s en tant que %s: %s a échoué"
-#: lib/libalpm/add.c:667
-#, c-format
-msgid "error: could not install %s as %s: %s"
-msgstr "erreur: l'installation de %s en tant que %s: %s a échoué"
-
-#: lib/libalpm/add.c:669
-#, c-format
-msgid "%s installed as %s"
+#: lib/libalpm/add.c:559
+#, fuzzy, c-format
+msgid "%s installed as %s\n"
msgstr "%s installé en tant que %s"
-#: lib/libalpm/add.c:670
-#, c-format
-msgid "warning: %s installed as %s"
-msgstr "avertissement: %s installé en tant que %s"
-
-#: lib/libalpm/add.c:684
-#, c-format
-msgid "%s is in NoUpgrade -- skipping"
-msgstr "%s est parmi les paquets à ne pas mettre à jour -- ignoré"
-
-#: lib/libalpm/add.c:685
-#, c-format
-msgid "extracting %s as %s.pacnew"
+#: lib/libalpm/add.c:576
+#, fuzzy, c-format
+msgid "extracting %s as %s.pacnew\n"
msgstr "extraction de %s comme %s.pacnew"
-#: lib/libalpm/add.c:686
-#, c-format
-msgid "warning: extracting %s as %s.pacnew"
-msgstr "avertissement: extraction de %s comme %s.pacnew"
-
-#: lib/libalpm/add.c:689
-#, c-format
-msgid "extracting %s"
-msgstr "extraction de %s"
-
-#: lib/libalpm/add.c:707
-#, c-format
-msgid "error: could not extract %s (%s)"
-msgstr "erreur: l'extraction de %s (%s) a échoué"
-
-#: lib/libalpm/add.c:719
-#, c-format
-msgid "appending backup entry for %s"
-msgstr "ajoute une entrée de sauvegarde pour %s"
+# j'ai traduit chaque fois "could not" par "a échoué"
+#: lib/libalpm/add.c:711 lib/libalpm/trans.c:529
+#, fuzzy
+msgid "could not get current working directory\n"
+msgstr "déterminer le répertoire courant a échoué"
-#: lib/libalpm/add.c:751 lib/libalpm/add.c:753
-#, c-format
-msgid "errors occurred while %s %s"
+#: lib/libalpm/add.c:765
+#, fuzzy, c-format
+msgid "problem occurred while upgrading %s\n"
msgstr "des erreurs sont survenues pendant %s %s"
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "upgrading"
-msgstr "mise à jour"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "installing"
-msgstr "installation"
-
-#: lib/libalpm/add.c:771
-#, c-format
-msgid "provision '%s' has been removed from package %s (%s => %s)"
-msgstr "la condition '%s' a été supprimée du paquet %s (%s => %s)"
-
-#: lib/libalpm/add.c:783
-#, c-format
-msgid "updating '%s' due to provision change (%s)"
-msgstr "mise à jour de '%s' suite à un changement de contenu (%s)"
-
-#: lib/libalpm/add.c:787 lib/libalpm/add.c:788
-#, c-format
-msgid "could not update provision '%s' from '%s'"
-msgstr "la mise à jour du contenu '%s' dans '%s' a échoué"
-
-#: lib/libalpm/add.c:801 lib/libalpm/remove.c:336
-msgid "updating database"
-msgstr "mise à jour de la base de données"
-
-#: lib/libalpm/add.c:802
-#, c-format
-msgid "adding database entry '%s'"
-msgstr "ajout de l'entrée de base de données '%s'"
+#: lib/libalpm/add.c:770
+#, fuzzy, c-format
+msgid "problem occurred while installing %s\n"
+msgstr "des erreurs sont survenues pendant %s %s"
-#: lib/libalpm/add.c:805 lib/libalpm/add.c:807
-#, c-format
-msgid "could not update database entry %s-%s"
+#: lib/libalpm/add.c:785
+#, fuzzy, c-format
+msgid "could not update database entry %s-%s\n"
msgstr "la mise à jour l'entrée de base de données %s-%s a échoué"
-#: lib/libalpm/add.c:813
-#, c-format
-msgid "could not add entry '%s' in cache"
+#: lib/libalpm/add.c:793
+#, fuzzy, c-format
+msgid "could not add entry '%s' in cache\n"
msgstr "l'ajout au cache de l'entrée '%s' a échoué"
-#: lib/libalpm/add.c:843 lib/libalpm/remove.c:363 lib/libalpm/sync.c:1055
-#, c-format
-msgid "running \"ldconfig -r %s\""
-msgstr "exécution de \"ldconfig -r %s\""
-
-#: lib/libalpm/alpm.c:116
-#, c-format
-msgid "removing DB %s, %d remaining..."
-msgstr "suppression de la DB %s, %d restant..."
-
-#: lib/libalpm/alpm.c:181
-#, c-format
-msgid "unregistering database '%s'"
-msgstr "désenregistrement de la base de données '%s'"
-
-#: lib/libalpm/alpm.c:186
-#, c-format
-msgid "closing database '%s'"
-msgstr "fermeture de la base de données '%s'"
-
-#: lib/libalpm/alpm.c:232
-#, c-format
-msgid ""
-"adding new server to database '%s': protocol '%s', server '%s', path '%s'"
-msgstr ""
-"ajout d'un nouveau serveur à la base '%s': protocole '%s', serveur '%s', "
-"chemin '%s'"
-
-#: lib/libalpm/alpm.c:236
-#, c-format
-msgid "serverlist flushed for '%s'"
-msgstr "liste des serveurs mise à jour pour '%s'"
-
-#: lib/libalpm/alpm.c:279
-#, c-format
-msgid "failed to get lastupdate time for %s (no big deal)"
-msgstr ""
-"échec de récupération de la date de dernière mise à jour pour %s (problème "
-"mineur)"
-
-#: lib/libalpm/alpm.c:298
-#, c-format
-msgid "failed to sync db: %s [%d]"
-msgstr "échec de synchronisation de la base de données: %s [%d]"
-
-#: lib/libalpm/alpm.c:302
-#, c-format
-msgid "sync: new mtime for %s: %s"
-msgstr "sync: nouveau mtime pour %s: %s"
-
-#: lib/libalpm/alpm.c:308
-#, c-format
-msgid "flushing database %s%s"
-msgstr "mise à jour de la base de données %s%s"
-
-#: lib/libalpm/alpm.c:312
-#, c-format
-msgid "could not remove database entry %s%s"
-msgstr "la suppression de l'entrée de base de données %s%s a échoué"
-
-#: lib/libalpm/alpm.c:481
-#, c-format
-msgid "could not get sha1sum for package %s-%s"
-msgstr "l'obtention de la 'signature' sha1 pour le paquet %s-%s a échoué"
-
-#: lib/libalpm/alpm.c:487
-#, c-format
-msgid "sha1sums for package %s-%s match"
-msgstr "les 'signatures' sha1 correspondent pour le paquet %s-%s"
-
-#: lib/libalpm/alpm.c:490
-#, c-format
-msgid "sha1sums do not match for package %s-%s"
-msgstr "les 'signatures' sha1 ne correspondent pas pour le paquet %s-%s"
-
-#: lib/libalpm/alpm.c:525
-#, c-format
-msgid "could not get md5sum for package %s-%s"
-msgstr "l'obtention de la 'signature' md5 pour le paquet %s-%s a échoué"
-
-#: lib/libalpm/alpm.c:531
-#, c-format
-msgid "md5sums for package %s-%s match"
-msgstr "les 'signatures' md5 correspondent pour le paquet %s-%s"
-
-#: lib/libalpm/alpm.c:534
-#, c-format
-msgid "md5sums do not match for package %s-%s"
-msgstr "les 'signatures' md5 ne correspondent pas pour le paquet %s-%s"
-
-#: lib/libalpm/alpm.c:783
-#, c-format
-msgid "could not remove lock file %s"
-msgstr "la suppression du fichier de verrouillage %s a échoué"
-
-#: lib/libalpm/alpm.c:784
-#, c-format
-msgid "warning: could not remove lock file %s"
-msgstr "avertissement: la suppression du fichier de verrouillage %s a échoué"
-
-#: lib/libalpm/alpm.c:920
-#, c-format
-msgid "config: new section '%s'"
-msgstr "config: nouvelle section '%s'"
-
-#: lib/libalpm/alpm.c:951
-msgid "config: nopassiveftp"
-msgstr "config: nopassiveftp"
-
-#: lib/libalpm/alpm.c:954
-msgid "config: usesyslog"
-msgstr "config: usesyslog"
-
-#: lib/libalpm/alpm.c:957
-msgid "config: chomp"
-msgstr "config: chomp"
-
-#: lib/libalpm/alpm.c:960
-msgid "config: usecolor"
-msgstr "config: usecolor"
-
-#: lib/libalpm/alpm.c:969
-#, c-format
-msgid "config: including %s"
-msgstr "config: inclusion de %s"
-
-#: lib/libalpm/alpm.c:979 lib/libalpm/alpm.c:984
-#, c-format
-msgid "config: noupgrade: %s"
-msgstr "config: noupgrade: %s"
-
-#: lib/libalpm/alpm.c:992 lib/libalpm/alpm.c:997
-#, c-format
-msgid "config: noextract: %s"
-msgstr "config: noextract: %s"
-
-#: lib/libalpm/alpm.c:1005 lib/libalpm/alpm.c:1010
-#, c-format
-msgid "config: ignorepkg: %s"
-msgstr "config: ignorepkg: %s"
-
-#: lib/libalpm/alpm.c:1018 lib/libalpm/alpm.c:1023
-#, c-format
-msgid "config: holdpkg: %s"
-msgstr "config: holdpkg: %s"
-
-#: lib/libalpm/alpm.c:1030
-#, c-format
-msgid "config: dbpath: %s"
-msgstr "config: dbpath: %s"
-
-#: lib/libalpm/alpm.c:1037
-#, c-format
-msgid "config: cachedir: %s"
-msgstr "config: cachedir: %s"
-
-#: lib/libalpm/alpm.c:1044
-#, c-format
-msgid "config: rootdir: %s"
-msgstr "config: rootdir: %s"
-
-#: lib/libalpm/alpm.c:1047
-#, c-format
-msgid "config: logfile: %s"
-msgstr "config: logfile: %s"
-
-#: lib/libalpm/alpm.c:1050
-#, c-format
-msgid "config: xfercommand: %s"
-msgstr "config: xfercommand: %s"
-
-#: lib/libalpm/alpm.c:1055
-#, c-format
-msgid "config: upgradedelay: %d"
-msgstr "config: upgradedelay: %d"
-
-#: lib/libalpm/alpm.c:1093 lib/libalpm/sync.c:107
-msgid "checking for package replacements"
-msgstr "analyse de remplacements possibles pour le paquet"
-
-#: lib/libalpm/alpm.c:1104 lib/libalpm/sync.c:123
-#, c-format
-msgid "checking replacement '%s' for package '%s'"
-msgstr "analyse du remplacement '%s' pour le paquet '%s'"
-
-#: lib/libalpm/alpm.c:1107 lib/libalpm/sync.c:125
-#, c-format
-msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)"
-msgstr "%s-%s: ignore la mise à jour du paquet (à remplacer par %s-%s)"
-
-#: lib/libalpm/alpm.c:1137 lib/libalpm/sync.c:160
-#, c-format
-msgid "%s-%s elected for upgrade (to be replaced by %s-%s)"
-msgstr "%s-%s sélectionné pour mise à jour (à remplacer par %s-%s)"
-
-#: lib/libalpm/alpm.c:1159 lib/libalpm/sync.c:194
-#, c-format
-msgid "'%s' not found in sync db -- skipping"
-msgstr "'%s' non trouvé dans la liste de synchronisation -- ignoré"
-
-#: lib/libalpm/alpm.c:1173 lib/libalpm/sync.c:208 lib/libalpm/sync.c:509
-#, c-format
-msgid "'%s' is already elected for removal -- skipping"
-msgstr "'%s' est déjà sélectionné pour suppression -- ignoré"
-
-#: lib/libalpm/alpm.c:1179
-#, c-format
-msgid "%s elected for upgrade (%s => %s)"
-msgstr "%s sélectionné pour mise à jour (%s => %s)"
-
-#: lib/libalpm/be_files.c:61
-#, c-format
-msgid "unpacking database '%s'"
-msgstr "décompression de la base de données '%s'"
-
-#: lib/libalpm/be_files.c:78
-#, c-format
-msgid "opening database from path '%s'"
-msgstr "ouverture de la base de données à partir du chemin '%s'"
-
-#: lib/libalpm/be_files.c:182
-#, c-format
-msgid "db scan could not find package: %s"
-msgstr "l'analyse de la base de données n'a pas pu trouver le paquet: %s"
-
-#: lib/libalpm/be_files.c:186
-#, c-format
-msgid "invalid name for database entry '%s'"
+#: lib/libalpm/be_files.c:223
+#, fuzzy, c-format
+msgid "invalid name for database entry '%s'\n"
msgstr "nom invalide pour l'entrée de base de données '%s'"
-#: lib/libalpm/be_files.c:221
-msgid "invalid package entry provided to _alpm_db_read, skipping"
-msgstr "paquet invalide fournit à _alpm_db_read, et ignoré"
-
-#: lib/libalpm/be_files.c:226
-#, c-format
-msgid ""
-"request to read database info for a file-based package '%s', skipping..."
-msgstr ""
-"demande de lecture de la base de données pour un paquet type fichier '%s', "
-"ignoré..."
-
-#: lib/libalpm/be_files.c:239
-#, c-format
-msgid "loading package data for %s : level=%d"
+#: lib/libalpm/be_files.c:275
+#, fuzzy, c-format
+msgid "loading package data for %s : level=%d\n"
msgstr "chargement des données du paquet %s : niveau=%d"
-# j'ai traduit chaque fois "cannot" par "impossible de"
-#: lib/libalpm/be_files.c:247
-#, c-format
-msgid "cannot find '%s-%s' in db '%s'"
-msgstr "impossible de trouver %s-%s dans la base de données '%s'"
-
-#: lib/libalpm/be_files.c:255 lib/libalpm/be_files.c:401
-#: lib/libalpm/be_files.c:424 lib/libalpm/be_files.c:515
-#: lib/libalpm/be_files.c:605 lib/libalpm/be_files.c:632
-#: lib/libalpm/package.c:208
-#, c-format
-msgid "could not open file %s: %s"
+#: lib/libalpm/be_files.c:292 lib/libalpm/be_files.c:429
+#: lib/libalpm/be_files.c:452 lib/libalpm/be_files.c:563
+#: lib/libalpm/be_files.c:641 lib/libalpm/be_files.c:669
+#: lib/libalpm/package.c:787
+#, fuzzy, c-format
+msgid "could not open file %s: %s\n"
msgstr "l'ouverture du fichier %s: %s a échoué"
-#: lib/libalpm/be_files.c:512
-#, c-format
-msgid "writing %s-%s DESC information back to db"
-msgstr "écriture des informations DESC pour %s-%s dans la base de données"
-
-#: lib/libalpm/be_files.c:602
-#, c-format
-msgid "writing %s-%s FILES information back to db"
-msgstr "écriture des informations FILES pour %s-%s dans la base de données"
-
-#: lib/libalpm/be_files.c:629
-#, c-format
-msgid "writing %s-%s DEPENDS information back to db"
-msgstr "écriture des informations DEPENDS pour %s-%s dans la base de données"
-
-#: lib/libalpm/cache.c:59
-#, c-format
-msgid "loading package cache for repository '%s'"
-msgstr "chargement du cache de paquets pour le dépôt '%s'"
-
-#: lib/libalpm/cache.c:64
-#, c-format
-msgid "adding '%s' to package cache for db '%s'"
+#: lib/libalpm/cache.c:62
+#, fuzzy, c-format
+msgid "adding '%s' to package cache for db '%s'\n"
msgstr "ajout de '%s' au cache de paquets pour la base de données '%s'"
-#: lib/libalpm/cache.c:85
-#, c-format
-msgid "freeing package cache for repository '%s'"
-msgstr "nettoyage du cache de paquets pour le dépot '%s'"
-
-#: lib/libalpm/cache.c:109
-#, c-format
-msgid "error: pkgcache is NULL for db '%s'"
-msgstr "erreur: pkgcache est NULL pour la base de données '%s'"
-
-#: lib/libalpm/cache.c:129
-#, c-format
-msgid "adding entry '%s' in '%s' cache"
-msgstr "ajout de l'entrée '%s' dans '%s' cache"
-
-#: lib/libalpm/cache.c:149
-#, c-format
-msgid "removing entry '%s' from '%s' cache"
-msgstr "suppression de l'entrée '%s' du '%s' cache"
-
-#: lib/libalpm/cache.c:156
-#, c-format
-msgid "cannot remove entry '%s' from '%s' cache: not found"
-msgstr "impossible de supprimer le cache '%s' de l'entrée '%s': non trouvé"
-
-#: lib/libalpm/cache.c:178
-#, c-format
-msgid "error: failed to get '%s' from NULL pkgcache"
-msgstr "erreur: échec d'obtention de '%s' de NULL pkgcache"
-
-#: lib/libalpm/cache.c:201
-#, c-format
-msgid "loading group cache for repository '%s'"
-msgstr "chargement du cache de groupe pour le dépôt '%s'"
-
-#: lib/libalpm/conflict.c:69
-#, c-format
-msgid " found conflict '%s' : package '%s'"
-msgstr " conflit détecté '%s' : paquet '%s'"
-
-#: lib/libalpm/conflict.c:78
-#, c-format
-msgid " found conflict '%s' : package '%s' provides '%s'"
-msgstr " conflit détecté '%s': paquet '%s' fournit '%s'"
-
-#: lib/libalpm/conflict.c:101 lib/libalpm/conflict.c:143
-#, c-format
-msgid "package '%s' conflicts with itself - packaging error"
-msgstr ""
-"le paquet '%s' est en conflit avec lui-même - erreur de création de paquet"
-
-#: lib/libalpm/conflict.c:107
-#, c-format
-msgid "checkconflicts: target '%s' vs db"
-msgstr "analyse des conflits: cible '%s' comparée à la base"
-
-#: lib/libalpm/conflict.c:149
-#, c-format
-msgid "checkconflicts: target '%s' vs all targets"
-msgstr "analyse des conflits: cible '%s' comparée aux cibles"
-
-#: lib/libalpm/conflict.c:181
-#, c-format
-msgid "checkconflicts: db vs target '%s'"
-msgstr "analyse des conflits: base de données comparée à la cible '%s'"
-
-#: lib/libalpm/conflict.c:201
-#, c-format
-msgid "target '%s' is also in target list, using NEW conflicts"
-msgstr ""
-"'%s' est aussi dans la liste de cibles, analyse des nouveaux conflits "
-"possibles"
-
-#: lib/libalpm/conflict.c:257
-#, c-format
-msgid "\tCONFLICTS:: %s conflicts with %s"
-msgstr "\tCONFLITS:: %s est en conflit avec %s"
-
-#: lib/libalpm/conflict.c:349 lib/libalpm/deps.c:60 lib/libalpm/deps.c:438
-#: lib/libalpm/deps.c:634 lib/libalpm/deps.c:674 lib/libalpm/group.c:45
-#: lib/libalpm/handle.c:51 lib/libalpm/package.c:82 lib/libalpm/sync.c:67
-#: lib/libalpm/sync.c:614 lib/libalpm/sync.c:630 lib/libalpm/sync.c:727
-#: lib/libalpm/trans.c:55 lib/libalpm/util.c:614 lib/libalpm/util.c:621
-#, c-format
-msgid "malloc failure: could not allocate %d bytes"
-msgstr "erreur malloc: n'a pas pu allouer %d bytes"
-
-#: lib/libalpm/db.c:64 lib/libalpm/db.c:71
-#, c-format
-msgid "malloc failed: could not allocate %d bytes"
-msgstr "malloc a echoué: n'a pas pu allouer %d bytes"
+#: lib/libalpm/db.c:285
+#, fuzzy, c-format
+msgid "could not remove database entry %s%s\n"
+msgstr "la suppression de l'entrée de base de données %s%s a échoué"
-#: lib/libalpm/db.c:167
-msgid "attempt to re-register the 'local' DB"
+#: lib/libalpm/db.c:553
+#, fuzzy
+msgid "attempt to re-register the 'local' DB\n"
msgstr "tentative de ré-enregistrer la base de données locale"
-#: lib/libalpm/db.c:175
-#, c-format
-msgid "attempt to re-register the '%s' database, using existing"
-msgstr ""
-"essai de ré-enregistrement de la base de données '%s', utilisant celle qui "
-"existe"
-
-#: lib/libalpm/db.c:181
-#, c-format
-msgid "registering database '%s'"
-msgstr "enregistrement de la base de données '%s'"
-
-#: lib/libalpm/db.c:186
-#, c-format
-msgid "database directory '%s' does not exist, creating it"
-msgstr "le répertoire de base de données '%s' n'existe pas, création"
-
-#: lib/libalpm/db.c:197
-#, c-format
-msgid "opening database '%s'"
-msgstr "ouverture de la base de données '%s'"
-
-#: lib/libalpm/deps.c:131
-msgid "started sorting dependencies"
-msgstr "début du tri des dépendances"
-
-#: lib/libalpm/deps.c:136
-msgid "possible dependency cycle detected"
-msgstr "possible cycle de dépendances détecté"
-
-#: lib/libalpm/deps.c:183
-msgid "sorting dependencies finished"
-msgstr "fin du tri des dépendances"
-
-#: lib/libalpm/deps.c:225 lib/libalpm/deps.c:310
-msgid "null package found in package list"
-msgstr "aucun paquet trouvé dans la liste des paquets"
-
-#: lib/libalpm/deps.c:230
-#, c-format
-msgid "cannot find package installed '%s'"
-msgstr "impossible de trouver le paquet installé '%s'"
-
-#: lib/libalpm/deps.c:261
-#, c-format
-msgid "checkdeps: dependency '%s' has moved from '%s' to '%s'"
-msgstr "checkdeps: dépendance '%s' a changé de '%s' à '%s'"
-
-#: lib/libalpm/deps.c:280
-#, c-format
-msgid "checkdeps: dependency '%s' satisfied by installed package '%s'"
-msgstr "checkdeps: dépendance '%s' satisfaite par le paquet installé '%s'"
-
-#: lib/libalpm/deps.c:289
-#, c-format
-msgid "checkdeps: updated '%s' won't satisfy a dependency of '%s'"
-msgstr "checkdeps: '%s' mis à jour ne satisfera pas une dépendance de '%s'"
-
-#: lib/libalpm/deps.c:359
-#, c-format
-msgid "missing dependency '%s' for package '%s'"
-msgstr "dépendance manquante '%s' pour le paquet '%s'"
-
-#: lib/libalpm/deps.c:409
-#, c-format
-msgid "checkdeps: found %s as required by %s"
-msgstr "checkdeps: trouvé %s, comme requis par %s"
+#: lib/libalpm/db.c:562 lib/libalpm/db.c:613
+#, fuzzy
+msgid "database path is undefined\n"
+msgstr "base de données non initialisée"
-#: lib/libalpm/deps.c:485
-#, c-format
-msgid "excluding %s -- explicitly installed"
-msgstr "exclusion de %s -- explicitement installé"
+#: lib/libalpm/deps.c:173
+#, fuzzy
+msgid "dependency cycle detected:\n"
+msgstr "cycle de dépendances détecté: %s"
-#: lib/libalpm/deps.c:532
+#: lib/libalpm/deps.c:175
#, c-format
-msgid "cannot find package \"%s\" or anything that provides it!"
+msgid "%s will be removed after its %s dependency\n"
msgstr ""
-"impossible de trouver le paquet \"%s\" ou quoique ce soit qui le fournisse!"
-#: lib/libalpm/deps.c:540 lib/libalpm/deps.c:551
+#: lib/libalpm/deps.c:177
#, c-format
-msgid "adding '%s' to the targets"
-msgstr "ajout de '%s' aux cibles"
-
-#: lib/libalpm/deps.c:583
-msgid "started resolving dependencies"
-msgstr "début du tri des dépendances"
-
-#: lib/libalpm/deps.c:601
-#, c-format
-msgid "%s provides dependency %s -- skipping"
-msgstr "%s fournit la dépendance %s -- ignoré"
-
-#: lib/libalpm/deps.c:630
-#, c-format
-msgid ""
-"cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+msgid "%s will be installed before its %s dependency\n"
msgstr ""
-"résolution des dépendances impossible pour \"%s\" (\"%s\" n'est pas parmi "
-"les paquets)"
-
-#: lib/libalpm/deps.c:647
-#, c-format
-msgid "dependency %s is already in the target list -- skipping"
-msgstr "la dépendance %s est déjà dans la liste de cibles -- ignorée"
-#: lib/libalpm/deps.c:667
-#, c-format
-msgid "pulling dependency %s (needed by %s)"
-msgstr "récupération de la dépendance %s (requise par %s)"
-
-#: lib/libalpm/deps.c:671
-#, c-format
-msgid "cannot resolve dependencies for \"%s\""
+#: lib/libalpm/deps.c:573
+#, fuzzy, c-format
+msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "résolution des dépendances impossible pour \"%s\""
-#: lib/libalpm/deps.c:687
-#, c-format
-msgid "dependency cycle detected: %s"
-msgstr "cycle de dépendances détecté: %s"
-
-#: lib/libalpm/deps.c:691
-msgid "finished resolving dependencies"
-msgstr "fin du tri des dépendances"
-
-#: lib/libalpm/error.c:40
+#: lib/libalpm/error.c:43
msgid "out of memory!"
msgstr "dépassement de mémoire!"
-#: lib/libalpm/error.c:42
+#: lib/libalpm/error.c:45
msgid "unexpected system error"
msgstr "erreur système non prévue"
-#: lib/libalpm/error.c:44
+#: lib/libalpm/error.c:47
msgid "insufficient privileges"
msgstr "autorisation insuffisante"
-#: lib/libalpm/error.c:46
+#: lib/libalpm/error.c:49
msgid "could not find or read file"
msgstr "trouver ou lire le fichier a échoué"
-#: lib/libalpm/error.c:48
+#: lib/libalpm/error.c:51
+#, fuzzy
+msgid "could not find or read directory"
+msgstr "trouver ou lire le fichier a échoué"
+
+#: lib/libalpm/error.c:53
msgid "wrong or NULL argument passed"
msgstr "un argument erroné ou nul a été fourni"
-#: lib/libalpm/error.c:51
+#: lib/libalpm/error.c:56
msgid "library not initialized"
msgstr "librairie non initialisée"
-#: lib/libalpm/error.c:53
+#: lib/libalpm/error.c:58
msgid "library already initialized"
msgstr "librairie déjà initialisée"
-#: lib/libalpm/error.c:55
+#: lib/libalpm/error.c:60
msgid "unable to lock database"
msgstr "verrouillage de la base de données impossible"
-#: lib/libalpm/error.c:58
+#: lib/libalpm/error.c:63
msgid "could not open database"
msgstr "l'ouverture de la base de données a échoué"
-#: lib/libalpm/error.c:60
+#: lib/libalpm/error.c:65
msgid "could not create database"
msgstr "la création de la base de données a échoué"
-#: lib/libalpm/error.c:62
+#: lib/libalpm/error.c:67
msgid "database not initialized"
msgstr "base de données non initialisée"
-#: lib/libalpm/error.c:64
+#: lib/libalpm/error.c:69
msgid "database already registered"
msgstr "base de données déjà enregistrée"
-#: lib/libalpm/error.c:66
+#: lib/libalpm/error.c:71
msgid "could not find database"
msgstr "trouver la base de données a échoué"
-#: lib/libalpm/error.c:68
+#: lib/libalpm/error.c:73
msgid "could not update database"
msgstr "la mise à jour de la base de données a échoué"
-#: lib/libalpm/error.c:70
+#: lib/libalpm/error.c:75
msgid "could not remove database entry"
msgstr "la suppression de l'entrée de base de données a échoué"
-#: lib/libalpm/error.c:73
+#: lib/libalpm/error.c:78
msgid "invalid url for server"
msgstr "URL invalide pour le serveur"
-#: lib/libalpm/error.c:80
+#: lib/libalpm/error.c:85
msgid "could not set parameter"
msgstr "définir le paramètre a échoué"
-#: lib/libalpm/error.c:83
+#: lib/libalpm/error.c:88
msgid "transaction already initialized"
msgstr "transaction déjà initialisée"
-#: lib/libalpm/error.c:85 lib/libalpm/error.c:89
+#: lib/libalpm/error.c:90 lib/libalpm/error.c:94
msgid "transaction not initialized"
msgstr "transaction non initialisée"
-#: lib/libalpm/error.c:87
+#: lib/libalpm/error.c:92
msgid "duplicate target"
msgstr "cible répétée"
-#: lib/libalpm/error.c:91
+#: lib/libalpm/error.c:96
msgid "transaction not prepared"
msgstr "transaction non préparée"
-#: lib/libalpm/error.c:93
+#: lib/libalpm/error.c:98
msgid "transaction aborted"
msgstr "transaction annulée"
-#: lib/libalpm/error.c:95
+#: lib/libalpm/error.c:100
msgid "operation not compatible with the transaction type"
msgstr "opération incompatible avec le type de transaction"
-#: lib/libalpm/error.c:97 lib/libalpm/sync.c:994
+#: lib/libalpm/error.c:102
msgid "could not commit transaction"
msgstr "appliquer la transaction a échoué"
-#: lib/libalpm/error.c:99
+#: lib/libalpm/error.c:104
msgid "could not download all files"
msgstr "tous les fichiers n'ont pas pu être téléchargés"
-#: lib/libalpm/error.c:102
+#: lib/libalpm/error.c:107
msgid "could not find or read package"
msgstr "trouver ou de lire le paquet a échoué"
-#: lib/libalpm/error.c:104
+#: lib/libalpm/error.c:109
msgid "invalid or corrupted package"
msgstr "paquet invalide ou corrompu"
-#: lib/libalpm/error.c:106
+#: lib/libalpm/error.c:111
msgid "cannot open package file"
msgstr "ouverture du fichier paquet impossible"
-#: lib/libalpm/error.c:108
+#: lib/libalpm/error.c:113
msgid "cannot load package data"
msgstr "chargement des données du paquet impossible"
-#: lib/libalpm/error.c:110
+#: lib/libalpm/error.c:115
msgid "package already installed"
msgstr "paquet déjà installé"
-#: lib/libalpm/error.c:112
+#: lib/libalpm/error.c:117
msgid "package not installed or lesser version"
msgstr "paquet non installé ou version plus ancienne"
-#: lib/libalpm/error.c:114
+#: lib/libalpm/error.c:119
msgid "cannot remove all files for package"
msgstr "suppression de certains fichiers du paquet impossible"
-#: lib/libalpm/error.c:116
+#: lib/libalpm/error.c:121
msgid "package name is not valid"
msgstr "nom de paquet invalide"
-#: lib/libalpm/error.c:118
+#: lib/libalpm/error.c:123
msgid "corrupted package"
msgstr "paquet corrompu"
-#: lib/libalpm/error.c:120
+#: lib/libalpm/error.c:125
msgid "no such repository"
msgstr "ce dépôt n'existe pas"
-#: lib/libalpm/error.c:123
+#: lib/libalpm/error.c:128
+#, fuzzy
+msgid "corrupted delta"
+msgstr "paquet corrompu"
+
+#: lib/libalpm/error.c:130
+msgid "delta patch failed"
+msgstr ""
+
+#: lib/libalpm/error.c:133
msgid "group not found"
msgstr "groupe non trouvé"
-#: lib/libalpm/error.c:126
+#: lib/libalpm/error.c:136
msgid "could not satisfy dependencies"
msgstr "la satisfaction des dépendances a échoué"
-#: lib/libalpm/error.c:128
+#: lib/libalpm/error.c:138
msgid "conflicting dependencies"
msgstr "conflit de dépendances"
-#: lib/libalpm/error.c:130
+#: lib/libalpm/error.c:140
msgid "conflicting files"
msgstr "conflit de fichiers"
-#: lib/libalpm/error.c:133
+#: lib/libalpm/error.c:143
msgid "user aborted the operation"
msgstr "opération annulée par l'utilisateur"
-#: lib/libalpm/error.c:135
+#: lib/libalpm/error.c:145
msgid "internal error"
msgstr "erreur interne"
-#: lib/libalpm/error.c:137
+#: lib/libalpm/error.c:147
msgid "libarchive error"
msgstr "erreur de libarchive"
-#: lib/libalpm/error.c:139
-msgid "not enough space on disk"
-msgstr "espace disque insuffisant"
-
-#: lib/libalpm/error.c:142
+#: lib/libalpm/error.c:150
msgid "not confirmed"
msgstr "non confirmé"
-#: lib/libalpm/error.c:145
-msgid "bad configuration section name"
-msgstr "nom de la section de configuration erroné"
-
-#: lib/libalpm/error.c:147
-msgid "'local' is reserved and cannot be used as a repository name"
-msgstr "'local' est réservé et ne peut être utilisé comme nom de dépôt"
-
-#: lib/libalpm/error.c:149
-msgid "syntax error in config file"
-msgstr "erreur de syntaxe dans le fichier de configuration"
-
-#: lib/libalpm/error.c:151
-msgid "all directives must belong to a section"
-msgstr "toutes les directives doivent appartenir à une section"
-
-#: lib/libalpm/error.c:153
+#: lib/libalpm/error.c:152
msgid "invalid regular expression"
msgstr "expression régulière incorrecte"
-#: lib/libalpm/error.c:156
+#: lib/libalpm/error.c:155
msgid "connection to remote host failed"
msgstr "échec de connexion à l'hôte distant "
-#: lib/libalpm/error.c:159
+#: lib/libalpm/error.c:158
msgid "unexpected error"
msgstr "erreur non prévue"
-#: lib/libalpm/handle.c:163
-#, c-format
-msgid "cannot canonicalize specified root path '%s'"
-msgstr "normalisation du chemin root '%s' impossible"
-
-#: lib/libalpm/handle.c:175
-#, c-format
-msgid "option 'root' = %s"
-msgstr "option 'root' = %s"
-
-#: lib/libalpm/handle.c:195
-#, c-format
-msgid "option 'dbpath' = %s"
-msgstr "option 'dbpath' = %s"
-
-#: lib/libalpm/handle.c:211
-#, c-format
-msgid "option 'cachedir' = %s"
-msgstr "option 'cachedir' = %s"
-
-#: lib/libalpm/md5driver.c:56
-#, c-format
-msgid "%s can't be opened\n"
-msgstr "l'ouverture de %s a échoué\n"
-
-#: lib/libalpm/md5driver.c:74
-#, c-format
-msgid "md5(%s) = %s"
-msgstr "md5(%s) = %s"
+#: lib/libalpm/package.c:124
+#, fuzzy, c-format
+msgid "could not get md5sum for package %s-%s\n"
+msgstr "l'obtention de la 'signature' md5 pour le paquet %s-%s a échoué"
-#: lib/libalpm/package.c:147
-#, c-format
-msgid "%s-%s: ignoring package upgrade (%s)"
-msgstr "%s-%s: ignore la mise à jour du paquet (%s)"
+#: lib/libalpm/package.c:133
+#, fuzzy, c-format
+msgid "md5sums do not match for package %s-%s\n"
+msgstr "les 'signatures' md5 ne correspondent pas pour le paquet %s-%s"
-#: lib/libalpm/package.c:158
-#, c-format
-msgid "%s: forcing upgrade to version %s"
+#: lib/libalpm/package.c:737
+#, fuzzy, c-format
+msgid "%s: forcing upgrade to version %s\n"
msgstr "%s: force la mise à jour à la version %s"
-#: lib/libalpm/package.c:163
-#, c-format
-msgid "%s: local (%s) is newer than %s (%s)"
+#: lib/libalpm/package.c:742
+#, fuzzy, c-format
+msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: la version locale (%s) est plus récente que %s (%s)"
-#: lib/libalpm/package.c:171
-#, c-format
-msgid "%s-%s: delaying upgrade of package (%s)"
+#: lib/libalpm/package.c:750
+#, fuzzy, c-format
+msgid "%s-%s: delaying upgrade of package (%s)\n"
msgstr "%s-%s: retarde la mise à jour du paquet (%s)"
-#: lib/libalpm/package.c:222 lib/libalpm/package.c:281
-#, c-format
-msgid "%s: syntax error in description file line %d"
-msgstr "%s: erreur de syntaxe dans le fichier de description à la ligne %d"
-
-#: lib/libalpm/package.c:355
-msgid "could not parse the package description file"
+#: lib/libalpm/package.c:931
+#, fuzzy, c-format
+msgid "could not parse package description file in %s\n"
msgstr "l'analyse du fichier de description a échoué"
-#: lib/libalpm/package.c:359
-#, c-format
-msgid "missing package name in %s"
+#: lib/libalpm/package.c:936
+#, fuzzy, c-format
+msgid "missing package name in %s\n"
msgstr "nom de paquet manquant dans %s"
-#: lib/libalpm/package.c:363
-#, c-format
-msgid "missing package version in %s"
+#: lib/libalpm/package.c:940
+#, fuzzy, c-format
+msgid "missing package version in %s\n"
msgstr "version de paquet manquante dans %s"
-#: lib/libalpm/package.c:398
-#, c-format
-msgid "could not remove tempfile %s"
+#: lib/libalpm/package.c:970
+#, fuzzy, c-format
+msgid "could not remove tempfile %s\n"
msgstr "la suppression du fichier temporaire %s a échoué"
-#: lib/libalpm/package.c:411 lib/libalpm/package.c:418
-#, c-format
-msgid "error while reading package: %s"
+#: lib/libalpm/package.c:985 lib/libalpm/package.c:998
+#, fuzzy, c-format
+msgid "error while reading package %s: %s\n"
msgstr "erreur lors de la lecture du paquet: %s"
-#: lib/libalpm/package.c:424
-msgid "missing package metadata"
+#: lib/libalpm/package.c:1005
+#, fuzzy, c-format
+msgid "missing package metadata in %s\n"
msgstr "méta-données du paquet manquantes"
-#: lib/libalpm/package.c:431
-#, c-format
-msgid "missing package filelist in %s, generating one"
+#: lib/libalpm/package.c:1012
+#, fuzzy, c-format
+msgid "missing package filelist in %s, generating one\n"
msgstr "liste de fichiers absente du paquet %s, création"
-#: lib/libalpm/package.c:570
-#, c-format
-msgid "adding '%s' in requiredby field for '%s'"
-msgstr "ajoute '%s' dans le champ 'requis par' pour '%s'"
-
-#: lib/libalpm/package.c:584
-#, c-format
-msgid "adding '%s' in requiredby field for '%s' (provides: %s)"
-msgstr "ajoute '%s' dans le champ 'requis par' pour '%s' (fournit: %s)"
-
-#: lib/libalpm/remove.c:79
-#, c-format
-msgid "could not find %s in database"
-msgstr "trouver %s dans la base de données a échoué"
-
-#: lib/libalpm/remove.c:93
-#, c-format
-msgid "adding %s in the targets list"
-msgstr "ajoute %s dans la liste des cibles"
-
#: lib/libalpm/remove.c:121
-#, c-format
-msgid "pulling %s in the targets list"
-msgstr "ajoute %s à la liste des cibles"
-
-#: lib/libalpm/remove.c:124
-#, c-format
-msgid "could not find %s in database -- skipping"
+#, fuzzy, c-format
+msgid "could not find %s in database -- skipping\n"
msgstr "trouver %s dans la base de données a échoué -- ignoré"
-#: lib/libalpm/remove.c:142
-msgid "finding removable dependencies"
-msgstr "trouve les dépendances susceptibles d'être supprimées"
-
-#: lib/libalpm/remove.c:175
-#, c-format
-msgid "cannot remove file '%s': %s"
+#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:243
+#, fuzzy, c-format
+msgid "cannot remove file '%s': %s\n"
msgstr "suppression du fichier '%s': %s impossible"
-#: lib/libalpm/remove.c:213
-#, c-format
-msgid "Skipping removal of '%s' due to NoUpgrade"
-msgstr "Ignore la suppression de %s pour cause de NoUpgrade"
-
-#: lib/libalpm/remove.c:220
-#, c-format
-msgid "file %s does not exist"
-msgstr "le fichier %s n'existe pas"
-
-#: lib/libalpm/remove.c:227
-#, c-format
-msgid "keeping directory %s"
-msgstr "préservation du répertoire %s"
-
-#: lib/libalpm/remove.c:229
-#, c-format
-msgid "removing directory %s"
-msgstr "suppression du répertoire %s"
-
-#: lib/libalpm/remove.c:236
-#, c-format
-msgid "%s is in trans->skip_remove, skipping removal"
-msgstr "%s est dans trans->skip_remove, suppression ignorée"
-
-#: lib/libalpm/remove.c:250
-#, c-format
-msgid "transaction is set to NOSAVE, not backing up '%s'"
-msgstr "la transaction se fait avec option NOSAVE, pas de sauvegarde de '%s'"
-
-#: lib/libalpm/remove.c:254
-#, c-format
-msgid "unlinking %s"
-msgstr "suppression du lien %s"
-
-#: lib/libalpm/remove.c:261
-#, c-format
-msgid "cannot remove file %s: %s"
-msgstr "suppression du fichier %s: %s impossible"
-
-#: lib/libalpm/remove.c:294
-#, c-format
-msgid "removing package %s-%s"
-msgstr "suppression du paquet %s-%s"
-
-#: lib/libalpm/remove.c:309
-#, c-format
-msgid "not removing package '%s', can't remove all files"
-msgstr "paquet '%s' non supprimé, certains fichiers ne peuvent être supprimés"
-
-#: lib/libalpm/remove.c:316
-#, c-format
-msgid "removing %d files"
-msgstr "suppression de %d fichiers"
-
#: lib/libalpm/remove.c:337
-#, c-format
-msgid "removing database entry '%s'"
-msgstr "suppression de l'entrée de base de données %s"
-
-#: lib/libalpm/remove.c:339
-#, c-format
-msgid "could not remove database entry %s-%s"
+#, fuzzy, c-format
+msgid "could not remove database entry %s-%s\n"
msgstr "la suppression de l'entrée de base de données %s-%s a échoué"
-#: lib/libalpm/remove.c:344
-#, c-format
-msgid "could not remove entry '%s' from cache"
+#: lib/libalpm/remove.c:342
+#, fuzzy, c-format
+msgid "could not remove entry '%s' from cache\n"
msgstr "la suppression du cache de l'entrée '%s' a échoué"
-#: lib/libalpm/sha1.c:397
-#, c-format
-msgid "sha1: %s can't be opened\n"
-msgstr "sha1: %s ne peut être ouvert\n"
-
-#: lib/libalpm/sha1.c:412
+#: lib/libalpm/server.c:56
#, c-format
-msgid "sha1(%s) = %s"
-msgstr "sha1(%s) = %s"
-
-#: lib/libalpm/sync.c:183
-msgid "checking for package upgrades"
-msgstr "vérification des mises à jour disponibles"
-
-#: lib/libalpm/sync.c:215
-#, c-format
-msgid "%s-%s elected for upgrade (%s => %s)"
-msgstr "%s-%s sélectionné pour mise à jour (%s => %s)"
+msgid "url '%s' is invalid, ignoring\n"
+msgstr ""
-#: lib/libalpm/sync.c:270
-#, c-format
-msgid "searching for target in repo '%s'"
-msgstr "cherche la cible dans le dépôt '%s'"
+#: lib/libalpm/server.c:60
+msgid "url scheme not specified, assuming http\n"
+msgstr ""
-#: lib/libalpm/sync.c:278 lib/libalpm/sync.c:301
-#, c-format
-msgid "target '%s' not found -- looking for provisions"
-msgstr "cible '%s' non trouvée -- recherche des "
+#: lib/libalpm/server.c:241
+msgid "disk"
+msgstr ""
-#: lib/libalpm/sync.c:283 lib/libalpm/sync.c:306
-#, c-format
-msgid "found '%s' as a provision for '%s'"
-msgstr "trouvé '%s' comme condition pour '%s'"
+#: lib/libalpm/server.c:245
+#, fuzzy, c-format
+msgid "failed retrieving file '%s' from %s : %s\n"
+msgstr "échec de récupération de certains fichiers depuis %s\n"
-#: lib/libalpm/sync.c:290
-#, c-format
-msgid "repository '%s' not found"
-msgstr "dépôt '%s' non trouvé"
+#: lib/libalpm/server.c:275
+msgid "cannot resume download, starting over\n"
+msgstr ""
-#: lib/libalpm/sync.c:331
-#, c-format
-msgid "%s-%s is up to date -- skipping"
-msgstr "%s-%s est à jour -- ignoré"
+#: lib/libalpm/server.c:288
+#, fuzzy, c-format
+msgid "cannot write to file '%s'\n"
+msgstr "suppression du fichier '%s': %s impossible"
-#: lib/libalpm/sync.c:354
-#, c-format
-msgid "adding target '%s' to the transaction set"
-msgstr "ajout de la cible '%s' au jeu de transactions"
+#: lib/libalpm/server.c:307
+#, fuzzy, c-format
+msgid "error downloading '%s': %s\n"
+msgstr "erreur lors de la lecture du paquet: %s"
-#: lib/libalpm/sync.c:402
-msgid "resolving target's dependencies"
-msgstr "résolution des dépendances pour la cible"
+#: lib/libalpm/server.c:319
+#, fuzzy, c-format
+msgid "error writing to file '%s': %s\n"
+msgstr "suppression du fichier '%s': %s impossible"
-#: lib/libalpm/sync.c:422
-#, c-format
-msgid "adding package %s-%s to the transaction targets"
-msgstr "ajout du paquet %s-%s aux cibles de la transaction"
+#: lib/libalpm/server.c:387
+#, fuzzy, c-format
+msgid "could not chdir to %s\n"
+msgstr "changer de répertoire vers / (%s) a échoué"
-#: lib/libalpm/sync.c:463
-msgid "looking for unresolvable dependencies"
-msgstr "recherche de dépendances impossibles à résoudre"
+#: lib/libalpm/server.c:394
+msgid "running XferCommand: fork failed!\n"
+msgstr ""
-#: lib/libalpm/sync.c:494
-#, c-format
-msgid "package '%s' conflicts with '%s'"
-msgstr "le paquet '%s' est en conflit avec '%s'"
+#: lib/libalpm/server.c:445
+msgid "URL does not contain a file for download\n"
+msgstr ""
-#: lib/libalpm/sync.c:516
-#, c-format
-msgid "'%s' not found in transaction set -- skipping"
-msgstr "'%s' non trouvé dans le jeu de transactions -- ignoré"
+#: lib/libalpm/server.c:458
+#, fuzzy, c-format
+msgid "failed to download %s\n"
+msgstr "tous les fichiers n'ont pas pu être téléchargés"
-#: lib/libalpm/sync.c:527
-#, c-format
-msgid "package '%s' provides its own conflict"
-msgstr "le paquet '%s' génère son propre conflit"
+#: lib/libalpm/sync.c:135
+#, fuzzy, c-format
+msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
+msgstr "%s-%s: ignore la mise à jour du paquet (à remplacer par %s-%s)"
-#: lib/libalpm/sync.c:550 lib/libalpm/sync.c:555
-#, c-format
-msgid "'%s' is in the target list -- keeping it"
-msgstr "'%s' est dans la la liste de cibles -- conservation"
+#: lib/libalpm/sync.c:250
+#, fuzzy, c-format
+msgid "%s: ignoring package upgrade (%s => %s)\n"
+msgstr "%s-%s: ignore la mise à jour du paquet (%s)"
-#: lib/libalpm/sync.c:567 lib/libalpm/sync.c:604
-#, c-format
-msgid "removing '%s' from target list"
-msgstr "suppression de '%s' de la liste des cibles"
+#: lib/libalpm/sync.c:320
+#, fuzzy, c-format
+msgid "repository '%s' not found\n"
+msgstr "dépôt '%s' non trouvé"
-#: lib/libalpm/sync.c:576
-#, c-format
-msgid "resolving package '%s' conflict"
-msgstr "résolution des conflits pour le paquet '%s'"
+#: lib/libalpm/sync.c:354
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- skipping\n"
+msgstr "%s-%s est à jour -- ignoré"
-#: lib/libalpm/sync.c:599
-#, c-format
-msgid "electing '%s' for removal"
-msgstr "sélection de '%s' pour suppression"
+#: lib/libalpm/sync.c:358
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- reinstalling\n"
+msgstr "%s-%s est à jour -- ignoré"
-#: lib/libalpm/sync.c:610 lib/libalpm/sync.c:626
-msgid "unresolvable package conflicts detected"
+#: lib/libalpm/sync.c:613 lib/libalpm/sync.c:618
+#, fuzzy
+msgid "unresolvable package conflicts detected\n"
msgstr "un conflit de paquets impossible à résoudre a été détecté"
-#: lib/libalpm/sync.c:678
-msgid "checking dependencies of packages designated for removal"
-msgstr "analyse des dépendances des paquets sélectionnés pour suppression"
-
-#: lib/libalpm/sync.c:692
-msgid "something has gone horribly wrong"
-msgstr "quelque chose s'est horriblement mal passé"
-
-#: lib/libalpm/sync.c:712
-#, c-format
-msgid "found '%s' as a provision for '%s' -- conflict aborted"
-msgstr "trouvé '%s' comme pour '%s' -- conflit annulé"
-
-#: lib/libalpm/sync.c:808
-#, c-format
-msgid "%s is already in the cache\n"
-msgstr "%s est déjà dans le cache\n"
-
-#: lib/libalpm/sync.c:819
-#, c-format
-msgid "no %s cache exists, creating...\n"
-msgstr "le cache %s n'existe pas, création...\n"
-
-#: lib/libalpm/sync.c:820
-#, c-format
-msgid "warning: no %s cache exists, creating..."
-msgstr "avertissement: le cache %s n'existe pas, création..."
+#: lib/libalpm/sync.c:628
+#, fuzzy, c-format
+msgid "malloc failure: could not allocate %zd bytes\n"
+msgstr "erreur malloc: n'a pas pu allouer %d bytes"
#: lib/libalpm/sync.c:825
-msgid "couldn't create package cache, using /tmp instead\n"
-msgstr "n'a pas pu créer le cache de paquets, /tmp sera utilisé à la place\n"
-
-#: lib/libalpm/sync.c:826
-msgid "warning: couldn't create package cache, using /tmp instead"
-msgstr ""
-"avertissement: ne peut créer le cache de paquets, /tmp sera utilisé à la "
-"place"
-
-#: lib/libalpm/sync.c:833
#, c-format
-msgid "failed to retrieve some files from %s\n"
-msgstr "échec de récupération de certains fichiers depuis %s\n"
+msgid "command: %s\n"
+msgstr ""
-#: lib/libalpm/sync.c:863 lib/libalpm/sync.c:875
-#, c-format
-msgid "can't get md5 or sha1 checksum for package %s\n"
+#: lib/libalpm/sync.c:888 lib/libalpm/sync.c:896
+#, fuzzy, c-format
+msgid "can't get md5 checksum for file %s\n"
msgstr "ne peut obtenir la 'signature' md5 ou sha1 pour le paquet %s\n"
-#: lib/libalpm/sync.c:894
-#, c-format
-msgid "archive %s was corrupted (bad MD5 or SHA1 checksum)\n"
+#: lib/libalpm/sync.c:910
+#, fuzzy, c-format
+msgid "file %s was corrupted (bad MD5 checksum)\n"
msgstr "l'archive %s était corrompue (mauvaise somme MD5 ou SHA1)\n"
-#: lib/libalpm/sync.c:896
+#: lib/libalpm/sync.c:1056
#, c-format
-msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr "l'archive %s est corrompue (mauvaise somme MD5 ou SHA1)\n"
+msgid "failed to retrieve some files from %s\n"
+msgstr "échec de récupération de certains fichiers depuis %s\n"
-#: lib/libalpm/sync.c:917
-msgid "could not create removal transaction"
+#: lib/libalpm/sync.c:1137
+#, fuzzy
+msgid "could not create removal transaction\n"
msgstr "la création de la transaction de suppression a échoué"
-#: lib/libalpm/sync.c:923
-msgid "could not initialize the removal transaction"
+#: lib/libalpm/sync.c:1143
+#, fuzzy
+msgid "could not initialize the removal transaction\n"
msgstr "l'initialisation de la transaction de suppression a échoué"
-#: lib/libalpm/sync.c:943
-msgid "removing conflicting and to-be-replaced packages"
-msgstr "suppression des paquets en conflit et de ceux à remplacer"
-
-#: lib/libalpm/sync.c:945
-msgid "could not prepare removal transaction"
+#: lib/libalpm/sync.c:1165
+#, fuzzy
+msgid "could not prepare removal transaction\n"
msgstr "la préparation de la transaction de suppression a échoué"
-#: lib/libalpm/sync.c:951
-msgid "could not commit removal transaction"
+#: lib/libalpm/sync.c:1171
+#, fuzzy
+msgid "could not commit removal transaction\n"
msgstr "appliquer la transaction de suppression a échoué"
-#: lib/libalpm/sync.c:958
-msgid "installing packages"
-msgstr "installation des paquets"
-
-#: lib/libalpm/sync.c:961
-msgid "could not create transaction"
+#: lib/libalpm/sync.c:1182
+#, fuzzy
+msgid "could not create transaction\n"
msgstr "la création de la transaction a échoué"
-#: lib/libalpm/sync.c:966
-msgid "could not initialize transaction"
+#: lib/libalpm/sync.c:1187
+#, fuzzy
+msgid "could not initialize transaction\n"
msgstr "l'initialisation de la transaction a échoué"
-#: lib/libalpm/sync.c:989
-msgid "could not prepare transaction"
+#: lib/libalpm/sync.c:1214
+#, fuzzy
+msgid "could not prepare transaction\n"
msgstr "la préparation de la transaction a échoué"
-#: lib/libalpm/sync.c:1001
-msgid "updating database for replaced packages' dependencies"
-msgstr ""
-"mise à jour de la base de données avec les dépendances des paquets remplacés"
-
-#: lib/libalpm/sync.c:1030
-#, c-format
-msgid "could not update requiredby for database entry %s-%s"
-msgstr ""
-"la mise à jour du champ requiredby pour l'entrée de base de données %s-%s a "
-"échoué"
-
-#: lib/libalpm/sync.c:1039
-#, c-format
-msgid "could not update new database entry %s-%s"
-msgstr "la mise à jour de la nouvelle entrée de base de données %s-%s a échoué"
-
-#: lib/libalpm/sync.c:1079
-#, c-format
-msgid "found package '%s-%s' in sync"
-msgstr "paquet '%s-%s' trouvé dans sync"
-
-#: lib/libalpm/sync.c:1085
-#, c-format
-msgid "package '%s' not found in sync"
-msgstr "paquet '%s' non trouvé dans la liste de synchronisation"
-
-#: lib/libalpm/trans.c:271
-#, c-format
-msgid "updating dependency packages 'requiredby' fields for %s-%s"
-msgstr "mise à jour des dépendances dans les champs 'requiredby' pour %s-%s"
-
-#: lib/libalpm/trans.c:274
-msgid "package has no dependencies, no other packages to update"
-msgstr "le paquet n'a aucune dépendance, pas d'autres paquets à mettre à jour"
+#: lib/libalpm/sync.c:1219
+#, fuzzy
+msgid "could not commit transaction\n"
+msgstr "appliquer la transaction a échoué"
-#: lib/libalpm/trans.c:311 lib/libalpm/trans.c:341
-#, c-format
-msgid "updating 'requiredby' field for package '%s'"
-msgstr "mise à jour du champ 'requiredby' pour le paquet '%s'"
+#: lib/libalpm/trans.c:214
+#, fuzzy, c-format
+msgid "could not remove lock file %s\n"
+msgstr "la suppression du fichier de verrouillage %s a échoué"
-#: lib/libalpm/trans.c:326 lib/libalpm/trans.c:356
+#: lib/libalpm/trans.c:483
#, c-format
-msgid "could not update 'requiredby' database entry %s-%s"
+msgid "No /bin/sh in root dir (%s), aborting scriptlet\n"
msgstr ""
-"la mise à jour du champ 'requiredby' de l'entrée de base de données %s-%s a "
-"échoué"
-
-#: lib/libalpm/trans.c:333
-#, c-format
-msgid "could not find dependency '%s'"
-msgstr "trouver la dépendance '%s' a échoué"
-#: lib/libalpm/util.c:142
-#, c-format
-msgid "failed to make path '%s' : %s"
-msgstr "échec de la création du chemin '%s' : %s"
-
-#: lib/libalpm/util.c:280
-#, c-format
-msgid "could not open %s: %s\n"
-msgstr "l'ouverture de %s: %s a échoué\n"
-
-#: lib/libalpm/util.c:293
-#, c-format
-msgid "could not extract %s: %s\n"
-msgstr "l'extraction de %s: %s a échoué\n"
-
-#: lib/libalpm/util.c:350
-#, c-format
-msgid "logaction called: %s"
-msgstr "logaction called: %s"
-
-#: lib/libalpm/util.c:445
-msgid "could not create temp directory"
+#: lib/libalpm/trans.c:494
+#, fuzzy
+msgid "could not create temp directory\n"
msgstr "la création du répertoire temporaire a échoué"
-#: lib/libalpm/util.c:472
-#, c-format
-msgid "could not change directory to %s (%s)"
+#: lib/libalpm/trans.c:536
+#, fuzzy, c-format
+msgid "could not change directory to %s (%s)\n"
msgstr "changer de répertoire vers %s (%s) a échoué"
-#: lib/libalpm/util.c:476
-#, c-format
-msgid "executing %s script..."
-msgstr "exécution du script %s ..."
-
-#: lib/libalpm/util.c:489
-#, c-format
-msgid "could not fork a new process (%s)"
+#: lib/libalpm/trans.c:554
+#, fuzzy, c-format
+msgid "could not fork a new process (%s)\n"
msgstr "la génération d'un nouveau processus (%s) a échoué"
-#: lib/libalpm/util.c:496
-#, c-format
-msgid "chrooting in %s"
-msgstr "chroot dans %s"
-
-#: lib/libalpm/util.c:498
-#, c-format
-msgid "could not change the root directory (%s)"
+#: lib/libalpm/trans.c:564
+#, fuzzy, c-format
+msgid "could not change the root directory (%s)\n"
msgstr "changer le répertoire racine (%s) a échoué"
-#: lib/libalpm/util.c:502
-#, c-format
-msgid "could not change directory to / (%s)"
+#: lib/libalpm/trans.c:569
+#, fuzzy, c-format
+msgid "could not change directory to / (%s)\n"
msgstr "changer de répertoire vers / (%s) a échoué"
-#: lib/libalpm/util.c:506
-#, c-format
-msgid "executing \"%s\""
-msgstr "exécution de \"%s\""
-
-#: lib/libalpm/util.c:509
-#, c-format
+#: lib/libalpm/trans.c:578
+#, fuzzy, c-format
msgid "call to popen failed (%s)"
-msgstr "l'appel à popen a échoué (%s)"
+msgstr "call to waitpid failed (%s)"
-#: lib/libalpm/util.c:541
-#, c-format
-msgid "call to waitpid failed (%s)"
+#: lib/libalpm/trans.c:597
+#, fuzzy, c-format
+msgid "call to waitpid failed (%s)\n"
msgstr "call to waitpid failed (%s)"
-#: lib/libalpm/util.c:550
-#, c-format
-msgid "could not remove tmpdir %s"
-msgstr "la suppression du répertoire temporaire %s a échoué"
+#: lib/libalpm/trans.c:606
+msgid "scriptlet failed to execute correctly\n"
+msgstr ""
-#: lib/libalpm/util.c:568
-#, c-format
-msgid "cannot read disk space information from %s: %s"
-msgstr "impossible de lire l'information concernant l'espace disque de %s: %s"
+#: lib/libalpm/trans.c:615
+#, fuzzy, c-format
+msgid "could not remove tmpdir %s\n"
+msgstr "la suppression du répertoire temporaire %s a échoué"
-#: lib/libalpm/util.c:609
-#, c-format
-msgid "check_freespace: total pkg size: %lld, disk space: %lld"
-msgstr "check_freespace: taille totale: %lld, espace disque: %lld"
+#: lib/libalpm/util.c:204
+#, fuzzy, c-format
+msgid "failed to make path '%s' : %s\n"
+msgstr "échec de la création du chemin '%s' : %s"
-#: lib/libalpm/versioncmp.c:279
+#: lib/libalpm/util.c:389
#, c-format
-msgid "depcmp: %s-%s %s %s-%s => %s"
-msgstr "depcmp: %s-%s %s %s-%s => %s"
+msgid "could not open %s: %s\n"
+msgstr "l'ouverture de %s: %s a échoué\n"
-#: lib/libalpm/versioncmp.c:284
+#: lib/libalpm/util.c:573
#, c-format
-msgid "depcmp: %s-%s %s %s => %s"
-msgstr "depcmp: %s-%s %s %s => %s"
-
-#~ msgid "%s saved as %s.pacorig"
-#~ msgstr "%s sauve en tant que %s.pacorig"
-
-#~ msgid "could not parse token %s"
-#~ msgstr "ne peut analyser l'élément %s"
-
-#~ msgid "notice: %s is in NoExtract -- skipping extraction"
-#~ msgstr "note: %s est dans la liste NoExtract -- ignore l'extraction"
-
-#~ msgid "loading package cache (infolevel=%#x) for repository '%s'"
-#~ msgstr "chargement du cache de paquet (infolevel=%#x) pour le dépot '%s'"
-
-#, fuzzy
-#~ msgid "package cache reloaded (infolevel=%#x) for repository '%s'"
-#~ msgstr "chargement du cache de paquet (infolevel=%#x) pour le dépot '%s'"
-
-#~ msgid "targs vs db: found %s as a conflict for %s"
-#~ msgstr ""
-#~ "comparaison cibles / base de données : trouve %s comme conflit pour %s"
-
-#~ msgid "targs vs targs: found %s as a conflict for %s"
-#~ msgstr ""
-#~ "comparaison cible / liste de cibles : trouve %s comme conflit pour %s"
-
-#~ msgid "db vs targs: found %s as a conflict for %s"
-#~ msgstr "comparaison base de donnée / cibles: trouve %s en conflit avec %s"
-
-#, fuzzy
-#~ msgid "no dependencies for target '%s'"
-#~ msgstr "ne peut résoudre les dépendances pour \"%s\""
-
-#, fuzzy
-#~ msgid "%s-%s: ignoring package upgrade (%s => %s)"
-#~ msgstr "%s-%s: ignore la mise à jour du paquet (%s)"
-
-#~ msgid "adding new package %s-%s"
-#~ msgstr "ajout du nouveau paquet %s-%s"
-
-#~ msgid "error updating database for %s-%s!"
-#~ msgstr "erreur lors de la mise a jour de la base de données pour %s-%s!"
-
-#~ msgid "dep is NULL!"
-#~ msgstr "dep est NULL!"
-
-#~ msgid "loading ALL info for '%s'"
-#~ msgstr "chargement de TOUTES les infos pour '%s'"
+msgid "no %s cache exists, creating...\n"
+msgstr "le cache %s n'existe pas, création...\n"
+#: lib/libalpm/util.c:593
#, fuzzy
-#~ msgid "could not find dependency '%s' for removal"
-#~ msgstr "n'a pas pu trouver la dépendance '%s'"
+msgid "couldn't create package cache, using /tmp instead\n"
+msgstr "n'a pas pu créer le cache de paquets, /tmp sera utilisé à la place\n"
-#~ msgid "loading FILES info for '%s'"
-#~ msgstr "chargement des informations de fichiers pour '%s'"
+#: lib/libalpm/util.c:643
+#, fuzzy, c-format
+msgid "md5: %s can't be opened\n"
+msgstr "l'ouverture de %s a échoué\n"
-#~ msgid "loading DESC info for '%s'"
-#~ msgstr "chargement des informations descriptives pour '%s'"
+#: lib/libalpm/util.c:645
+#, fuzzy, c-format
+msgid "md5: %s can't be read\n"
+msgstr "l'ouverture de %s a échoué\n"
-#, fuzzy
-#~ msgid "syntax error"
-#~ msgstr "erreur interne"
+#~ msgid "please remove '%s' first, using -Rd"
+#~ msgstr "veuillez supprimer '%s' d'abord, en utilisant -Rd"
-#~ msgid "unpacking %s"
-#~ msgstr "décompacte %s"
+#~ msgid "could not extract %s (%s)"
+#~ msgstr "l'extraction de %s (%s) a échoué"
-#~ msgid "loading SCRIPLET info for '%s'"
-#~ msgstr "charge les infos de SCRIPLET pour '%s'"
+#~ msgid "could not update provision '%s' from '%s'"
+#~ msgstr "la mise à jour du contenu '%s' dans '%s' a échoué"
#, fuzzy
-#~ msgid "config: %s: server: %s\n"
-#~ msgstr "avertissement: %s sauve en tant que %s"
-
-#~ msgid "db_write: could not open file %s/desc"
-#~ msgstr "db_write: n'a pas pu ouvrir le fichier %s/desc"
-
-#~ msgid "db_write: could not open file %s/files"
-#~ msgstr "db_write: n'a pas pu ouvrir le fichier %s/files"
-
-#~ msgid "db_write: could not open file %s/depends"
-#~ msgstr "db_write: n' pas pu ouvrir le fichier %s/depends"
-
-#~ msgid "PM_OPT_DBPATH set to '%s'"
-#~ msgstr "PM_OPT_DBPATH défini à '%s'"
-
-#~ msgid "PM_OPT_CACHEDIR set to '%s'"
-#~ msgstr "PM_OPT_CACHEDIR défini à '%s'"
-
-#~ msgid "can't open log file %s"
-#~ msgstr "ne peut ouvrir le fichier de log %s"
-
-#~ msgid "PM_OPT_LOGFILE set to '%s'"
-#~ msgstr "PM_OPT_LOGFILE défini à '%s'"
+#~ msgid "%s: description file is missing"
+#~ msgstr "%s: erreur de syntaxe dans le fichier de description à la ligne %d"
-#~ msgid "'%s' added to PM_OPT_NOUPGRADE"
-#~ msgstr "'%s' ajouté à PM_OPT_NOUPGRADE"
+#~ msgid "malloc failed: could not allocate %d bytes"
+#~ msgstr "malloc a echoué: n'a pas pu allouer %d bytes"
-#~ msgid "PM_OPT_NOUPGRADE flushed"
-#~ msgstr "PM_OPT_NOUPGRADE rechargé"
-
-#~ msgid "'%s' added to PM_OPT_NOEXTRACT"
-#~ msgstr "'%s' ajouté à PM_OPT_NOEXTRACT"
+#~ msgid ""
+#~ "cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+#~ msgstr ""
+#~ "résolution des dépendances impossible pour \"%s\" (\"%s\" n'est pas parmi "
+#~ "les paquets)"
-#~ msgid "PM_OPT_NOEXTRACT flushed"
-#~ msgstr "PM_OPT_NOEXTRACT rechargé"
+#~ msgid "cannot canonicalize specified root path '%s'"
+#~ msgstr "normalisation du chemin root '%s' impossible"
-#~ msgid "'%s' added to PM_OPT_IGNOREPKG"
-#~ msgstr "'%s' ajouté à PM_OPT_IGNOREPKG"
+#~ msgid "could not get sha1sum for package %s-%s"
+#~ msgstr "l'obtention de la 'signature' sha1 pour le paquet %s-%s a échoué"
-#~ msgid "PM_OPT_IGNOREPKG flushed"
-#~ msgstr "PM_OPT_IGNOREPKG rechargé"
+#~ msgid "sha1sums do not match for package %s-%s"
+#~ msgstr "les 'signatures' sha1 ne correspondent pas pour le paquet %s-%s"
-#, fuzzy
-#~ msgid "'%s' added to PM_OPT_HOLDPKG"
-#~ msgstr "'%s' ajouté à PM_OPT_IGNOREPKG"
-
-#, fuzzy
-#~ msgid "PM_OPT_HOLDPKG flushed"
-#~ msgstr "PM_OPT_IGNOREPKG rechargé"
+#~ msgid "cannot remove file %s: %s"
+#~ msgstr "suppression du fichier %s: %s impossible"
-#~ msgid "PM_OPT_USESYSLOG set to '%d'"
-#~ msgstr "PM_OPT_USESYSLOG défini à '%d'"
+#~ msgid "sha1: %s can't be opened\n"
+#~ msgstr "sha1: %s ne peut être ouvert\n"
-#~ msgid "PM_OPT_LOGMASK set to '%02x'"
-#~ msgstr "PM_OPT_LOGMASK défini à '%02x'"
-
-#, fuzzy
-#~ msgid "PM_OPT_PROXYHOST set to '%s'"
-#~ msgstr "PM_OPT_DBPATH défini à '%s'"
-
-#, fuzzy
-#~ msgid "PM_OPT_PROXYPORT set to '%d'"
-#~ msgstr "PM_OPT_DBPATH défini à '%s'"
+#~ msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
+#~ msgstr "l'archive %s est corrompue (mauvaise somme MD5 ou SHA1)\n"
-#, fuzzy
-#~ msgid "PM_OPT_XFERCOMMAND set to '%s'"
-#~ msgstr "PM_OPT_CACHEDIR défini à '%s'"
-
-#, fuzzy
-#~ msgid "PM_OPT_NOPASSIVEFTP set to '%d'"
-#~ msgstr "PM_OPT_DBPATH défini à '%s'"
-
-#, fuzzy
-#~ msgid "PM_OPT_CHOMP set to '%d'"
-#~ msgstr "PM_OPT_CACHEDIR défini à '%s'"
+#~ msgid "could not update requiredby for database entry %s-%s"
+#~ msgstr ""
+#~ "la mise à jour du champ requiredby pour l'entrée de base de données %s-%s "
+#~ "a échoué"
-#~ msgid "bad package file in %s"
-#~ msgstr "mauvais fichier de paquet dans %s"
+#~ msgid "could not update new database entry %s-%s"
+#~ msgstr ""
+#~ "la mise à jour de la nouvelle entrée de base de données %s-%s a échoué"
-#~ msgid "%s-%s: local version is newer -- skipping"
-#~ msgstr "%s-%s: la version locale est plus récente -- ignoré"
+#~ msgid "could not update 'requiredby' database entry %s-%s"
+#~ msgstr ""
+#~ "la mise à jour du champ 'requiredby' de l'entrée de base de données %s-%s "
+#~ "a échoué"
diff --git a/lib/libalpm/po/hu.po b/lib/libalpm/po/hu.po
index 2caf23fe..cd0555fe 100644
--- a/lib/libalpm/po/hu.po
+++ b/lib/libalpm/po/hu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: hu\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-09-16 16:55-0500\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
"PO-Revision-Date: 2007-03-14 13:45+0100\n"
"Last-Translator: Nagy Gabor <ngaba@petra.hos.u-szeged.hu>\n"
"Language-Team: <hu@li.org>\n"
@@ -17,1502 +17,728 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: KBabel 1.11.4\n"
-#: lib/libalpm/add.c:77
-#, c-format
-msgid "loading target '%s'"
-msgstr "cél betöltése '%s'"
-
-#: lib/libalpm/add.c:122
-#, c-format
-msgid "replacing older version %s-%s by %s in target list"
+#: lib/libalpm/add.c:88
+#, fuzzy, c-format
+msgid "replacing older version %s-%s by %s in target list\n"
msgstr "a %s-%s-t lecseréli a %s a cél listában"
-#: lib/libalpm/add.c:131
-#, c-format
-msgid "newer version %s-%s is in the target list -- skipping"
+#: lib/libalpm/add.c:97
+#, fuzzy, c-format
+msgid "newer version %s-%s is in the target list -- skipping\n"
msgstr "az újabb verzió (%s-%s) már elérhetõ a cél listában -- kihagyás"
-#: lib/libalpm/add.c:138
-#, c-format
-msgid "reading '%s' metadata"
-msgstr "'%s' metaadat olvasása"
-
-#: lib/libalpm/add.c:191 lib/libalpm/remove.c:111
-msgid "looking for unsatisfied dependencies"
-msgstr "elégtelen függõségek keresése"
+#: lib/libalpm/add.c:168
+msgid "conflicting packages were found in the target list\n"
+msgstr ""
-#: lib/libalpm/add.c:203 lib/libalpm/sync.c:483
-msgid "looking for conflicts"
-msgstr "konfliktusok keresése"
+#: lib/libalpm/add.c:169
+msgid "you cannot install two conflicting packages at the same time\n"
+msgstr ""
-#: lib/libalpm/add.c:208
-msgid "replacing packages with -A and -U is not supported yet"
+#: lib/libalpm/add.c:172
+#, fuzzy
+msgid "replacing packages with -A and -U is not supported yet\n"
msgstr "csomagok lecserélése még nem támogatott -A és -U esetén"
-#: lib/libalpm/add.c:209
-#, c-format
-msgid "please remove '%s' first, using -Rd"
-msgstr "kérem elõször távolítsa el '%s'-t a -Rd kapcsolót használva"
-
-#: lib/libalpm/add.c:250 lib/libalpm/remove.c:147
-msgid "sorting by dependencies"
-msgstr "rendezés függõségek szerint"
-
-#: lib/libalpm/add.c:262
-msgid "cleaning up"
-msgstr "tisztítás"
-
-#: lib/libalpm/add.c:277
-msgid "looking for file conflicts"
-msgstr "fájl konfliktusok keresése"
-
-#: lib/libalpm/add.c:346
-#, c-format
-msgid "upgrading package %s-%s"
-msgstr "csomag frissítése: %s-%s"
-
-#: lib/libalpm/add.c:370
-#, c-format
-msgid "adding package %s-%s"
-msgstr "csomag hozzáadása %s-%s"
-
-#: lib/libalpm/add.c:383
-#, c-format
-msgid "removing old package first (%s-%s)"
-msgstr "elsõként a régi csomag eltávolítása (%s-%s)"
-
-#: lib/libalpm/add.c:411
-#, c-format
-msgid "adding %s to the NoUpgrade array temporarily"
+#: lib/libalpm/add.c:173
+msgid "you can replace packages manually using -Rd and -U\n"
msgstr ""
-#: lib/libalpm/add.c:429
-msgid "extracting files"
-msgstr "fájlok kitömörítése"
-
-#: lib/libalpm/add.c:444 lib/libalpm/util.c:465
-msgid "could not get current working directory"
-msgstr "a jelenlegi munkakönyvtár nem kapható meg"
-
-#: lib/libalpm/add.c:500 lib/libalpm/add.c:501
-#, c-format
-msgid "%s is in NoExtract, skipping extraction"
-msgstr "%s a NoExtractben van, kitömörítés kihagyása"
-
-#: lib/libalpm/add.c:508
+#: lib/libalpm/add.c:365
#, c-format
-msgid "%s is in trans->skip_add, skipping extraction"
+msgid ""
+"directory permissions differ on %s\n"
+"filesystem: %o package: %o\n"
msgstr ""
-#: lib/libalpm/add.c:554 lib/libalpm/add.c:555 lib/libalpm/add.c:706
-#, c-format
-msgid "could not extract %s (%s)"
-msgstr "nem sikerült kitömöríteni: %s (%s)"
-
-#: lib/libalpm/add.c:598
-#, c-format
-msgid "checking md5 hashes for %s"
-msgstr "md5 összegek vizsgálata a %s számára"
-
-#: lib/libalpm/add.c:600
+#: lib/libalpm/add.c:392
#, c-format
-msgid "checking sha1 hashes for %s"
-msgstr "sha1 összegek vizsgálata a %s számára"
-
-#: lib/libalpm/add.c:602
-#, c-format
-msgid "current: %s"
-msgstr "jelenlegi: %s"
+msgid "extract: symlink %s does not point to dir\n"
+msgstr ""
-#: lib/libalpm/add.c:603
+#: lib/libalpm/add.c:399
#, c-format
-msgid "new: %s"
-msgstr "új: %s"
+msgid "extract: not overwriting dir with file %s\n"
+msgstr ""
-#: lib/libalpm/add.c:604
+#: lib/libalpm/add.c:454 lib/libalpm/add.c:598 lib/libalpm/util.c:422
#, c-format
-msgid "original: %s"
-msgstr "eredeti: %s"
+msgid "could not extract %s (%s)\n"
+msgstr "nem sikerült kitömöríteni: %s (%s)\n"
-#: lib/libalpm/add.c:616
-#, c-format
-msgid "could not rename %s (%s)"
+#: lib/libalpm/add.c:505
+#, fuzzy, c-format
+msgid "could not rename %s (%s)\n"
msgstr "nem sikerült átnevezni: %s (%s)"
-#: lib/libalpm/add.c:617
-#, c-format
-msgid "error: could not rename %s (%s)"
-msgstr "hiba: nem sikerült átnevezni: %s (%s)"
-
-#: lib/libalpm/add.c:623 lib/libalpm/add.c:642
-#, c-format
-msgid "could not copy tempfile to %s (%s)"
+#: lib/libalpm/add.c:512 lib/libalpm/add.c:532 lib/libalpm/trans.c:508
+#, fuzzy, c-format
+msgid "could not copy tempfile to %s (%s)\n"
msgstr "nem sikerült az ideiglenes fájlt ide másolni: %s (%s)"
-#: lib/libalpm/add.c:624
-#, c-format
-msgid "error: could not copy tempfile to %s (%s)"
-msgstr "hiba: nem sikerült az ideiglenes fájlt ide másolni: %s (%s)"
-
-#: lib/libalpm/add.c:628 lib/libalpm/remove.c:247
-#, c-format
-msgid "%s saved as %s"
+#: lib/libalpm/add.c:517 lib/libalpm/remove.c:234
+#, fuzzy, c-format
+msgid "%s saved as %s\n"
msgstr "a %s elmentve %s néven"
-#: lib/libalpm/add.c:629
-#, c-format
-msgid "warning: %s saved as %s"
-msgstr "figyelmeztetés: a %s elmentve %s néven"
-
-#: lib/libalpm/add.c:639
-#, c-format
-msgid "action: installing new file: %s"
-msgstr "folyamat: új fájl telepítése: %s"
-
-#: lib/libalpm/add.c:649 lib/libalpm/add.c:655 lib/libalpm/add.c:660
-msgid "action: leaving existing file in place"
-msgstr "folyamat: a jelenlegi fájl megtartása"
-
-#: lib/libalpm/add.c:663
-msgid "action: keeping current file and installing new one with .pacnew ending"
-msgstr ""
-"folyamat: a jelenlegi fájl megtartása és az új .pacnew végzõdéssel való "
-"telepítése"
-
-#: lib/libalpm/add.c:666
-#, c-format
-msgid "could not install %s as %s: %s"
+#: lib/libalpm/add.c:556
+#, fuzzy, c-format
+msgid "could not install %s as %s: %s\n"
msgstr "nem sikerült telepíteni a %s-t %s-ként: %s"
-#: lib/libalpm/add.c:667
-#, c-format
-msgid "error: could not install %s as %s: %s"
-msgstr "hiba: nem sikerült telepíteni a %s-t %s-ként: %s"
-
-#: lib/libalpm/add.c:669
-#, c-format
-msgid "%s installed as %s"
+#: lib/libalpm/add.c:559
+#, fuzzy, c-format
+msgid "%s installed as %s\n"
msgstr "a %s %s néven lett telepítve"
-#: lib/libalpm/add.c:670
-#, c-format
-msgid "warning: %s installed as %s"
-msgstr "figyelmeztetés: a %s néven %s lett telepítve"
-
-#: lib/libalpm/add.c:684
-#, c-format
-msgid "%s is in NoUpgrade -- skipping"
-msgstr "%s a NoUpgrade-ben van -- kihagyás"
-
-#: lib/libalpm/add.c:685
-#, c-format
-msgid "extracting %s as %s.pacnew"
+#: lib/libalpm/add.c:576
+#, fuzzy, c-format
+msgid "extracting %s as %s.pacnew\n"
msgstr "%s kitömörítése %s.pacnew néven"
-#: lib/libalpm/add.c:686
-#, c-format
-msgid "warning: extracting %s as %s.pacnew"
-msgstr "figyelmeztetés: %s kitömörítése %s.pacnew néven"
-
-#: lib/libalpm/add.c:689
-#, c-format
-msgid "extracting %s"
-msgstr "a %s kitömörítése"
-
-#: lib/libalpm/add.c:707
-#, c-format
-msgid "error: could not extract %s (%s)"
-msgstr "hiba: nem sikerült kitömöríteni: %s (%s)"
-
-#: lib/libalpm/add.c:719
-#, c-format
-msgid "appending backup entry for %s"
-msgstr ""
-
-#: lib/libalpm/add.c:751 lib/libalpm/add.c:753
-#, c-format
-msgid "errors occurred while %s %s"
-msgstr "hiba %s közben: %s"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "upgrading"
-msgstr "frissítés"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "installing"
-msgstr "telepítés"
-
-#: lib/libalpm/add.c:771
-#, c-format
-msgid "provision '%s' has been removed from package %s (%s => %s)"
-msgstr ""
-
-#: lib/libalpm/add.c:783
-#, c-format
-msgid "updating '%s' due to provision change (%s)"
-msgstr ""
-
-#: lib/libalpm/add.c:787 lib/libalpm/add.c:788
-#, c-format
-msgid "could not update provision '%s' from '%s'"
-msgstr ""
+#: lib/libalpm/add.c:711 lib/libalpm/trans.c:529
+#, fuzzy
+msgid "could not get current working directory\n"
+msgstr "a jelenlegi munkakönyvtár nem kapható meg"
-#: lib/libalpm/add.c:801 lib/libalpm/remove.c:336
-msgid "updating database"
-msgstr "az adatbázis frissítése"
+#: lib/libalpm/add.c:765
+#, fuzzy, c-format
+msgid "problem occurred while upgrading %s\n"
+msgstr "hiba történt a(z) %s frissítése közben"
-#: lib/libalpm/add.c:802
-#, c-format
-msgid "adding database entry '%s'"
-msgstr "adatbázis mezõ hozzáadása '%s'"
+#: lib/libalpm/add.c:770
+#, fuzzy, c-format
+msgid "problem occurred while installing %s\n"
+msgstr "hiba történt a(z) %s telepítése közben"
-#: lib/libalpm/add.c:805 lib/libalpm/add.c:807
-#, c-format
-msgid "could not update database entry %s-%s"
+#: lib/libalpm/add.c:785
+#, fuzzy, c-format
+msgid "could not update database entry %s-%s\n"
msgstr "sikertelen a '%s-%s' adatbázis-bejegyzés frissítése"
-#: lib/libalpm/add.c:813
-#, c-format
-msgid "could not add entry '%s' in cache"
+#: lib/libalpm/add.c:793
+#, fuzzy, c-format
+msgid "could not add entry '%s' in cache\n"
msgstr "sikertelen a '%s' bejegyzés hozzáadása a gyorsítótárhoz"
-#: lib/libalpm/add.c:843 lib/libalpm/remove.c:363 lib/libalpm/sync.c:1055
-#, c-format
-msgid "running \"ldconfig -r %s\""
-msgstr "az \"ldconfig -r %s\" futtatása"
-
-#: lib/libalpm/alpm.c:116
-#, c-format
-msgid "removing DB %s, %d remaining..."
-msgstr ""
-
-#: lib/libalpm/alpm.c:181
-#, c-format
-msgid "unregistering database '%s'"
-msgstr "adatbázis eltávolítása: '%s'"
-
-#: lib/libalpm/alpm.c:186
-#, c-format
-msgid "closing database '%s'"
-msgstr "adatbázis bezárása: '%s'"
-
-#: lib/libalpm/alpm.c:232
-#, c-format
-msgid ""
-"adding new server to database '%s': protocol '%s', server '%s', path '%s'"
-msgstr ""
-"új szerver hozzáadása a(z) '%s' adatbázishoz: protokoll '%s', szerver '%s', "
-"út '%s'"
-
-#: lib/libalpm/alpm.c:236
-#, c-format
-msgid "serverlist flushed for '%s'"
-msgstr "a szerverlista ürítve a(z) '%s' számára"
-
-#: lib/libalpm/alpm.c:279
-#, c-format
-msgid "failed to get lastupdate time for %s (no big deal)"
-msgstr ""
-"nem sikerült megkapni az utolsó módosítási idõpontját a következõnek: %s "
-"(nincs sok esély)"
-
-#: lib/libalpm/alpm.c:298
-#, c-format
-msgid "failed to sync db: %s [%d]"
-msgstr "nem sikerült szinkronizálni a(z) '%s' adatbázist [%d]"
-
-#: lib/libalpm/alpm.c:302
-#, c-format
-msgid "sync: new mtime for %s: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:308
-#, c-format
-msgid "flushing database %s%s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:312
-#, c-format
-msgid "could not remove database entry %s%s"
-msgstr "sikertelen a %s%s adatbázis-bejegyzés eltávolítása"
-
-#: lib/libalpm/alpm.c:481
-#, c-format
-msgid "could not get sha1sum for package %s-%s"
-msgstr "sikertelen az sha1 ellenõrzõ összeg elérése a %s-%s csomag számára"
-
-#: lib/libalpm/alpm.c:487
-#, c-format
-msgid "sha1sums for package %s-%s match"
-msgstr "a %s-%s csomag sha1 ellenõrzõ összegei megegyeznek"
-
-#: lib/libalpm/alpm.c:490
-#, c-format
-msgid "sha1sums do not match for package %s-%s"
-msgstr "%s-%s csomag sha1 ellenõrzõ összegei nem egyeznek meg"
-
-#: lib/libalpm/alpm.c:525
-#, c-format
-msgid "could not get md5sum for package %s-%s"
-msgstr "sikertelen az md5 ellenõrzõ összeg elérése a %s-%s csomag számára"
-
-#: lib/libalpm/alpm.c:531
-#, c-format
-msgid "md5sums for package %s-%s match"
-msgstr "a %s-%s csomag md5 ellenõrzõ összegei megegyeznek"
-
-#: lib/libalpm/alpm.c:534
-#, c-format
-msgid "md5sums do not match for package %s-%s"
-msgstr "%s-%s csomag md5 ellenõrzõ összegei nem egyeznek meg"
-
-#: lib/libalpm/alpm.c:783
-#, c-format
-msgid "could not remove lock file %s"
-msgstr "nem sikerült a zároló fájl (%s) eltávolítása"
-
-#: lib/libalpm/alpm.c:784
-#, c-format
-msgid "warning: could not remove lock file %s"
-msgstr "figyelmeztetés: nem sikerült a zároló fájl (%s) eltávolítása"
-
-#: lib/libalpm/alpm.c:920
-#, c-format
-msgid "config: new section '%s'"
-msgstr "beállítások: új szekció '%s'"
-
-#: lib/libalpm/alpm.c:951
-msgid "config: nopassiveftp"
-msgstr "beállítások: nopassiveftp"
-
-#: lib/libalpm/alpm.c:954
-msgid "config: usesyslog"
-msgstr "beállítások: usesyslog"
-
-#: lib/libalpm/alpm.c:957
-msgid "config: chomp"
-msgstr "beállítások: chomp"
-
-#: lib/libalpm/alpm.c:960
-msgid "config: usecolor"
-msgstr "beállítások: usecolor"
-
-#: lib/libalpm/alpm.c:969
-#, c-format
-msgid "config: including %s"
-msgstr "beállítások: a %s beolvasása"
-
-#: lib/libalpm/alpm.c:979 lib/libalpm/alpm.c:984
-#, c-format
-msgid "config: noupgrade: %s"
-msgstr "beállítások: noupgrade: %s"
-
-#: lib/libalpm/alpm.c:992 lib/libalpm/alpm.c:997
-#, c-format
-msgid "config: noextract: %s"
-msgstr "beállítások: noextract: %s"
-
-#: lib/libalpm/alpm.c:1005 lib/libalpm/alpm.c:1010
-#, c-format
-msgid "config: ignorepkg: %s"
-msgstr "beállítások: ignorepkg: %s"
-
-#: lib/libalpm/alpm.c:1018 lib/libalpm/alpm.c:1023
-#, c-format
-msgid "config: holdpkg: %s"
-msgstr "beállítások: holdpkg: %s"
-
-#: lib/libalpm/alpm.c:1030
-#, c-format
-msgid "config: dbpath: %s"
-msgstr "beállítások: adatbázisútvonal: %s"
-
-#: lib/libalpm/alpm.c:1037
-#, c-format
-msgid "config: cachedir: %s"
-msgstr "beállítások: gyorsítótárkönyvtár: %s"
-
-#: lib/libalpm/alpm.c:1044
+#: lib/libalpm/be_files.c:223
#, fuzzy, c-format
-msgid "config: rootdir: %s"
-msgstr "beállítások: gyorsítótárkönyvtár: %s"
-
-#: lib/libalpm/alpm.c:1047
-#, c-format
-msgid "config: logfile: %s"
-msgstr "beállítások: naplófájl: %s"
-
-#: lib/libalpm/alpm.c:1050
-#, c-format
-msgid "config: xfercommand: %s"
-msgstr "beállítások: xfercommand: %s"
-
-#: lib/libalpm/alpm.c:1055
-#, c-format
-msgid "config: upgradedelay: %d"
-msgstr "beállítások: frissítés késleltetése: %d"
-
-#: lib/libalpm/alpm.c:1093 lib/libalpm/sync.c:107
-msgid "checking for package replacements"
-msgstr "csomagcserék ellenõrzése"
-
-#: lib/libalpm/alpm.c:1104 lib/libalpm/sync.c:123
-#, c-format
-msgid "checking replacement '%s' for package '%s'"
-msgstr "csere vizsgálata: '%s' -> '%s'"
-
-#: lib/libalpm/alpm.c:1107 lib/libalpm/sync.c:125
-#, c-format
-msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)"
-msgstr "%s-%s: frissítés figyelmen kívül hagyása (a %s-%s fogja lecserélni)"
-
-#: lib/libalpm/alpm.c:1137 lib/libalpm/sync.c:160
-#, c-format
-msgid "%s-%s elected for upgrade (to be replaced by %s-%s)"
-msgstr "a %s-%s kiválasztva frissítésre (a %s-%s fogja lecserélni)"
-
-#: lib/libalpm/alpm.c:1159 lib/libalpm/sync.c:194
-#, c-format
-msgid "'%s' not found in sync db -- skipping"
-msgstr "a '%s' nem található a távoli adatbázisban -- kihagyás"
-
-#: lib/libalpm/alpm.c:1173 lib/libalpm/sync.c:208 lib/libalpm/sync.c:509
-#, c-format
-msgid "'%s' is already elected for removal -- skipping"
-msgstr "a '%s' már kijelölve eltávolításra -- kihagyás"
-
-#: lib/libalpm/alpm.c:1179
-#, c-format
-msgid "%s elected for upgrade (%s => %s)"
-msgstr "a(z) %s kiválasztva frissítésre (%s => %s)"
-
-#: lib/libalpm/be_files.c:61
-#, c-format
-msgid "unpacking database '%s'"
-msgstr "a(z) '%s' adatbázis kitömörítése"
-
-#: lib/libalpm/be_files.c:78
-#, c-format
-msgid "opening database from path '%s'"
-msgstr ""
-
-#: lib/libalpm/be_files.c:182
-#, c-format
-msgid "db scan could not find package: %s"
-msgstr ""
-
-#: lib/libalpm/be_files.c:186
-#, c-format
-msgid "invalid name for database entry '%s'"
+msgid "invalid name for database entry '%s'\n"
msgstr "érvénytelen név a '%s' adatbázis-bejegyzés számára"
-#: lib/libalpm/be_files.c:221
-msgid "invalid package entry provided to _alpm_db_read, skipping"
-msgstr "az _alpm_db_read nem érvényes csomag bejegyzést kapott, kihagyás"
-
-#: lib/libalpm/be_files.c:226
-#, c-format
-msgid ""
-"request to read database info for a file-based package '%s', skipping..."
-msgstr ""
-
-#: lib/libalpm/be_files.c:239
-#, c-format
-msgid "loading package data for %s : level=%d"
-msgstr ""
-
-#: lib/libalpm/be_files.c:247
-#, c-format
-msgid "cannot find '%s-%s' in db '%s'"
-msgstr "nem található '%s-%s' a(z) '%s' adatbázisban"
+#: lib/libalpm/be_files.c:275
+#, fuzzy, c-format
+msgid "loading package data for %s : level=%d\n"
+msgstr "a(z) %s csomag adatainak betöltése : szint=%d"
-#: lib/libalpm/be_files.c:255 lib/libalpm/be_files.c:401
-#: lib/libalpm/be_files.c:424 lib/libalpm/be_files.c:515
-#: lib/libalpm/be_files.c:605 lib/libalpm/be_files.c:632
-#: lib/libalpm/package.c:208
-#, c-format
-msgid "could not open file %s: %s"
+#: lib/libalpm/be_files.c:292 lib/libalpm/be_files.c:429
+#: lib/libalpm/be_files.c:452 lib/libalpm/be_files.c:563
+#: lib/libalpm/be_files.c:641 lib/libalpm/be_files.c:669
+#: lib/libalpm/package.c:787
+#, fuzzy, c-format
+msgid "could not open file %s: %s\n"
msgstr "nem sikerült megnyitni a %s fájlt: %s"
-#: lib/libalpm/be_files.c:512
-#, c-format
-msgid "writing %s-%s DESC information back to db"
-msgstr ""
-
-#: lib/libalpm/be_files.c:602
-#, c-format
-msgid "writing %s-%s FILES information back to db"
-msgstr ""
-
-#: lib/libalpm/be_files.c:629
-#, c-format
-msgid "writing %s-%s DEPENDS information back to db"
-msgstr ""
-
-#: lib/libalpm/cache.c:59
-#, c-format
-msgid "loading package cache for repository '%s'"
-msgstr "csomaggyorsítótár betöltése '%s' repó számára"
-
-#: lib/libalpm/cache.c:64
-#, c-format
-msgid "adding '%s' to package cache for db '%s'"
+#: lib/libalpm/cache.c:62
+#, fuzzy, c-format
+msgid "adding '%s' to package cache for db '%s'\n"
msgstr "a(z) '%s' csomag hozzáadása a(z) '%s' adatbázis csomaggyorsítótárához"
-#: lib/libalpm/cache.c:85
-#, c-format
-msgid "freeing package cache for repository '%s'"
-msgstr "csomaggyorsítótár felszabadítása a '%s' repó számára"
-
-#: lib/libalpm/cache.c:109
-#, c-format
-msgid "error: pkgcache is NULL for db '%s'"
-msgstr ""
-
-#: lib/libalpm/cache.c:129
-#, c-format
-msgid "adding entry '%s' in '%s' cache"
-msgstr "a '%s' bejegyzés hozzáadása a '%s' gyorsítótárhoz"
-
-#: lib/libalpm/cache.c:149
-#, c-format
-msgid "removing entry '%s' from '%s' cache"
-msgstr "a '%s' bejegyzés eltávolítása a '%s' gyorsítótárból"
-
-#: lib/libalpm/cache.c:156
-#, c-format
-msgid "cannot remove entry '%s' from '%s' cache: not found"
-msgstr ""
-"nem sikerült a '%s' bejegyzés eltávolítása a '%s' gyorsítótárból: nem "
-"található"
-
-#: lib/libalpm/cache.c:178
-#, c-format
-msgid "error: failed to get '%s' from NULL pkgcache"
-msgstr ""
-
-#: lib/libalpm/cache.c:201
-#, c-format
-msgid "loading group cache for repository '%s'"
-msgstr "csoportgyorsítótár betöltése a '%s' repó számára"
-
-#: lib/libalpm/conflict.c:69
-#, c-format
-msgid " found conflict '%s' : package '%s'"
-msgstr ""
-
-#: lib/libalpm/conflict.c:78
-#, c-format
-msgid " found conflict '%s' : package '%s' provides '%s'"
-msgstr ""
-
-#: lib/libalpm/conflict.c:101 lib/libalpm/conflict.c:143
-#, c-format
-msgid "package '%s' conflicts with itself - packaging error"
-msgstr "a(z) '%s' csomag ütközik saját magával - csomag hiba"
-
-#: lib/libalpm/conflict.c:107
-#, c-format
-msgid "checkconflicts: target '%s' vs db"
-msgstr "checkconflicts: cél '%s' vs db"
-
-#: lib/libalpm/conflict.c:149
-#, c-format
-msgid "checkconflicts: target '%s' vs all targets"
-msgstr "checkconflicts: cél '%s' vs összes cél"
-
-#: lib/libalpm/conflict.c:181
-#, c-format
-msgid "checkconflicts: db vs target '%s'"
-msgstr "checkconflicts: db vs cél '%s'"
-
-#: lib/libalpm/conflict.c:201
-#, c-format
-msgid "target '%s' is also in target list, using NEW conflicts"
-msgstr ""
-
-#: lib/libalpm/conflict.c:257
-#, c-format
-msgid "\tCONFLICTS:: %s conflicts with %s"
-msgstr ""
-
-#: lib/libalpm/conflict.c:349 lib/libalpm/deps.c:60 lib/libalpm/deps.c:438
-#: lib/libalpm/deps.c:634 lib/libalpm/deps.c:674 lib/libalpm/group.c:45
-#: lib/libalpm/handle.c:51 lib/libalpm/package.c:82 lib/libalpm/sync.c:67
-#: lib/libalpm/sync.c:614 lib/libalpm/sync.c:630 lib/libalpm/sync.c:727
-#: lib/libalpm/trans.c:55 lib/libalpm/util.c:614 lib/libalpm/util.c:621
-#, c-format
-msgid "malloc failure: could not allocate %d bytes"
-msgstr "malloc probléma: nem sikerült allokálni %d byte-ot"
-
-#: lib/libalpm/db.c:64 lib/libalpm/db.c:71
-#, c-format
-msgid "malloc failed: could not allocate %d bytes"
-msgstr "malloc probléma: nem sikerült allokálni %d byte-ot"
+#: lib/libalpm/db.c:285
+#, fuzzy, c-format
+msgid "could not remove database entry %s%s\n"
+msgstr "sikertelen a %s%s adatbázis-bejegyzés eltávolítása"
-#: lib/libalpm/db.c:167
-msgid "attempt to re-register the 'local' DB"
+#: lib/libalpm/db.c:553
+#, fuzzy
+msgid "attempt to re-register the 'local' DB\n"
msgstr "kísérlet a 'local' adatbázis újraregisztrálására"
-#: lib/libalpm/db.c:175
-#, c-format
-msgid "attempt to re-register the '%s' database, using existing"
-msgstr ""
-"kísérlet a(z) '%s' adatbázis újraregisztrálására, a jelenlegi használata"
-
-#: lib/libalpm/db.c:181
-#, c-format
-msgid "registering database '%s'"
-msgstr "adatbázis regisztrálása: '%s'"
-
-#: lib/libalpm/db.c:186
-#, c-format
-msgid "database directory '%s' does not exist, creating it"
-msgstr "'%s' adatbázis-könyvtár nem létezik, létrehozás"
-
-#: lib/libalpm/db.c:197
-#, c-format
-msgid "opening database '%s'"
-msgstr "adatbázis megnyitása: '%s'"
-
-#: lib/libalpm/deps.c:131
-msgid "started sorting dependencies"
-msgstr "a függõségek rendezése elkezdõdött"
+#: lib/libalpm/db.c:562 lib/libalpm/db.c:613
+#, fuzzy
+msgid "database path is undefined\n"
+msgstr "az adatbázis-útvonal nincs megadva"
-#: lib/libalpm/deps.c:136
-msgid "possible dependency cycle detected"
-msgstr "lehetséges körkörös függõségi probléma észlelve"
+#: lib/libalpm/deps.c:173
+#, fuzzy
+msgid "dependency cycle detected:\n"
+msgstr "körkörös függõség észlelve\n"
-#: lib/libalpm/deps.c:183
-msgid "sorting dependencies finished"
-msgstr "a függõségek rendezése befejezõdött"
-
-#: lib/libalpm/deps.c:225 lib/libalpm/deps.c:310
-msgid "null package found in package list"
-msgstr ""
-
-#: lib/libalpm/deps.c:230
-#, c-format
-msgid "cannot find package installed '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:261
-#, c-format
-msgid "checkdeps: dependency '%s' has moved from '%s' to '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:280
+#: lib/libalpm/deps.c:175
#, c-format
-msgid "checkdeps: dependency '%s' satisfied by installed package '%s'"
+msgid "%s will be removed after its %s dependency\n"
msgstr ""
-#: lib/libalpm/deps.c:289
-#, c-format
-msgid "checkdeps: updated '%s' won't satisfy a dependency of '%s'"
-msgstr "checkdeps: a frissített '%s' nem elégíti ki '%s' egy függõségét"
-
-#: lib/libalpm/deps.c:359
-#, c-format
-msgid "missing dependency '%s' for package '%s'"
-msgstr "hiányzó '%s' függõség a '%s' csomagnál"
-
-#: lib/libalpm/deps.c:409
-#, c-format
-msgid "checkdeps: found %s as required by %s"
-msgstr "checkdeps: a %s igényelt a %s által"
-
-#: lib/libalpm/deps.c:485
-#, c-format
-msgid "excluding %s -- explicitly installed"
-msgstr "a %s kihagyása -- explicit módon lett telepítve"
-
-#: lib/libalpm/deps.c:532
-#, c-format
-msgid "cannot find package \"%s\" or anything that provides it!"
-msgstr "nem található a \"%s\" csomag és nem is szolgáltatja semmi!"
-
-#: lib/libalpm/deps.c:540 lib/libalpm/deps.c:551
+#: lib/libalpm/deps.c:177
#, c-format
-msgid "adding '%s' to the targets"
-msgstr "a '%s' hozzáadása a célcsomagokhoz"
-
-#: lib/libalpm/deps.c:583
-msgid "started resolving dependencies"
-msgstr "a függõségek rendezése elkezdõdött"
-
-#: lib/libalpm/deps.c:601
-#, c-format
-msgid "%s provides dependency %s -- skipping"
-msgstr "a %s szolgáltatja a %s függõséget -- kihagyás"
-
-#: lib/libalpm/deps.c:630
-#, c-format
-msgid ""
-"cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+msgid "%s will be installed before its %s dependency\n"
msgstr ""
-"nem sikerült a függõségek feloldása a \"%s\" számára (nem található a \"%s\" "
-"a csomagok között)"
-
-#: lib/libalpm/deps.c:647
-#, c-format
-msgid "dependency %s is already in the target list -- skipping"
-msgstr "a %s függõség már a célcsomagok között szerepel -- kihagyás"
-#: lib/libalpm/deps.c:667
-#, c-format
-msgid "pulling dependency %s (needed by %s)"
-msgstr "a %s függõség behozása (a %s igényli)"
-
-#: lib/libalpm/deps.c:671
-#, c-format
-msgid "cannot resolve dependencies for \"%s\""
+#: lib/libalpm/deps.c:573
+#, fuzzy, c-format
+msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "nem sikerült feloldani a függõségeket a \"%s\" számára"
-#: lib/libalpm/deps.c:687
-#, c-format
-msgid "dependency cycle detected: %s"
-msgstr "körkörös függõség észlelve: %s"
-
-#: lib/libalpm/deps.c:691
-msgid "finished resolving dependencies"
-msgstr "a függõségek rendezése elkezdõdött"
-
-#: lib/libalpm/error.c:40
+#: lib/libalpm/error.c:43
msgid "out of memory!"
msgstr "elfogyott a memória!"
-#: lib/libalpm/error.c:42
+#: lib/libalpm/error.c:45
msgid "unexpected system error"
msgstr "nemvárt hiba"
-#: lib/libalpm/error.c:44
+#: lib/libalpm/error.c:47
msgid "insufficient privileges"
msgstr "elégtelen jogosultságok"
-#: lib/libalpm/error.c:46
+#: lib/libalpm/error.c:49
msgid "could not find or read file"
msgstr "nem található vagy nem olvasható a fájl"
-#: lib/libalpm/error.c:48
+#: lib/libalpm/error.c:51
+#, fuzzy
+msgid "could not find or read directory"
+msgstr "nem található vagy nem olvasható a fájl"
+
+#: lib/libalpm/error.c:53
msgid "wrong or NULL argument passed"
msgstr "rossz vagy NULL argumentum érkezett"
-#: lib/libalpm/error.c:51
+#: lib/libalpm/error.c:56
msgid "library not initialized"
msgstr "a könyvtár nem inicializált"
-#: lib/libalpm/error.c:53
+#: lib/libalpm/error.c:58
msgid "library already initialized"
msgstr "a könyvtár már inicializált"
-#: lib/libalpm/error.c:55
+#: lib/libalpm/error.c:60
msgid "unable to lock database"
msgstr "nem sikerült zárolni az adatbázist"
-#: lib/libalpm/error.c:58
+#: lib/libalpm/error.c:63
msgid "could not open database"
msgstr "nem sikerült megnyitni az adatbázist"
-#: lib/libalpm/error.c:60
+#: lib/libalpm/error.c:65
msgid "could not create database"
msgstr "nem sikerült létrehozni az adatbázist"
-#: lib/libalpm/error.c:62
+#: lib/libalpm/error.c:67
msgid "database not initialized"
msgstr "az adatbázis nem inicializált"
-#: lib/libalpm/error.c:64
+#: lib/libalpm/error.c:69
msgid "database already registered"
msgstr "az adatbázis már regisztrált"
-#: lib/libalpm/error.c:66
+#: lib/libalpm/error.c:71
msgid "could not find database"
msgstr "nem található az adatbázis"
-#: lib/libalpm/error.c:68
+#: lib/libalpm/error.c:73
msgid "could not update database"
msgstr "nem sikerült megnyitni az adatbázist"
-#: lib/libalpm/error.c:70
+#: lib/libalpm/error.c:75
msgid "could not remove database entry"
msgstr "nem sikerült eltávolítani az adatbázis-bejegyzést"
-#: lib/libalpm/error.c:73
+#: lib/libalpm/error.c:78
msgid "invalid url for server"
msgstr "érvénytelen url"
-#: lib/libalpm/error.c:80
+#: lib/libalpm/error.c:85
msgid "could not set parameter"
msgstr "nem sikerült beállítani a paramétert"
-#: lib/libalpm/error.c:83
+#: lib/libalpm/error.c:88
msgid "transaction already initialized"
msgstr "a tranzakció már inicializált"
-#: lib/libalpm/error.c:85 lib/libalpm/error.c:89
+#: lib/libalpm/error.c:90 lib/libalpm/error.c:94
msgid "transaction not initialized"
msgstr "a tranzakció nem inicializált"
-#: lib/libalpm/error.c:87
+#: lib/libalpm/error.c:92
msgid "duplicate target"
msgstr "két azonos célcsomag"
-#: lib/libalpm/error.c:91
+#: lib/libalpm/error.c:96
msgid "transaction not prepared"
msgstr "a tranzakció nincs elõkészítve"
-#: lib/libalpm/error.c:93
+#: lib/libalpm/error.c:98
msgid "transaction aborted"
msgstr "a tranzakció félbeszakítva"
-#: lib/libalpm/error.c:95
+#: lib/libalpm/error.c:100
msgid "operation not compatible with the transaction type"
msgstr "a mûvelet nem egyeztethetõ össze a jelenlegi tranzakciótípussal"
-#: lib/libalpm/error.c:97 lib/libalpm/sync.c:994
+#: lib/libalpm/error.c:102
msgid "could not commit transaction"
msgstr "nem sikerült commitolni a tranzakciót"
-#: lib/libalpm/error.c:99
+#: lib/libalpm/error.c:104
msgid "could not download all files"
msgstr "nem sikerült letölteni az összes fájlt"
-#: lib/libalpm/error.c:102
+#: lib/libalpm/error.c:107
msgid "could not find or read package"
msgstr "nem található vagy nem olvasható a csomag"
-#: lib/libalpm/error.c:104
+#: lib/libalpm/error.c:109
msgid "invalid or corrupted package"
msgstr "nem érvényes vagy sérült csomag"
-#: lib/libalpm/error.c:106
+#: lib/libalpm/error.c:111
msgid "cannot open package file"
msgstr "nem sikerült megnyitni a csomagfájlt"
-#: lib/libalpm/error.c:108
+#: lib/libalpm/error.c:113
msgid "cannot load package data"
msgstr "nem sikerült betölteni a csomagadatokat"
-#: lib/libalpm/error.c:110
+#: lib/libalpm/error.c:115
msgid "package already installed"
msgstr "a csomag már telepítve van"
-#: lib/libalpm/error.c:112
+#: lib/libalpm/error.c:117
msgid "package not installed or lesser version"
msgstr "a csomag nincs telepítve vagy kisebb verziójú"
-#: lib/libalpm/error.c:114
+#: lib/libalpm/error.c:119
msgid "cannot remove all files for package"
msgstr "nem sikerült eltávolítani a csomag összes fájlját"
-#: lib/libalpm/error.c:116
+#: lib/libalpm/error.c:121
msgid "package name is not valid"
msgstr "nem érvényes a csomagnév"
-#: lib/libalpm/error.c:118
+#: lib/libalpm/error.c:123
msgid "corrupted package"
msgstr "sérült csomag"
-#: lib/libalpm/error.c:120
+#: lib/libalpm/error.c:125
msgid "no such repository"
msgstr "nincs ilyen repó"
-#: lib/libalpm/error.c:123
+#: lib/libalpm/error.c:128
+#, fuzzy
+msgid "corrupted delta"
+msgstr "sérült csomag"
+
+#: lib/libalpm/error.c:130
+msgid "delta patch failed"
+msgstr ""
+
+#: lib/libalpm/error.c:133
msgid "group not found"
msgstr "a csoport nem található"
-#: lib/libalpm/error.c:126
+#: lib/libalpm/error.c:136
msgid "could not satisfy dependencies"
msgstr "nem sikerült kielégíteni a függõségeket"
-#: lib/libalpm/error.c:128
+#: lib/libalpm/error.c:138
msgid "conflicting dependencies"
msgstr "ütközõ függõségek"
-#: lib/libalpm/error.c:130
+#: lib/libalpm/error.c:140
msgid "conflicting files"
msgstr "ütközõ fájlok"
-#: lib/libalpm/error.c:133
+#: lib/libalpm/error.c:143
msgid "user aborted the operation"
msgstr "felhasználói megszakítás"
-#: lib/libalpm/error.c:135
+#: lib/libalpm/error.c:145
msgid "internal error"
msgstr "belsõ hiba"
-#: lib/libalpm/error.c:137
+#: lib/libalpm/error.c:147
msgid "libarchive error"
msgstr "libarchive hiba"
-#: lib/libalpm/error.c:139
-msgid "not enough space on disk"
-msgstr "nincs elég hely"
-
-#: lib/libalpm/error.c:142
+#: lib/libalpm/error.c:150
msgid "not confirmed"
msgstr "nem megerõsített"
-#: lib/libalpm/error.c:145
-msgid "bad configuration section name"
-msgstr ""
-
-#: lib/libalpm/error.c:147
-msgid "'local' is reserved and cannot be used as a repository name"
-msgstr "a 'local' név fenntartott és nem használható repónévként"
-
-#: lib/libalpm/error.c:149
-msgid "syntax error in config file"
-msgstr "szintaktikai hiba a beállításfájlban"
-
-#: lib/libalpm/error.c:151
-msgid "all directives must belong to a section"
-msgstr "minden direktívának egy szekcióhoz kell tartoznia"
-
-#: lib/libalpm/error.c:153
+#: lib/libalpm/error.c:152
msgid "invalid regular expression"
msgstr "érvénytelen reguláris kifejezés"
-#: lib/libalpm/error.c:156
+#: lib/libalpm/error.c:155
msgid "connection to remote host failed"
msgstr "nem sikerült csatlakozni a távoli géphez"
-#: lib/libalpm/error.c:159
+#: lib/libalpm/error.c:158
msgid "unexpected error"
msgstr "nemvárt hiba"
-#: lib/libalpm/handle.c:163
-#, c-format
-msgid "cannot canonicalize specified root path '%s'"
-msgstr ""
-
-#: lib/libalpm/handle.c:175
-#, c-format
-msgid "option 'root' = %s"
-msgstr ""
-
-#: lib/libalpm/handle.c:195
-#, c-format
-msgid "option 'dbpath' = %s"
-msgstr ""
-
-#: lib/libalpm/handle.c:211
-#, c-format
-msgid "option 'cachedir' = %s"
-msgstr ""
-
-#: lib/libalpm/md5driver.c:56
-#, c-format
-msgid "%s can't be opened\n"
-msgstr "nem sikerült megnyitni a következõt: %s\n"
-
-#: lib/libalpm/md5driver.c:74
-#, c-format
-msgid "md5(%s) = %s"
-msgstr ""
+#: lib/libalpm/package.c:124
+#, fuzzy, c-format
+msgid "could not get md5sum for package %s-%s\n"
+msgstr "sikertelen az md5 ellenõrzõ összeg elérése a %s-%s csomag számára"
-#: lib/libalpm/package.c:147
-#, c-format
-msgid "%s-%s: ignoring package upgrade (%s)"
-msgstr "%s-%s: a csomagfrissítés figyelmen kívül hagyása (%s)"
+#: lib/libalpm/package.c:133
+#, fuzzy, c-format
+msgid "md5sums do not match for package %s-%s\n"
+msgstr "%s-%s csomag md5 ellenõrzõ összegei nem egyeznek meg"
-#: lib/libalpm/package.c:158
-#, c-format
-msgid "%s: forcing upgrade to version %s"
+#: lib/libalpm/package.c:737
+#, fuzzy, c-format
+msgid "%s: forcing upgrade to version %s\n"
msgstr "%s: erõltetett frissítés a %s verzióra"
-#: lib/libalpm/package.c:163
-#, c-format
-msgid "%s: local (%s) is newer than %s (%s)"
+#: lib/libalpm/package.c:742
+#, fuzzy, c-format
+msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: a helyi (%s) újabb, mint %s (%s)"
-#: lib/libalpm/package.c:171
-#, c-format
-msgid "%s-%s: delaying upgrade of package (%s)"
+#: lib/libalpm/package.c:750
+#, fuzzy, c-format
+msgid "%s-%s: delaying upgrade of package (%s)\n"
msgstr "%s-%s: a csomag frissítésének késleltetése (%s)"
-#: lib/libalpm/package.c:222 lib/libalpm/package.c:281
-#, c-format
-msgid "%s: syntax error in description file line %d"
-msgstr "%s: szintaktikai hiba a leírófájl %d. sorában"
-
-#: lib/libalpm/package.c:355
-msgid "could not parse the package description file"
+#: lib/libalpm/package.c:931
+#, fuzzy, c-format
+msgid "could not parse package description file in %s\n"
msgstr "nem sikerült értelmezni a csomagleíró fájlt"
-#: lib/libalpm/package.c:359
-#, c-format
-msgid "missing package name in %s"
+#: lib/libalpm/package.c:936
+#, fuzzy, c-format
+msgid "missing package name in %s\n"
msgstr "hiányzó csomagnév itt: %s"
-#: lib/libalpm/package.c:363
-#, c-format
-msgid "missing package version in %s"
+#: lib/libalpm/package.c:940
+#, fuzzy, c-format
+msgid "missing package version in %s\n"
msgstr "hiányzó csomagverzió itt: %s"
-#: lib/libalpm/package.c:398
-#, c-format
-msgid "could not remove tempfile %s"
+#: lib/libalpm/package.c:970
+#, fuzzy, c-format
+msgid "could not remove tempfile %s\n"
msgstr "nem sikerült eltávolítani a %s ideiglenes fájlt"
-#: lib/libalpm/package.c:411 lib/libalpm/package.c:418
-#, c-format
-msgid "error while reading package: %s"
+#: lib/libalpm/package.c:985 lib/libalpm/package.c:998
+#, fuzzy, c-format
+msgid "error while reading package %s: %s\n"
msgstr "hiba a csomag olvasása közben: %s"
-#: lib/libalpm/package.c:424
-msgid "missing package metadata"
-msgstr ""
-
-#: lib/libalpm/package.c:431
-#, c-format
-msgid "missing package filelist in %s, generating one"
-msgstr ""
-
-#: lib/libalpm/package.c:570
-#, c-format
-msgid "adding '%s' in requiredby field for '%s'"
-msgstr ""
-
-#: lib/libalpm/package.c:584
-#, c-format
-msgid "adding '%s' in requiredby field for '%s' (provides: %s)"
-msgstr ""
-
-#: lib/libalpm/remove.c:79
-#, c-format
-msgid "could not find %s in database"
-msgstr "nem található a %s az adatbázisban"
+#: lib/libalpm/package.c:1005
+#, fuzzy, c-format
+msgid "missing package metadata in %s\n"
+msgstr "hiányzó csomaginformációs fájl"
-#: lib/libalpm/remove.c:93
-#, c-format
-msgid "adding %s in the targets list"
-msgstr "a %s hozzáadása a céllistához"
+#: lib/libalpm/package.c:1012
+#, fuzzy, c-format
+msgid "missing package filelist in %s, generating one\n"
+msgstr "hiányzik a(z) %s csomag fájllistája, generálás"
#: lib/libalpm/remove.c:121
-#, c-format
-msgid "pulling %s in the targets list"
-msgstr "a %s behozása a céllistába"
-
-#: lib/libalpm/remove.c:124
-#, c-format
-msgid "could not find %s in database -- skipping"
+#, fuzzy, c-format
+msgid "could not find %s in database -- skipping\n"
msgstr "nem található a %s az adatbázisban -- kihagyás"
-#: lib/libalpm/remove.c:142
-msgid "finding removable dependencies"
-msgstr "eltávolítható függõségek keresése"
-
-#: lib/libalpm/remove.c:175
-#, c-format
-msgid "cannot remove file '%s': %s"
+#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:243
+#, fuzzy, c-format
+msgid "cannot remove file '%s': %s\n"
msgstr "nem sikerült eltávolítani a '%s' fájlt : %s"
-#: lib/libalpm/remove.c:213
-#, c-format
-msgid "Skipping removal of '%s' due to NoUpgrade"
-msgstr "A '%s' törlésének kihagyása a NoUpgrade miatt"
-
-#: lib/libalpm/remove.c:220
-#, c-format
-msgid "file %s does not exist"
-msgstr "a %s fájl nemlétezik"
-
-#: lib/libalpm/remove.c:227
-#, c-format
-msgid "keeping directory %s"
-msgstr "a %s könyvtár megtartása"
+#: lib/libalpm/remove.c:337
+#, fuzzy, c-format
+msgid "could not remove database entry %s-%s\n"
+msgstr "nem sikerült eltávolítani a %s-%s adatbázis-bejegyzést"
-#: lib/libalpm/remove.c:229
-#, c-format
-msgid "removing directory %s"
-msgstr "a %s könyvtár törlése"
+#: lib/libalpm/remove.c:342
+#, fuzzy, c-format
+msgid "could not remove entry '%s' from cache\n"
+msgstr "nem sikerült eltávolítani a '%s' bejegyzést a gyorsítótárból"
-#: lib/libalpm/remove.c:236
+#: lib/libalpm/server.c:56
#, c-format
-msgid "%s is in trans->skip_remove, skipping removal"
+msgid "url '%s' is invalid, ignoring\n"
msgstr ""
-#: lib/libalpm/remove.c:250
-#, c-format
-msgid "transaction is set to NOSAVE, not backing up '%s'"
+#: lib/libalpm/server.c:60
+msgid "url scheme not specified, assuming http\n"
msgstr ""
-#: lib/libalpm/remove.c:254
-#, c-format
-msgid "unlinking %s"
-msgstr "a %s törlése"
-
-#: lib/libalpm/remove.c:261
-#, c-format
-msgid "cannot remove file %s: %s"
-msgstr "nem sikerült eltávolítani a %s fájlt: %s"
+#: lib/libalpm/server.c:241
+msgid "disk"
+msgstr ""
-#: lib/libalpm/remove.c:294
-#, c-format
-msgid "removing package %s-%s"
-msgstr "a %s-%s csomag eltávolítása"
+#: lib/libalpm/server.c:245
+#, fuzzy, c-format
+msgid "failed retrieving file '%s' from %s : %s\n"
+msgstr "nem sikerült néhány fájlt letölteni innen: %s\n"
-#: lib/libalpm/remove.c:309
-#, c-format
-msgid "not removing package '%s', can't remove all files"
+#: lib/libalpm/server.c:275
+msgid "cannot resume download, starting over\n"
msgstr ""
-"nem távolítom el a(z) '%s' csomagot, nem tudom eltávolítani az összes fájlt"
-#: lib/libalpm/remove.c:316
-#, c-format
-msgid "removing %d files"
-msgstr "%d fájl törlése"
-
-#: lib/libalpm/remove.c:337
-#, c-format
-msgid "removing database entry '%s'"
-msgstr "a '%s' adatbázis-bejegyzés eltávolítása"
+#: lib/libalpm/server.c:288
+#, fuzzy, c-format
+msgid "cannot write to file '%s'\n"
+msgstr "nem sikerült eltávolítani a '%s' fájlt : %s"
-#: lib/libalpm/remove.c:339
-#, c-format
-msgid "could not remove database entry %s-%s"
-msgstr "nem sikerült eltávolítani a %s-%s adatbázis-bejegyzést"
+#: lib/libalpm/server.c:307
+#, fuzzy, c-format
+msgid "error downloading '%s': %s\n"
+msgstr "hiba a csomag olvasása közben: %s"
-#: lib/libalpm/remove.c:344
-#, c-format
-msgid "could not remove entry '%s' from cache"
-msgstr "nem sikerült eltávolítani a '%s' bejegyzést a gyorsítótárból"
+#: lib/libalpm/server.c:319
+#, fuzzy, c-format
+msgid "error writing to file '%s': %s\n"
+msgstr "nem sikerült eltávolítani a '%s' fájlt : %s"
-#: lib/libalpm/sha1.c:397
-#, c-format
-msgid "sha1: %s can't be opened\n"
-msgstr "sha2: nem sikerült megnyitni a következõt: %s\n"
+#: lib/libalpm/server.c:387
+#, fuzzy, c-format
+msgid "could not chdir to %s\n"
+msgstr "nem sikerült a könyvtárat a /-re váltani (%s)"
-#: lib/libalpm/sha1.c:412
-#, c-format
-msgid "sha1(%s) = %s"
+#: lib/libalpm/server.c:394
+msgid "running XferCommand: fork failed!\n"
msgstr ""
-#: lib/libalpm/sync.c:183
-msgid "checking for package upgrades"
-msgstr "csomagfrissítések vizsgálata"
-
-#: lib/libalpm/sync.c:215
-#, c-format
-msgid "%s-%s elected for upgrade (%s => %s)"
-msgstr "a(z) %s-%s kiválasztva frissítésre (%s => %s)"
+#: lib/libalpm/server.c:445
+msgid "URL does not contain a file for download\n"
+msgstr ""
-#: lib/libalpm/sync.c:270
-#, c-format
-msgid "searching for target in repo '%s'"
-msgstr "cél keresése a '%s' repóban"
+#: lib/libalpm/server.c:458
+#, fuzzy, c-format
+msgid "failed to download %s\n"
+msgstr "nem sikerült letölteni az összes fájlt"
-#: lib/libalpm/sync.c:278 lib/libalpm/sync.c:301
-#, c-format
-msgid "target '%s' not found -- looking for provisions"
-msgstr "a(z) '%s' cél nem található - szolgálatók keresése"
+#: lib/libalpm/sync.c:135
+#, fuzzy, c-format
+msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
+msgstr "%s-%s: frissítés figyelmen kívül hagyása (a %s-%s fogja lecserélni)"
-#: lib/libalpm/sync.c:283 lib/libalpm/sync.c:306
-#, c-format
-msgid "found '%s' as a provision for '%s'"
-msgstr "a(z) '%s' szolgáltatja a(z) '%s' csomagot"
+#: lib/libalpm/sync.c:250
+#, fuzzy, c-format
+msgid "%s: ignoring package upgrade (%s => %s)\n"
+msgstr "%s-%s: a csomagfrissítés figyelmen kívül hagyása (%s)"
-#: lib/libalpm/sync.c:290
-#, c-format
-msgid "repository '%s' not found"
+#: lib/libalpm/sync.c:320
+#, fuzzy, c-format
+msgid "repository '%s' not found\n"
msgstr "a(z) '%s' repó nem található"
-#: lib/libalpm/sync.c:331
-#, c-format
-msgid "%s-%s is up to date -- skipping"
-msgstr "a(z) %s-%s naprakész -- kihagyás"
-
#: lib/libalpm/sync.c:354
-#, c-format
-msgid "adding target '%s' to the transaction set"
-msgstr "a '%s' hozzáadása a tranzakcióhoz"
-
-#: lib/libalpm/sync.c:402
-msgid "resolving target's dependencies"
-msgstr "a célok függõségeinek feloldása"
-
-#: lib/libalpm/sync.c:422
-#, c-format
-msgid "adding package %s-%s to the transaction targets"
-msgstr "a '%s-%s' hozzáadása a célcsomagokhoz"
-
-#: lib/libalpm/sync.c:463
-msgid "looking for unresolvable dependencies"
-msgstr "elégtelen függõségek keresése"
-
-#: lib/libalpm/sync.c:494
-#, c-format
-msgid "package '%s' conflicts with '%s'"
-msgstr "a(z) '%s' csomag ütközik a(z) '%s' csomaggal"
-
-#: lib/libalpm/sync.c:516
-#, c-format
-msgid "'%s' not found in transaction set -- skipping"
-msgstr "a '%s' nem található a tranzakcióban -- kihagyás"
-
-#: lib/libalpm/sync.c:527
-#, c-format
-msgid "package '%s' provides its own conflict"
-msgstr "a(z) '%s' csomag saját magával ütközik"
-
-#: lib/libalpm/sync.c:550 lib/libalpm/sync.c:555
-#, c-format
-msgid "'%s' is in the target list -- keeping it"
-msgstr "a(z) '%s' már a cél listában -- megtartás"
-
-#: lib/libalpm/sync.c:567 lib/libalpm/sync.c:604
-#, c-format
-msgid "removing '%s' from target list"
-msgstr "a(z) '%s' bejegyzés eltávolítása a céllistából"
-
-#: lib/libalpm/sync.c:576
-#, c-format
-msgid "resolving package '%s' conflict"
-msgstr "konfliktus feloldása a(z) '%s' csomag számára"
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- skipping\n"
+msgstr "a(z) %s-%s naprakész -- kihagyás"
-#: lib/libalpm/sync.c:599
-#, c-format
-msgid "electing '%s' for removal"
-msgstr "a(z) '%s' kiválasztása eltávolításra"
+#: lib/libalpm/sync.c:358
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- reinstalling\n"
+msgstr "a(z) %s-%s naprakész -- kihagyás"
-#: lib/libalpm/sync.c:610 lib/libalpm/sync.c:626
-msgid "unresolvable package conflicts detected"
+#: lib/libalpm/sync.c:613 lib/libalpm/sync.c:618
+#, fuzzy
+msgid "unresolvable package conflicts detected\n"
msgstr "feloldhatatlan csomagütközések"
-#: lib/libalpm/sync.c:678
-msgid "checking dependencies of packages designated for removal"
-msgstr "az eltávolítandó csomagok függõségeinek ellenõrzése"
-
-#: lib/libalpm/sync.c:692
-msgid "something has gone horribly wrong"
-msgstr "valami nagyon rosszul ment"
-
-#: lib/libalpm/sync.c:712
-#, c-format
-msgid "found '%s' as a provision for '%s' -- conflict aborted"
-msgstr "a(z) '%s' szolgáltatja a(z) '%s' csomagot - konfliktus félbeszakítva"
-
-#: lib/libalpm/sync.c:808
-#, c-format
-msgid "%s is already in the cache\n"
-msgstr "%s már a gyorsítótárban\n"
-
-#: lib/libalpm/sync.c:819
-#, c-format
-msgid "no %s cache exists, creating...\n"
-msgstr "nem létezik a(z) %s gyorsítótár. létrehozás...\n"
-
-#: lib/libalpm/sync.c:820
-#, c-format
-msgid "warning: no %s cache exists, creating..."
-msgstr "figyelmeztetés: a(z) %s gyorsítótár nem létezik. létrehozás..."
+#: lib/libalpm/sync.c:628
+#, fuzzy, c-format
+msgid "malloc failure: could not allocate %zd bytes\n"
+msgstr "malloc probléma: nem sikerült allokálni %d byte-ot"
#: lib/libalpm/sync.c:825
-msgid "couldn't create package cache, using /tmp instead\n"
-msgstr "nem sikerült létrehozni a csomag gyorsítótárat, a /tmp használata\n"
-
-#: lib/libalpm/sync.c:826
-msgid "warning: couldn't create package cache, using /tmp instead"
-msgstr ""
-"figyelmeztetés: nem sikerült létrehozni a csomag gyorsítótárat, a /tmp "
-"használata"
-
-#: lib/libalpm/sync.c:833
#, c-format
-msgid "failed to retrieve some files from %s\n"
-msgstr "nem sikerült néhány fájlt letölteni innen: %s\n"
+msgid "command: %s\n"
+msgstr ""
-#: lib/libalpm/sync.c:863 lib/libalpm/sync.c:875
-#, c-format
-msgid "can't get md5 or sha1 checksum for package %s\n"
+#: lib/libalpm/sync.c:888 lib/libalpm/sync.c:896
+#, fuzzy, c-format
+msgid "can't get md5 checksum for file %s\n"
msgstr ""
"sikertelen az md5 vagy sha1 ellenõrzõ összeg elérése a %s csomag számára\n"
-#: lib/libalpm/sync.c:894
-#, c-format
-msgid "archive %s was corrupted (bad MD5 or SHA1 checksum)\n"
+#: lib/libalpm/sync.c:910
+#, fuzzy, c-format
+msgid "file %s was corrupted (bad MD5 checksum)\n"
msgstr "a(z) %s archívum sérült volt (rossz MD5 vagy SHA1 szumma)\n"
-#: lib/libalpm/sync.c:896
+#: lib/libalpm/sync.c:1056
#, c-format
-msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr "a(z) %s archívum sérült (rossz MD5 vagy SHA1 szumma)\n"
+msgid "failed to retrieve some files from %s\n"
+msgstr "nem sikerült néhány fájlt letölteni innen: %s\n"
-#: lib/libalpm/sync.c:917
-msgid "could not create removal transaction"
+#: lib/libalpm/sync.c:1137
+#, fuzzy
+msgid "could not create removal transaction\n"
msgstr "nem sikerült létrehozni az eltávolítási tranzakciót"
-#: lib/libalpm/sync.c:923
-msgid "could not initialize the removal transaction"
+#: lib/libalpm/sync.c:1143
+#, fuzzy
+msgid "could not initialize the removal transaction\n"
msgstr "nem sikerült inicializálni az eltávolítási tranzakciót"
-#: lib/libalpm/sync.c:943
-msgid "removing conflicting and to-be-replaced packages"
-msgstr "az ütközõ és lecserélendõ csomagok eltávolítása"
-
-#: lib/libalpm/sync.c:945
-msgid "could not prepare removal transaction"
+#: lib/libalpm/sync.c:1165
+#, fuzzy
+msgid "could not prepare removal transaction\n"
msgstr "nem sikerült létrehozni az eltávolítási tranzakciót"
-#: lib/libalpm/sync.c:951
-msgid "could not commit removal transaction"
+#: lib/libalpm/sync.c:1171
+#, fuzzy
+msgid "could not commit removal transaction\n"
msgstr "nem sikerült commitolni az eltávolító tranzakciót"
-#: lib/libalpm/sync.c:958
-msgid "installing packages"
-msgstr "csomagok telepítése"
-
-#: lib/libalpm/sync.c:961
-msgid "could not create transaction"
+#: lib/libalpm/sync.c:1182
+#, fuzzy
+msgid "could not create transaction\n"
msgstr "nem sikerült létrehozni a tranzakciót"
-#: lib/libalpm/sync.c:966
-msgid "could not initialize transaction"
+#: lib/libalpm/sync.c:1187
+#, fuzzy
+msgid "could not initialize transaction\n"
msgstr "nem sikerült inicializálni a tranzakciót"
-#: lib/libalpm/sync.c:989
-msgid "could not prepare transaction"
+#: lib/libalpm/sync.c:1214
+#, fuzzy
+msgid "could not prepare transaction\n"
msgstr "nem sikerült elõkészíteni a tranzakciót"
-#: lib/libalpm/sync.c:1001
-msgid "updating database for replaced packages' dependencies"
-msgstr "a lecserélt csomagok függõségeinek frissítése az adatbázisban"
-
-#: lib/libalpm/sync.c:1030
-#, c-format
-msgid "could not update requiredby for database entry %s-%s"
-msgstr "sikertelen a %s-%s 'függ tõle' adatbázis-bejegyzésének frissítése"
+#: lib/libalpm/sync.c:1219
+#, fuzzy
+msgid "could not commit transaction\n"
+msgstr "nem sikerült commitolni a tranzakciót"
-#: lib/libalpm/sync.c:1039
-#, c-format
-msgid "could not update new database entry %s-%s"
-msgstr "sikertelen a '%s-%s' adatbázis-bejegyzés frissítése"
+#: lib/libalpm/trans.c:214
+#, fuzzy, c-format
+msgid "could not remove lock file %s\n"
+msgstr "nem sikerült a zároló fájl (%s) eltávolítása"
-#: lib/libalpm/sync.c:1079
+#: lib/libalpm/trans.c:483
#, c-format
-msgid "found package '%s-%s' in sync"
+msgid "No /bin/sh in root dir (%s), aborting scriptlet\n"
msgstr ""
-#: lib/libalpm/sync.c:1085
-#, c-format
-msgid "package '%s' not found in sync"
-msgstr "a '%s' csomag nem található a távoli adatbázisban"
+#: lib/libalpm/trans.c:494
+#, fuzzy
+msgid "could not create temp directory\n"
+msgstr "nem sikerült létrehozni az ideiglenes könyvtárat"
-#: lib/libalpm/trans.c:271
-#, c-format
-msgid "updating dependency packages 'requiredby' fields for %s-%s"
-msgstr ""
+#: lib/libalpm/trans.c:536
+#, fuzzy, c-format
+msgid "could not change directory to %s (%s)\n"
+msgstr "nem sikerült a(z) %s könyvtárba váltani (%s)"
+
+#: lib/libalpm/trans.c:554
+#, fuzzy, c-format
+msgid "could not fork a new process (%s)\n"
+msgstr "nem sikerült forkolni egy új folyamatot (%s)"
-#: lib/libalpm/trans.c:274
-msgid "package has no dependencies, no other packages to update"
-msgstr "a csomagnak nincsenek függõségei, nincs több frissítendõ csomag"
+#: lib/libalpm/trans.c:564
+#, fuzzy, c-format
+msgid "could not change the root directory (%s)\n"
+msgstr "nem sikerült a gyökérkönyvtárba váltani (%s)"
-#: lib/libalpm/trans.c:311 lib/libalpm/trans.c:341
-#, c-format
-msgid "updating 'requiredby' field for package '%s'"
-msgstr "a '%s' csomag 'függ tõle' mezõjének frissítése"
+#: lib/libalpm/trans.c:569
+#, fuzzy, c-format
+msgid "could not change directory to / (%s)\n"
+msgstr "nem sikerült a könyvtárat a /-re váltani (%s)"
-#: lib/libalpm/trans.c:326 lib/libalpm/trans.c:356
-#, c-format
-msgid "could not update 'requiredby' database entry %s-%s"
-msgstr "sikertelen a %s-%s 'függ tõle' adatbázis-bejegyzésének frissítése"
+#: lib/libalpm/trans.c:578
+#, fuzzy, c-format
+msgid "call to popen failed (%s)"
+msgstr "a waitpid hívás sikertelen (%s)"
-#: lib/libalpm/trans.c:333
-#, c-format
-msgid "could not find dependency '%s'"
-msgstr "nem található a '%s' függõség"
+#: lib/libalpm/trans.c:597
+#, fuzzy, c-format
+msgid "call to waitpid failed (%s)\n"
+msgstr "a waitpid hívás sikertelen (%s)"
-#: lib/libalpm/util.c:142
-#, c-format
-msgid "failed to make path '%s' : %s"
+#: lib/libalpm/trans.c:606
+msgid "scriptlet failed to execute correctly\n"
+msgstr ""
+
+#: lib/libalpm/trans.c:615
+#, fuzzy, c-format
+msgid "could not remove tmpdir %s\n"
+msgstr "nem sikerült eltávolítani a %s ideiglenes könyvtárat"
+
+#: lib/libalpm/util.c:204
+#, fuzzy, c-format
+msgid "failed to make path '%s' : %s\n"
msgstr "nem sikerült a '%s' útvonal létrehozása: %s"
-#: lib/libalpm/util.c:280
+#: lib/libalpm/util.c:389
#, c-format
msgid "could not open %s: %s\n"
msgstr "nem sikerült megnyitni a %s fájlt: %s\n"
-#: lib/libalpm/util.c:293
+#: lib/libalpm/util.c:573
#, c-format
-msgid "could not extract %s: %s\n"
-msgstr "nem sikerült a(z) %s-t kitömöríteni: %s\n"
+msgid "no %s cache exists, creating...\n"
+msgstr "nem létezik a(z) %s gyorsítótár. létrehozás...\n"
-#: lib/libalpm/util.c:350
+#: lib/libalpm/util.c:593
+#, fuzzy
+msgid "couldn't create package cache, using /tmp instead\n"
+msgstr "nem sikerült létrehozni a csomag gyorsítótárat, a /tmp használata"
+
+#: lib/libalpm/util.c:643
#, c-format
-msgid "logaction called: %s"
-msgstr ""
+msgid "md5: %s can't be opened\n"
+msgstr "md5: nem sikerült megnyitni a következõt: %s\n"
-#: lib/libalpm/util.c:445
-msgid "could not create temp directory"
-msgstr "nem sikerült létrehozni az ideiglenes könyvtárat"
+#: lib/libalpm/util.c:645
+#, fuzzy, c-format
+msgid "md5: %s can't be read\n"
+msgstr "md5: nem sikerült megnyitni a következõt: %s\n"
-#: lib/libalpm/util.c:472
-#, c-format
-msgid "could not change directory to %s (%s)"
-msgstr "nem sikerült a(z) %s könyvtárba váltani (%s)"
+#~ msgid "please remove '%s' first, using -Rd"
+#~ msgstr "kérem elõször távolítsa el '%s'-t a -Rd kapcsolót használva"
-#: lib/libalpm/util.c:476
-#, c-format
-msgid "executing %s script..."
-msgstr "a(z) %s script végrehajtása..."
+#~ msgid "could not extract %s (%s)"
+#~ msgstr "nem sikerült kitömöríteni: %s (%s)"
-#: lib/libalpm/util.c:489
-#, c-format
-msgid "could not fork a new process (%s)"
-msgstr "nem sikerült forkolni egy új folyamatot (%s)"
+#~ msgid "%s: description file is missing"
+#~ msgstr "%s: hiányzó csomagleíró fájl"
-#: lib/libalpm/util.c:496
-#, c-format
-msgid "chrooting in %s"
-msgstr "chrootolás a következõ könyvtárba: %s"
+#~ msgid "%s: dependency file is missing"
+#~ msgstr "%s: hiányzó csomagfüggõség fájl"
-#: lib/libalpm/util.c:498
-#, c-format
-msgid "could not change the root directory (%s)"
-msgstr "nem sikerült a gyökérkönyvtárba váltani (%s)"
+#~ msgid "%s: file list is missing"
+#~ msgstr "%s: hiányzó fájllista"
-#: lib/libalpm/util.c:502
-#, c-format
-msgid "could not change directory to / (%s)"
-msgstr "nem sikerült a könyvtárat a /-re váltani (%s)"
+#~ msgid "malloc failed: could not allocate %d bytes"
+#~ msgstr "malloc probléma: nem sikerült allokálni %d byte-ot"
-#: lib/libalpm/util.c:506
-#, c-format
-msgid "executing \"%s\""
-msgstr "a(z) %s végrehajtása"
+#~ msgid ""
+#~ "cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+#~ msgstr ""
+#~ "nem sikerült a függõségek feloldása a \"%s\" számára (nem található a \"%s"
+#~ "\" a csomagok között)"
-#: lib/libalpm/util.c:509
-#, c-format
-msgid "call to popen failed (%s)"
-msgstr "a popen hívás sikertelen (%s)"
+#~ msgid "cannot canonicalize specified root path '%s'"
+#~ msgstr "nem sikerült értelmezni a megadott gyökérkönyvtár-útvonalat: '%s'"
-#: lib/libalpm/util.c:541
-#, c-format
-msgid "call to waitpid failed (%s)"
-msgstr "a waitpid hívás sikertelen (%s)"
+#~ msgid "could not get sha1sum for package %s-%s"
+#~ msgstr "sikertelen az sha1 ellenõrzõ összeg elérése a %s-%s csomag számára"
-#: lib/libalpm/util.c:550
-#, c-format
-msgid "could not remove tmpdir %s"
-msgstr "nem sikerült eltávolítani a %s ideiglenes könyvtárat"
+#~ msgid "sha1sums do not match for package %s-%s"
+#~ msgstr "%s-%s csomag sha1 ellenõrzõ összegei nem egyeznek meg"
-#: lib/libalpm/util.c:568
-#, c-format
-msgid "cannot read disk space information from %s: %s"
-msgstr ""
+#~ msgid "cannot remove file %s: %s"
+#~ msgstr "nem sikerült eltávolítani a %s fájlt: %s"
-#: lib/libalpm/util.c:609
-#, c-format
-msgid "check_freespace: total pkg size: %lld, disk space: %lld"
-msgstr "check_freespace: teljes csomagméret: %lld, lemezterület: %lld"
+#~ msgid "sha1: %s can't be opened\n"
+#~ msgstr "sha2: nem sikerült megnyitni a következõt: %s\n"
-#: lib/libalpm/versioncmp.c:279
-#, c-format
-msgid "depcmp: %s-%s %s %s-%s => %s"
-msgstr ""
+#~ msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
+#~ msgstr "a(z) %s archívum sérült (rossz MD5 vagy SHA1 szumma)\n"
-#: lib/libalpm/versioncmp.c:284
-#, c-format
-msgid "depcmp: %s-%s %s %s => %s"
-msgstr ""
+#~ msgid "could not update requiredby for database entry %s-%s"
+#~ msgstr "sikertelen a %s-%s 'függ tõle' adatbázis-bejegyzésének frissítése"
+
+#~ msgid "could not update new database entry %s-%s"
+#~ msgstr "sikertelen a '%s-%s' adatbázis-bejegyzés frissítése"
+
+#~ msgid "could not update 'requiredby' database entry %s-%s"
+#~ msgstr "sikertelen a %s-%s 'függ tõle' adatbázis-bejegyzésének frissítése"
diff --git a/lib/libalpm/po/it.po b/lib/libalpm/po/it.po
index 557e4f24..aaf85633 100644
--- a/lib/libalpm/po/it.po
+++ b/lib/libalpm/po/it.po
@@ -9,1569 +9,691 @@ msgid ""
msgstr ""
"Project-Id-Version: libalpm VERSION\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-09-16 16:55-0500\n"
-"PO-Revision-Date: 2007-04-17 22:00+0100\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: 2007-11-08 20:30+0100\n"
"Last-Translator: Giovanni Scafora <linuxmania@gmail.com>\n"
"Language-Team: Arch Linux Italian Team <linuxmania@gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bitPlural-Forms: nplurals=2; plural=(n != 1);\n"
-#: lib/libalpm/add.c:77
+#: lib/libalpm/add.c:88
#, c-format
-msgid "loading target '%s'"
-msgstr "caricamento del pacchetto '%s' in corso"
+msgid "replacing older version %s-%s by %s in target list\n"
+msgstr "sostituzione in corso della vecchia versione di %s-%s con %s\n"
-#: lib/libalpm/add.c:122
+#: lib/libalpm/add.c:97
#, c-format
-msgid "replacing older version %s-%s by %s in target list"
-msgstr "sostituzione in corso della vecchia versione %s-%s con %s"
+msgid "newer version %s-%s is in the target list -- skipping\n"
+msgstr "la versione di %s-%s è più recente e sarà ignorata\n"
-#: lib/libalpm/add.c:131
-#, c-format
-msgid "newer version %s-%s is in the target list -- skipping"
-msgstr "la versione di %s-%s è più recente e sarà ignorato"
-
-#: lib/libalpm/add.c:138
-#, c-format
-msgid "reading '%s' metadata"
-msgstr "lettura dei metadata di '%s' in corso"
-
-#: lib/libalpm/add.c:191 lib/libalpm/remove.c:111
-msgid "looking for unsatisfied dependencies"
-msgstr "ricerca delle dipendenze non soddisfatte"
-
-#: lib/libalpm/add.c:203 lib/libalpm/sync.c:483
-msgid "looking for conflicts"
-msgstr "ricerca dei conflitti in corso"
-
-#: lib/libalpm/add.c:208
-msgid "replacing packages with -A and -U is not supported yet"
-msgstr "la sostituzione dei pacchetti con -A e -U non è ancora supportata"
-
-#: lib/libalpm/add.c:209
-#, c-format
-msgid "please remove '%s' first, using -Rd"
-msgstr "Si consiglia di rimuovere prima '%s', usando -Rd"
-
-#: lib/libalpm/add.c:250 lib/libalpm/remove.c:147
-msgid "sorting by dependencies"
-msgstr "ordinamento per dipendenze in corso"
-
-#: lib/libalpm/add.c:262
-msgid "cleaning up"
-msgstr "pulizia in corso"
-
-#: lib/libalpm/add.c:277
-msgid "looking for file conflicts"
-msgstr "ricerca dei conflitti tra file in corso"
-
-#: lib/libalpm/add.c:346
-#, c-format
-msgid "upgrading package %s-%s"
-msgstr "aggiornamento del pacchetto %s-%s in corso"
-
-#: lib/libalpm/add.c:370
-#, c-format
-msgid "adding package %s-%s"
-msgstr "inclusione del pacchetto %s-%s in corso"
-
-#: lib/libalpm/add.c:383
-#, c-format
-msgid "removing old package first (%s-%s)"
-msgstr "rimozione del vecchio pacchetto (%s-%s) in corso"
-
-#: lib/libalpm/add.c:411
-#, c-format
-msgid "adding %s to the NoUpgrade array temporarily"
-msgstr "aggiunta temporanea di %s nell'array NoUpgrade in corso"
-
-#: lib/libalpm/add.c:429
-msgid "extracting files"
-msgstr "estrazione dei file in corso"
-
-#: lib/libalpm/add.c:444 lib/libalpm/util.c:465
-msgid "could not get current working directory"
-msgstr "impossibile ottenere la directory corrente"
-
-#: lib/libalpm/add.c:500 lib/libalpm/add.c:501
-#, c-format
-msgid "%s is in NoExtract, skipping extraction"
-msgstr "%s è in NoExtract, estrazione ignorata"
-
-#: lib/libalpm/add.c:508
-#, c-format
-msgid "%s is in trans->skip_add, skipping extraction"
-msgstr "%s è in trans->skip_add, estrazione ignorata"
-
-#: lib/libalpm/add.c:554 lib/libalpm/add.c:555 lib/libalpm/add.c:706
-#, c-format
-msgid "could not extract %s (%s)"
-msgstr "impossibile estrarre %s (%s)"
-
-#: lib/libalpm/add.c:598
-#, c-format
-msgid "checking md5 hashes for %s"
-msgstr "controllo dell'hash md5 di %s"
-
-#: lib/libalpm/add.c:600
-#, c-format
-msgid "checking sha1 hashes for %s"
-msgstr "controllo dell'hash sha1 di %s"
-
-#: lib/libalpm/add.c:602
-#, c-format
-msgid "current: %s"
-msgstr "attuale: %s"
-
-#: lib/libalpm/add.c:603
-#, c-format
-msgid "new: %s"
-msgstr "nuovo: %s"
-
-#: lib/libalpm/add.c:604
-#, c-format
-msgid "original: %s"
-msgstr "originale: %s"
-
-#: lib/libalpm/add.c:616
-#, c-format
-msgid "could not rename %s (%s)"
-msgstr "impossibile rinominare %s (%s)"
-
-#: lib/libalpm/add.c:617
-#, c-format
-msgid "error: could not rename %s (%s)"
-msgstr "errore: impossibile rinominare %s (%s)"
-
-#: lib/libalpm/add.c:623 lib/libalpm/add.c:642
-#, c-format
-msgid "could not copy tempfile to %s (%s)"
-msgstr "impossibile copiare il file temporaneo in %s (%s)"
-
-#: lib/libalpm/add.c:624
-#, c-format
-msgid "error: could not copy tempfile to %s (%s)"
-msgstr "errore: impossibile copiare il file temporaneo in %s (%s)"
-
-#: lib/libalpm/add.c:628 lib/libalpm/remove.c:247
-#, c-format
-msgid "%s saved as %s"
-msgstr "%s salvato come %s"
-
-#: lib/libalpm/add.c:629
-#, c-format
-msgid "warning: %s saved as %s"
-msgstr "attenzione: %s salvato come %s"
-
-#: lib/libalpm/add.c:639
-#, c-format
-msgid "action: installing new file: %s"
-msgstr "azione: installazione del nuovo file %s in corso"
-
-#: lib/libalpm/add.c:649 lib/libalpm/add.c:655 lib/libalpm/add.c:660
-msgid "action: leaving existing file in place"
-msgstr "azione: il file non è stato spostato"
-
-#: lib/libalpm/add.c:663
-msgid "action: keeping current file and installing new one with .pacnew ending"
+#: lib/libalpm/add.c:168
+msgid "conflicting packages were found in the target list\n"
msgstr ""
-"azione: il file attuale non è stato spostato e sarà installato un nuovo file "
-"con il suffisso .pacnew"
-
-#: lib/libalpm/add.c:666
-#, c-format
-msgid "could not install %s as %s: %s"
-msgstr "impossibile installare %s come %s: %s"
-
-#: lib/libalpm/add.c:667
-#, c-format
-msgid "error: could not install %s as %s: %s"
-msgstr "errore: impossibile installare %s come %s: %s"
-
-#: lib/libalpm/add.c:669
-#, c-format
-msgid "%s installed as %s"
-msgstr "%s installato come %s"
-
-#: lib/libalpm/add.c:670
-#, c-format
-msgid "warning: %s installed as %s"
-msgstr "attenzione: %s installato come %s"
-
-#: lib/libalpm/add.c:684
-#, c-format
-msgid "%s is in NoUpgrade -- skipping"
-msgstr "%s è in NoUpgrade e sarà ignorato"
-
-#: lib/libalpm/add.c:685
-#, c-format
-msgid "extracting %s as %s.pacnew"
-msgstr "estrazione di %s come %s.pacnew"
-
-#: lib/libalpm/add.c:686
-#, c-format
-msgid "warning: extracting %s as %s.pacnew"
-msgstr "attenzione: estrazione in corso di %s come %s.pacnew"
-
-#: lib/libalpm/add.c:689
-#, c-format
-msgid "extracting %s"
-msgstr "estrazione di %s in corso"
-
-#: lib/libalpm/add.c:707
-#, c-format
-msgid "error: could not extract %s (%s)"
-msgstr "errore: impossibile estrarre %s (%s)"
-
-#: lib/libalpm/add.c:719
-#, c-format
-msgid "appending backup entry for %s"
-msgstr "aggiunta in corso della voce di backup per %s"
-
-#: lib/libalpm/add.c:751 lib/libalpm/add.c:753
-#, c-format
-msgid "errors occurred while %s %s"
-msgstr "si sono verificati degli errori durante %s %s"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "upgrading"
-msgstr "l'aggiornamento"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "installing"
-msgstr "l'installazione"
-#: lib/libalpm/add.c:771
-#, c-format
-msgid "provision '%s' has been removed from package %s (%s => %s)"
-msgstr "'%s' è stato rimosso dal pacchetto %s (%s => %s)"
-
-#: lib/libalpm/add.c:783
-#, c-format
-msgid "updating '%s' due to provision change (%s)"
-msgstr "aggiornamento in corso di '%s' dovuto ad un cambiamento (%s)"
-
-#: lib/libalpm/add.c:787 lib/libalpm/add.c:788
-#, c-format
-msgid "could not update provision '%s' from '%s'"
-msgstr "impossibile aggiornare '%s' da '%s'"
-
-#: lib/libalpm/add.c:801 lib/libalpm/remove.c:336
-msgid "updating database"
-msgstr "aggiornamento del database in corso"
-
-#: lib/libalpm/add.c:802
-#, c-format
-msgid "adding database entry '%s'"
-msgstr "inclusione della voce '%s' nel database"
-
-#: lib/libalpm/add.c:805 lib/libalpm/add.c:807
-#, c-format
-msgid "could not update database entry %s-%s"
-msgstr "impossibile aggiornare la voce %s-%s nel database"
-
-#: lib/libalpm/add.c:813
-#, c-format
-msgid "could not add entry '%s' in cache"
-msgstr "impossible includere la voce '%s' nella cache"
-
-#: lib/libalpm/add.c:843 lib/libalpm/remove.c:363 lib/libalpm/sync.c:1055
-#, c-format
-msgid "running \"ldconfig -r %s\""
-msgstr "esecuzione in corso di \"ldconfig -r %s\""
-
-#: lib/libalpm/alpm.c:116
-#, c-format
-msgid "removing DB %s, %d remaining..."
-msgstr "rimozione in corso del DB %s, %d restante..."
-
-#: lib/libalpm/alpm.c:181
-#, c-format
-msgid "unregistering database '%s'"
-msgstr "cancellazione del database '%s' in corso"
-
-#: lib/libalpm/alpm.c:186
-#, c-format
-msgid "closing database '%s'"
-msgstr "chiusura del database '%s' in corso"
-
-#: lib/libalpm/alpm.c:232
-#, c-format
-msgid ""
-"adding new server to database '%s': protocol '%s', server '%s', path '%s'"
+#: lib/libalpm/add.c:169
+msgid "you cannot install two conflicting packages at the same time\n"
msgstr ""
-"inclusione di un nuovo server nel database '%s': protocollo '%s', server '%"
-"s', path '%s'"
-#: lib/libalpm/alpm.c:236
-#, c-format
-msgid "serverlist flushed for '%s'"
-msgstr "svuotata la lista dei server per '%s'"
+#: lib/libalpm/add.c:172
+msgid "replacing packages with -A and -U is not supported yet\n"
+msgstr "la sostituzione dei pacchetti con -A e -U non è ancora supportata\n"
-#: lib/libalpm/alpm.c:279
-#, c-format
-msgid "failed to get lastupdate time for %s (no big deal)"
+#: lib/libalpm/add.c:173
+msgid "you can replace packages manually using -Rd and -U\n"
msgstr ""
-"impossibile recuperare la data dell'ultimo aggiornamento di %s (nulla di "
-"grave)"
-#: lib/libalpm/alpm.c:298
-#, c-format
-msgid "failed to sync db: %s [%d]"
-msgstr "impossibile sincronizzare il database: %s [%d]"
-
-#: lib/libalpm/alpm.c:302
-#, c-format
-msgid "sync: new mtime for %s: %s"
-msgstr "sync: nuovo mtime per %s: %s"
-
-#: lib/libalpm/alpm.c:308
-#, c-format
-msgid "flushing database %s%s"
-msgstr "pulizia del database %s%s"
-
-#: lib/libalpm/alpm.c:312
-#, c-format
-msgid "could not remove database entry %s%s"
-msgstr "impossibile rimuovere la voce %s%s dal database"
-
-#: lib/libalpm/alpm.c:481
-#, c-format
-msgid "could not get sha1sum for package %s-%s"
-msgstr "impossibile recuperare la somma sha1 del pacchetto %s-%s"
-
-#: lib/libalpm/alpm.c:487
-#, c-format
-msgid "sha1sums for package %s-%s match"
-msgstr "la somma sha1 del pacchetto %s-%s corrisponde"
-
-#: lib/libalpm/alpm.c:490
-#, c-format
-msgid "sha1sums do not match for package %s-%s"
-msgstr "la somma sha1 del pacchetto %s-%s non corrisponde"
-
-#: lib/libalpm/alpm.c:525
-#, c-format
-msgid "could not get md5sum for package %s-%s"
-msgstr "impossibile recuperare la somma md5 del pacchetto %s-%s"
-
-#: lib/libalpm/alpm.c:531
-#, c-format
-msgid "md5sums for package %s-%s match"
-msgstr "la somma md5 del pacchetto %s-%s corrisponde"
-
-#: lib/libalpm/alpm.c:534
-#, c-format
-msgid "md5sums do not match for package %s-%s"
-msgstr "la somma md5 del pacchetto %s-%s non corrisponde"
-
-#: lib/libalpm/alpm.c:783
-#, c-format
-msgid "could not remove lock file %s"
-msgstr "impossibile rimuovere il file di lock %s"
-
-#: lib/libalpm/alpm.c:784
-#, c-format
-msgid "warning: could not remove lock file %s"
-msgstr "attenzione: impossibile rimuovere il file di lock %s"
-
-#: lib/libalpm/alpm.c:920
-#, c-format
-msgid "config: new section '%s'"
-msgstr "config: nuova sezione '%s'"
-
-#: lib/libalpm/alpm.c:951
-msgid "config: nopassiveftp"
-msgstr "config: nopassiveftp"
-
-#: lib/libalpm/alpm.c:954
-msgid "config: usesyslog"
-msgstr "config: usesyslog"
-
-#: lib/libalpm/alpm.c:957
-msgid "config: chomp"
-msgstr "config: chomp"
-
-#: lib/libalpm/alpm.c:960
-msgid "config: usecolor"
-msgstr "config: usecolor"
-
-#: lib/libalpm/alpm.c:969
-#, c-format
-msgid "config: including %s"
-msgstr "config: including %s"
-
-#: lib/libalpm/alpm.c:979 lib/libalpm/alpm.c:984
-#, c-format
-msgid "config: noupgrade: %s"
-msgstr "config: noupgrade: %s"
-
-#: lib/libalpm/alpm.c:992 lib/libalpm/alpm.c:997
-#, c-format
-msgid "config: noextract: %s"
-msgstr "config: noextract:·%s"
-
-#: lib/libalpm/alpm.c:1005 lib/libalpm/alpm.c:1010
-#, c-format
-msgid "config: ignorepkg: %s"
-msgstr "config: ignorepkg: %s"
-
-#: lib/libalpm/alpm.c:1018 lib/libalpm/alpm.c:1023
-#, c-format
-msgid "config: holdpkg: %s"
-msgstr "config: holdpkg: %s"
-
-#: lib/libalpm/alpm.c:1030
-#, c-format
-msgid "config: dbpath: %s"
-msgstr "config: dbpath: %s"
-
-#: lib/libalpm/alpm.c:1037
-#, c-format
-msgid "config: cachedir: %s"
-msgstr "config: cachedir: %s"
-
-#: lib/libalpm/alpm.c:1044
-#, c-format
-msgid "config: rootdir: %s"
-msgstr "config: rootdir: %s"
-
-#: lib/libalpm/alpm.c:1047
-#, c-format
-msgid "config: logfile: %s"
-msgstr "config: logfile: %s"
-
-#: lib/libalpm/alpm.c:1050
-#, c-format
-msgid "config: xfercommand: %s"
-msgstr "config: xfercommand: %s"
-
-#: lib/libalpm/alpm.c:1055
-#, c-format
-msgid "config: upgradedelay: %d"
-msgstr "config: upgradedelay: %d"
-
-#: lib/libalpm/alpm.c:1093 lib/libalpm/sync.c:107
-msgid "checking for package replacements"
-msgstr "controllo della sostituzione dei pacchetti in corso"
-
-#: lib/libalpm/alpm.c:1104 lib/libalpm/sync.c:123
-#, c-format
-msgid "checking replacement '%s' for package '%s'"
-msgstr "controllo in corso della sostituzione di '%s' con il pacchetto '%s'"
-
-#: lib/libalpm/alpm.c:1107 lib/libalpm/sync.c:125
-#, c-format
-msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)"
-msgstr ""
-"%s-%s: aggiornamento del pacchetto ignorato (per essere sostituito con %s-%s)"
-
-#: lib/libalpm/alpm.c:1137 lib/libalpm/sync.c:160
-#, c-format
-msgid "%s-%s elected for upgrade (to be replaced by %s-%s)"
-msgstr ""
-"%s-%s selezionato per l'aggiornamento (per essere sostituito con %s-%s)"
-
-#: lib/libalpm/alpm.c:1159 lib/libalpm/sync.c:194
-#, c-format
-msgid "'%s' not found in sync db -- skipping"
-msgstr "impossibile trovare '%s' nel database, sarà ignorato"
-
-#: lib/libalpm/alpm.c:1173 lib/libalpm/sync.c:208 lib/libalpm/sync.c:509
-#, c-format
-msgid "'%s' is already elected for removal -- skipping"
-msgstr "'%s' è già selezionato per la rimozione, sarà ignorato"
-
-#: lib/libalpm/alpm.c:1179
-#, c-format
-msgid "%s elected for upgrade (%s => %s)"
-msgstr "%s selezionato per l'aggiornamento (%s => %s)"
-
-#: lib/libalpm/be_files.c:61
-#, c-format
-msgid "unpacking database '%s'"
-msgstr "estrazione del database '%s' in corso"
-
-#: lib/libalpm/be_files.c:78
-#, c-format
-msgid "opening database from path '%s'"
-msgstr "apertura in corso del database dal path '%s'"
-
-#: lib/libalpm/be_files.c:182
-#, c-format
-msgid "db scan could not find package: %s"
-msgstr "impossibile trovare il pacchetto: %s"
-
-#: lib/libalpm/be_files.c:186
-#, c-format
-msgid "invalid name for database entry '%s'"
-msgstr "nome non valido per la voce del database '%s'"
-
-#: lib/libalpm/be_files.c:221
-msgid "invalid package entry provided to _alpm_db_read, skipping"
-msgstr ""
-"nome non valido per il pacchetto fornito a _alpm_db_read, sarà ignorato"
-
-#: lib/libalpm/be_files.c:226
+#: lib/libalpm/add.c:365
#, c-format
msgid ""
-"request to read database info for a file-based package '%s', skipping..."
+"directory permissions differ on %s\n"
+"filesystem: %o package: %o\n"
msgstr ""
-"richiesta di lettura del database per un pacchetto file-based '%s', sarà "
-"ignorata..."
-
-#: lib/libalpm/be_files.c:239
-#, c-format
-msgid "loading package data for %s : level=%d"
-msgstr "caricamento in corso dei dati del pacchetto %s : livello=%d"
-
-#: lib/libalpm/be_files.c:247
-#, c-format
-msgid "cannot find '%s-%s' in db '%s'"
-msgstr "impossibile trovare '%s-%s' nel database '%s'"
-
-#: lib/libalpm/be_files.c:255 lib/libalpm/be_files.c:401
-#: lib/libalpm/be_files.c:424 lib/libalpm/be_files.c:515
-#: lib/libalpm/be_files.c:605 lib/libalpm/be_files.c:632
-#: lib/libalpm/package.c:208
-#, c-format
-msgid "could not open file %s: %s"
-msgstr "impossibile aprire il file %s: %s"
-
-#: lib/libalpm/be_files.c:512
-#, c-format
-msgid "writing %s-%s DESC information back to db"
-msgstr "scrittura in corso del campo DESC di %s-%s nel database"
-
-#: lib/libalpm/be_files.c:602
-#, c-format
-msgid "writing %s-%s FILES information back to db"
-msgstr "scrittura in corso del campo FILES di %s-%s nel database"
-
-#: lib/libalpm/be_files.c:629
-#, c-format
-msgid "writing %s-%s DEPENDS information back to db"
-msgstr "scrittura in corso del campo DEPENDS di %s-%s nel database"
-
-#: lib/libalpm/cache.c:59
-#, c-format
-msgid "loading package cache for repository '%s'"
-msgstr "caricamento in corso della cache del pacchetto per il repository '%s'"
-
-#: lib/libalpm/cache.c:64
-#, c-format
-msgid "adding '%s' to package cache for db '%s'"
-msgstr "aggiunta di '%s' alla cache del pacchetto per il database '%s'"
-
-#: lib/libalpm/cache.c:85
-#, c-format
-msgid "freeing package cache for repository '%s'"
-msgstr "pulizia in corso della cache dei pacchetti per il repository '%s'"
-
-#: lib/libalpm/cache.c:109
-#, c-format
-msgid "error: pkgcache is NULL for db '%s'"
-msgstr "errore: pkgcache è NULL per il database '%s'"
-
-#: lib/libalpm/cache.c:129
-#, c-format
-msgid "adding entry '%s' in '%s' cache"
-msgstr "inclusione della voce '%s' nella cache di '%s'"
-
-#: lib/libalpm/cache.c:149
-#, c-format
-msgid "removing entry '%s' from '%s' cache"
-msgstr "rimozione della voce '%s' dalla cache di '%s'"
+"i permessi delle directory differiscono su %s\n"
+"filesystem: %o pacchetto: %o\n"
-#: lib/libalpm/cache.c:156
+#: lib/libalpm/add.c:392
#, c-format
-msgid "cannot remove entry '%s' from '%s' cache: not found"
-msgstr "impossibile rimuovere '%s' dalla cache di '%s': non trovato"
+msgid "extract: symlink %s does not point to dir\n"
+msgstr "estrazione: il link simbolico %s non punta alla directory\n"
-#: lib/libalpm/cache.c:178
+#: lib/libalpm/add.c:399
#, c-format
-msgid "error: failed to get '%s' from NULL pkgcache"
-msgstr "errore: impossibile prelevare '%s' da pkgcache NULL"
+msgid "extract: not overwriting dir with file %s\n"
+msgstr "estrazione: non sovrascrivere la directory con il file %s\n"
-#: lib/libalpm/cache.c:201
+#: lib/libalpm/add.c:454 lib/libalpm/add.c:598 lib/libalpm/util.c:422
#, c-format
-msgid "loading group cache for repository '%s'"
-msgstr "caricamento della cache del gruppo per il repository '%s'"
+msgid "could not extract %s (%s)\n"
+msgstr "impossibile estrarre %s (%s)\n"
-#: lib/libalpm/conflict.c:69
+#: lib/libalpm/add.c:505
#, c-format
-msgid " found conflict '%s' : package '%s'"
-msgstr " trovato il conflitto '%s' : pacchetto '%s'"
+msgid "could not rename %s (%s)\n"
+msgstr "impossibile rinominare %s (%s)\n"
-#: lib/libalpm/conflict.c:78
+#: lib/libalpm/add.c:512 lib/libalpm/add.c:532 lib/libalpm/trans.c:508
#, c-format
-msgid " found conflict '%s' : package '%s' provides '%s'"
-msgstr " trovato il conflitto '%s' : il pacchetto '%s' fornisce '%s'"
+msgid "could not copy tempfile to %s (%s)\n"
+msgstr "impossibile copiare il file temporaneo in %s (%s)\n"
-#: lib/libalpm/conflict.c:101 lib/libalpm/conflict.c:143
+#: lib/libalpm/add.c:517 lib/libalpm/remove.c:234
#, c-format
-msgid "package '%s' conflicts with itself - packaging error"
-msgstr ""
-"il pacchetto '%s' va in conflitto con se stesso - errore di pacchettizzazione"
-
-#: lib/libalpm/conflict.c:107
-#, c-format
-msgid "checkconflicts: target '%s' vs db"
-msgstr "checkconflicts: target '%s' vs db"
-
-#: lib/libalpm/conflict.c:149
-#, c-format
-msgid "checkconflicts: target '%s' vs all targets"
-msgstr "checkconflicts: target '%s' vs all targets"
-
-#: lib/libalpm/conflict.c:181
-#, c-format
-msgid "checkconflicts: db vs target '%s'"
-msgstr "checkconflicts: db vs target '%s'"
+msgid "%s saved as %s\n"
+msgstr "%s salvato come %s\n"
-#: lib/libalpm/conflict.c:201
+#: lib/libalpm/add.c:556
#, c-format
-msgid "target '%s' is also in target list, using NEW conflicts"
-msgstr "il pacchetto '%s' è già presente nella lista, usando nuovi conflitti"
-
-#: lib/libalpm/conflict.c:257
-#, c-format
-msgid "\tCONFLICTS:: %s conflicts with %s"
-msgstr "\tCONFLITTI:: %s va in conflitto con %s"
-
-#: lib/libalpm/conflict.c:349 lib/libalpm/deps.c:60 lib/libalpm/deps.c:438
-#: lib/libalpm/deps.c:634 lib/libalpm/deps.c:674 lib/libalpm/group.c:45
-#: lib/libalpm/handle.c:51 lib/libalpm/package.c:82 lib/libalpm/sync.c:67
-#: lib/libalpm/sync.c:614 lib/libalpm/sync.c:630 lib/libalpm/sync.c:727
-#: lib/libalpm/trans.c:55 lib/libalpm/util.c:614 lib/libalpm/util.c:621
-#, c-format
-msgid "malloc failure: could not allocate %d bytes"
-msgstr "malloc failure: impossibile allocare %d byte"
-
-#: lib/libalpm/db.c:64 lib/libalpm/db.c:71
-#, c-format
-msgid "malloc failed: could not allocate %d bytes"
-msgstr "malloc failed: impossibile allocare %d byte"
-
-#: lib/libalpm/db.c:167
-msgid "attempt to re-register the 'local' DB"
-msgstr "tentativo in corso di registrare di nuovo il database 'locale'"
+msgid "could not install %s as %s: %s\n"
+msgstr "impossibile installare %s come %s: %s\n"
-#: lib/libalpm/db.c:175
+#: lib/libalpm/add.c:559
#, c-format
-msgid "attempt to re-register the '%s' database, using existing"
-msgstr ""
-"tentativo in corso di registrare di nuovo il database '%s', usando quello "
-"esistente"
+msgid "%s installed as %s\n"
+msgstr "%s installato come %s\n"
-#: lib/libalpm/db.c:181
+#: lib/libalpm/add.c:576
#, c-format
-msgid "registering database '%s'"
-msgstr "registrazione del database '%s'"
+msgid "extracting %s as %s.pacnew\n"
+msgstr "estrazione di %s come %s.pacnew\n"
-#: lib/libalpm/db.c:186
-#, c-format
-msgid "database directory '%s' does not exist, creating it"
-msgstr "la directory '%s' del database non esiste e sarà creata"
+#: lib/libalpm/add.c:711 lib/libalpm/trans.c:529
+msgid "could not get current working directory\n"
+msgstr "impossibile ottenere la directory corrente\n"
-#: lib/libalpm/db.c:197
+#: lib/libalpm/add.c:765
#, c-format
-msgid "opening database '%s'"
-msgstr "apertura del database '%s' in corso"
-
-#: lib/libalpm/deps.c:131
-msgid "started sorting dependencies"
-msgstr "avvio dell'ordinamento delle dipendenze"
-
-#: lib/libalpm/deps.c:136
-msgid "possible dependency cycle detected"
-msgstr "individuato un possibile ciclo di dipendenze"
+msgid "problem occurred while upgrading %s\n"
+msgstr "si sono verificati degli errori durante l'aggiornamento di %s\n"
-#: lib/libalpm/deps.c:183
-msgid "sorting dependencies finished"
-msgstr "ordinamento delle dipendenze terminato"
-
-#: lib/libalpm/deps.c:225 lib/libalpm/deps.c:310
-msgid "null package found in package list"
-msgstr "è stato trovato un pacchetto vuoto nella lista"
-
-#: lib/libalpm/deps.c:230
+#: lib/libalpm/add.c:770
#, c-format
-msgid "cannot find package installed '%s'"
-msgstr "impossibile trovare il pacchetto installato '%s'"
+msgid "problem occurred while installing %s\n"
+msgstr "si sono verificati degli errori durante l'installazione di %s\n"
-#: lib/libalpm/deps.c:261
+#: lib/libalpm/add.c:785
#, c-format
-msgid "checkdeps: dependency '%s' has moved from '%s' to '%s'"
-msgstr "checkdeps: la dipendenza '%s' è stata spostata da '%s' a '%s'"
+msgid "could not update database entry %s-%s\n"
+msgstr "impossibile aggiornare la voce %s-%s nel database\n"
-#: lib/libalpm/deps.c:280
+#: lib/libalpm/add.c:793
#, c-format
-msgid "checkdeps: dependency '%s' satisfied by installed package '%s'"
-msgstr "checkdeps: dipendenza '%s' soddisfatta dal pacchetto '%s'"
+msgid "could not add entry '%s' in cache\n"
+msgstr "impossible includere la voce '%s' nella cache\n"
-#: lib/libalpm/deps.c:289
+#: lib/libalpm/be_files.c:223
#, c-format
-msgid "checkdeps: updated '%s' won't satisfy a dependency of '%s'"
-msgstr ""
-"checkdeps: il pacchetto aggiornato di '%s' non soddisfa una dipendenza di '%"
-"s'"
+msgid "invalid name for database entry '%s'\n"
+msgstr "nome non valido per la voce del database '%s'\n"
-#: lib/libalpm/deps.c:359
+#: lib/libalpm/be_files.c:275
#, c-format
-msgid "missing dependency '%s' for package '%s'"
-msgstr "manca la dipendenza '%s' richiesta dal pacchetto '%s'"
+msgid "loading package data for %s : level=%d\n"
+msgstr "caricamento in corso dei dati del pacchetto %s : livello=%d\n"
-#: lib/libalpm/deps.c:409
+#: lib/libalpm/be_files.c:292 lib/libalpm/be_files.c:429
+#: lib/libalpm/be_files.c:452 lib/libalpm/be_files.c:563
+#: lib/libalpm/be_files.c:641 lib/libalpm/be_files.c:669
+#: lib/libalpm/package.c:787
#, c-format
-msgid "checkdeps: found %s as required by %s"
-msgstr "checkdeps: trovato %s come richiesto da %s"
+msgid "could not open file %s: %s\n"
+msgstr "impossibile aprire il file %s: %s\n"
-#: lib/libalpm/deps.c:485
+#: lib/libalpm/cache.c:62
#, c-format
-msgid "excluding %s -- explicitly installed"
-msgstr "esclusione di %s in corso, installato esplicitamente"
+msgid "adding '%s' to package cache for db '%s'\n"
+msgstr "aggiunta di '%s' alla cache del pacchetto per il database '%s'\n"
-#: lib/libalpm/deps.c:532
+#: lib/libalpm/db.c:285
#, c-format
-msgid "cannot find package \"%s\" or anything that provides it!"
-msgstr "impossibile trovare il pacchetto \"%s\" o qualcosa che lo fornisca!"
+msgid "could not remove database entry %s%s\n"
+msgstr "impossibile rimuovere la voce %s%s dal database\n"
-#: lib/libalpm/deps.c:540 lib/libalpm/deps.c:551
-#, c-format
-msgid "adding '%s' to the targets"
-msgstr "inclusione in corso di '%s' nei pacchetti"
+#: lib/libalpm/db.c:553
+msgid "attempt to re-register the 'local' DB\n"
+msgstr "tentativo in corso di registrare di nuovo il database 'locale'\n"
-#: lib/libalpm/deps.c:583
-msgid "started resolving dependencies"
-msgstr "avvio risoluzione delle dipendenze"
+#: lib/libalpm/db.c:562 lib/libalpm/db.c:613
+msgid "database path is undefined\n"
+msgstr "il percorso del database non è definito\n"
-#: lib/libalpm/deps.c:601
-#, c-format
-msgid "%s provides dependency %s -- skipping"
-msgstr "%s fornisce la dipendenza %s, sarà ignorato"
+#: lib/libalpm/deps.c:173
+#, fuzzy
+msgid "dependency cycle detected:\n"
+msgstr "individuato un possibile ciclo di dipendenze\n"
-#: lib/libalpm/deps.c:630
+#: lib/libalpm/deps.c:175
#, c-format
-msgid ""
-"cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+msgid "%s will be removed after its %s dependency\n"
msgstr ""
-"impossibile risolvere le dipendenze per \"%s\" (\"%s\" non è presente nella "
-"lista dei pacchetti)"
-#: lib/libalpm/deps.c:647
+#: lib/libalpm/deps.c:177
#, c-format
-msgid "dependency %s is already in the target list -- skipping"
+msgid "%s will be installed before its %s dependency\n"
msgstr ""
-"la dipendenza %s è già presente nella lista dei pacchetti e sarà ignorata"
-#: lib/libalpm/deps.c:667
+#: lib/libalpm/deps.c:573
#, c-format
-msgid "pulling dependency %s (needed by %s)"
-msgstr "aggiunta la dipendenza %s (richiesta da %s)"
+msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
+msgstr "impossibile risolvere \"%s\", una dipendenza di \"%s\"\n"
-#: lib/libalpm/deps.c:671
-#, c-format
-msgid "cannot resolve dependencies for \"%s\""
-msgstr "impossibile risolvere le dipendenze per \"%s\""
-
-#: lib/libalpm/deps.c:687
-#, c-format
-msgid "dependency cycle detected: %s"
-msgstr "individuato un possibile ciclo di dipendenze: %s"
-
-#: lib/libalpm/deps.c:691
-msgid "finished resolving dependencies"
-msgstr "risoluzione delle dipendenze terminata"
-
-#: lib/libalpm/error.c:40
+#: lib/libalpm/error.c:43
msgid "out of memory!"
msgstr "memoria insufficiente!"
-#: lib/libalpm/error.c:42
+#: lib/libalpm/error.c:45
msgid "unexpected system error"
-msgstr "errore di sistema"
+msgstr "errore di sistema inaspettato"
-#: lib/libalpm/error.c:44
+#: lib/libalpm/error.c:47
msgid "insufficient privileges"
msgstr "privilegi insufficienti"
-#: lib/libalpm/error.c:46
+#: lib/libalpm/error.c:49
msgid "could not find or read file"
msgstr "impossibile trovare o leggere il file"
-#: lib/libalpm/error.c:48
+#: lib/libalpm/error.c:51
+msgid "could not find or read directory"
+msgstr "impossibile trovare o leggere la directory"
+
+#: lib/libalpm/error.c:53
msgid "wrong or NULL argument passed"
msgstr "è stato passato un argomento sbagliato o NULL"
-#: lib/libalpm/error.c:51
+#: lib/libalpm/error.c:56
msgid "library not initialized"
msgstr "libreria non inizializzata"
-#: lib/libalpm/error.c:53
+#: lib/libalpm/error.c:58
msgid "library already initialized"
msgstr "libreria già inizializzata"
-#: lib/libalpm/error.c:55
+#: lib/libalpm/error.c:60
msgid "unable to lock database"
msgstr "impossibile bloccare il database"
-#: lib/libalpm/error.c:58
+#: lib/libalpm/error.c:63
msgid "could not open database"
msgstr "impossibile aprire il database"
-#: lib/libalpm/error.c:60
+#: lib/libalpm/error.c:65
msgid "could not create database"
msgstr "impossibile creare il database"
-#: lib/libalpm/error.c:62
+#: lib/libalpm/error.c:67
msgid "database not initialized"
msgstr "database non inizializzato"
-#: lib/libalpm/error.c:64
+#: lib/libalpm/error.c:69
msgid "database already registered"
msgstr "il database è già registrato"
-#: lib/libalpm/error.c:66
+#: lib/libalpm/error.c:71
msgid "could not find database"
msgstr "impossibile trovare il database"
-#: lib/libalpm/error.c:68
+#: lib/libalpm/error.c:73
msgid "could not update database"
msgstr "impossibile aggiornare il database"
-#: lib/libalpm/error.c:70
+#: lib/libalpm/error.c:75
msgid "could not remove database entry"
msgstr "impossibile rimuovere la voce dal database"
-#: lib/libalpm/error.c:73
+#: lib/libalpm/error.c:78
msgid "invalid url for server"
msgstr "url non valido per il server"
-#: lib/libalpm/error.c:80
+#: lib/libalpm/error.c:85
msgid "could not set parameter"
msgstr "impossibile impostare il parametro"
-#: lib/libalpm/error.c:83
+#: lib/libalpm/error.c:88
msgid "transaction already initialized"
msgstr "operazione già inizializzata"
-#: lib/libalpm/error.c:85 lib/libalpm/error.c:89
+#: lib/libalpm/error.c:90 lib/libalpm/error.c:94
msgid "transaction not initialized"
msgstr "operazione non inizializzata"
-#: lib/libalpm/error.c:87
+#: lib/libalpm/error.c:92
msgid "duplicate target"
msgstr "pacchetto doppio"
-#: lib/libalpm/error.c:91
+#: lib/libalpm/error.c:96
msgid "transaction not prepared"
msgstr "operazione non preparata"
-#: lib/libalpm/error.c:93
+#: lib/libalpm/error.c:98
msgid "transaction aborted"
msgstr "operazione annullata"
-#: lib/libalpm/error.c:95
+#: lib/libalpm/error.c:100
msgid "operation not compatible with the transaction type"
msgstr "operazione incompatibile con il tipo di transazione"
-#: lib/libalpm/error.c:97 lib/libalpm/sync.c:994
+#: lib/libalpm/error.c:102
msgid "could not commit transaction"
msgstr "impossibile eseguire l'operazione"
-#: lib/libalpm/error.c:99
+#: lib/libalpm/error.c:104
msgid "could not download all files"
msgstr "impossibile prelevare tutti i file"
-#: lib/libalpm/error.c:102
+#: lib/libalpm/error.c:107
msgid "could not find or read package"
msgstr "impossibile trovare o leggere il pacchetto"
-#: lib/libalpm/error.c:104
+#: lib/libalpm/error.c:109
msgid "invalid or corrupted package"
msgstr "pacchetto non valido o corrotto"
-#: lib/libalpm/error.c:106
+#: lib/libalpm/error.c:111
msgid "cannot open package file"
msgstr "impossibile aprire il pacchetto"
-#: lib/libalpm/error.c:108
+#: lib/libalpm/error.c:113
msgid "cannot load package data"
msgstr "impossibile caricare i dati del pacchetto"
-#: lib/libalpm/error.c:110
+#: lib/libalpm/error.c:115
msgid "package already installed"
msgstr "pacchetto già installato"
-#: lib/libalpm/error.c:112
+#: lib/libalpm/error.c:117
msgid "package not installed or lesser version"
msgstr "pacchetto non installato o una versione precedente"
-#: lib/libalpm/error.c:114
+#: lib/libalpm/error.c:119
msgid "cannot remove all files for package"
msgstr "impossibile rimuovere tutti i file del pacchetto"
-#: lib/libalpm/error.c:116
+#: lib/libalpm/error.c:121
msgid "package name is not valid"
msgstr "il nome del pacchetto non è valido"
-#: lib/libalpm/error.c:118
+#: lib/libalpm/error.c:123
msgid "corrupted package"
msgstr "pacchetto corrotto"
-#: lib/libalpm/error.c:120
+#: lib/libalpm/error.c:125
msgid "no such repository"
msgstr "nessun repository corrispondente"
-#: lib/libalpm/error.c:123
+#: lib/libalpm/error.c:128
+msgid "corrupted delta"
+msgstr "il delta è corrotto"
+
+#: lib/libalpm/error.c:130
+msgid "delta patch failed"
+msgstr "si sono verificati degli errori con la patch di delta"
+
+#: lib/libalpm/error.c:133
msgid "group not found"
msgstr "gruppo non trovato"
-#: lib/libalpm/error.c:126
+#: lib/libalpm/error.c:136
msgid "could not satisfy dependencies"
msgstr "impossibile soddisfare le dipendenze"
-#: lib/libalpm/error.c:128
+#: lib/libalpm/error.c:138
msgid "conflicting dependencies"
msgstr "dipendenze in conflitto"
-#: lib/libalpm/error.c:130
+#: lib/libalpm/error.c:140
msgid "conflicting files"
msgstr "file in conflitto"
-#: lib/libalpm/error.c:133
+#: lib/libalpm/error.c:143
msgid "user aborted the operation"
msgstr "operazione annullata"
-#: lib/libalpm/error.c:135
+#: lib/libalpm/error.c:145
msgid "internal error"
msgstr "errore interno"
-#: lib/libalpm/error.c:137
+#: lib/libalpm/error.c:147
msgid "libarchive error"
msgstr "errore di libarchive"
-#: lib/libalpm/error.c:139
-msgid "not enough space on disk"
-msgstr "spazio sul disco insufficiente"
-
-#: lib/libalpm/error.c:142
+#: lib/libalpm/error.c:150
msgid "not confirmed"
msgstr "non confermato"
-#: lib/libalpm/error.c:145
-msgid "bad configuration section name"
-msgstr "errore nel nome della sezione di configurazione"
-
-#: lib/libalpm/error.c:147
-msgid "'local' is reserved and cannot be used as a repository name"
-msgstr "'local' è riservato e non può essere usato come nome di un repository"
-
-#: lib/libalpm/error.c:149
-msgid "syntax error in config file"
-msgstr "errore di sintassi nel file di configurazione"
-
-#: lib/libalpm/error.c:151
-msgid "all directives must belong to a section"
-msgstr "tutte le direttive devono appartenere a una sezione"
-
-#: lib/libalpm/error.c:153
+#: lib/libalpm/error.c:152
msgid "invalid regular expression"
msgstr "espressione regolare non valida"
-#: lib/libalpm/error.c:156
+#: lib/libalpm/error.c:155
msgid "connection to remote host failed"
msgstr "impossibile stabilire una connessione con l'host remoto"
-#: lib/libalpm/error.c:159
+#: lib/libalpm/error.c:158
msgid "unexpected error"
msgstr "errore inaspettato"
-#: lib/libalpm/handle.c:163
-#, c-format
-msgid "cannot canonicalize specified root path '%s'"
-msgstr "impossibile canonicalizzare il path di root specificato '%s'"
-
-#: lib/libalpm/handle.c:175
+#: lib/libalpm/package.c:124
#, c-format
-msgid "option 'root' = %s"
-msgstr "opzione 'root' = %s"
+msgid "could not get md5sum for package %s-%s\n"
+msgstr "impossibile recuperare la somma md5 del pacchetto %s-%s\n"
-#: lib/libalpm/handle.c:195
+#: lib/libalpm/package.c:133
#, c-format
-msgid "option 'dbpath' = %s"
-msgstr "opzione 'dbpath' = %s"
+msgid "md5sums do not match for package %s-%s\n"
+msgstr "la somma md5 del pacchetto %s-%s non corrisponde\n"
-#: lib/libalpm/handle.c:211
+#: lib/libalpm/package.c:737
#, c-format
-msgid "option 'cachedir' = %s"
-msgstr "opzione 'cachedir' = %s"
+msgid "%s: forcing upgrade to version %s\n"
+msgstr "%s: aggiornamento forzato alla versione %s\n"
-#: lib/libalpm/md5driver.c:56
+#: lib/libalpm/package.c:742
#, c-format
-msgid "%s can't be opened\n"
-msgstr "impossibile aprire %s\n"
+msgid "%s: local (%s) is newer than %s (%s)\n"
+msgstr "%s: la versione installata (%s) è più recente di %s (%s)\n"
-#: lib/libalpm/md5driver.c:74
+#: lib/libalpm/package.c:750
#, c-format
-msgid "md5(%s) = %s"
-msgstr "md5(%s) = %s"
+msgid "%s-%s: delaying upgrade of package (%s)\n"
+msgstr "%s-%s: ritardo durante l'aggiornamento del pacchetto (%s)\n"
-#: lib/libalpm/package.c:147
+#: lib/libalpm/package.c:931
#, c-format
-msgid "%s-%s: ignoring package upgrade (%s)"
-msgstr "%s-%s: aggiornamento del pacchetto (%s) ignorato"
+msgid "could not parse package description file in %s\n"
+msgstr "impossibile analizzare il file di descrizione del pacchetto in %s\n"
-#: lib/libalpm/package.c:158
+#: lib/libalpm/package.c:936
#, c-format
-msgid "%s: forcing upgrade to version %s"
-msgstr "%s: aggiornamento forzato alla versione %s"
+msgid "missing package name in %s\n"
+msgstr "manca il nome del pacchetto in %s\n"
-#: lib/libalpm/package.c:163
+#: lib/libalpm/package.c:940
#, c-format
-msgid "%s: local (%s) is newer than %s (%s)"
-msgstr "%s: la versione installata (%s) è più recente di %s (%s)"
+msgid "missing package version in %s\n"
+msgstr "manca la versione del pacchetto in %s\n"
-#: lib/libalpm/package.c:171
+#: lib/libalpm/package.c:970
#, c-format
-msgid "%s-%s: delaying upgrade of package (%s)"
-msgstr "%s-%s: ritardo durante l'aggiornamento del pacchetto (%s)"
+msgid "could not remove tempfile %s\n"
+msgstr "impossibile rimuovere il file temporaneo %s\n"
-#: lib/libalpm/package.c:222 lib/libalpm/package.c:281
+#: lib/libalpm/package.c:985 lib/libalpm/package.c:998
#, c-format
-msgid "%s: syntax error in description file line %d"
-msgstr "%s: errore di sintassi nel file di descrizione alla linea %d"
+msgid "error while reading package %s: %s\n"
+msgstr "si è verificato un errore durante la lettura del pacchetto %s: %s\n"
-#: lib/libalpm/package.c:355
-msgid "could not parse the package description file"
-msgstr "impossibile analizzare il file di descrizione del pacchetto"
-
-#: lib/libalpm/package.c:359
-#, c-format
-msgid "missing package name in %s"
-msgstr "manca il nome del pacchetto in %s"
-
-#: lib/libalpm/package.c:363
+#: lib/libalpm/package.c:1005
#, c-format
-msgid "missing package version in %s"
-msgstr "manca la versione del pacchetto in %s"
+msgid "missing package metadata in %s\n"
+msgstr "manca il metadata del pacchetto in %s\n"
-#: lib/libalpm/package.c:398
+#: lib/libalpm/package.c:1012
#, c-format
-msgid "could not remove tempfile %s"
-msgstr "impossibile rimuovere il file temporaneo %s"
-
-#: lib/libalpm/package.c:411 lib/libalpm/package.c:418
-#, c-format
-msgid "error while reading package: %s"
-msgstr "si è verificato un errore durante la lettura del pacchetto: %s"
-
-#: lib/libalpm/package.c:424
-msgid "missing package metadata"
-msgstr "manca il metadata del pacchetto"
-
-#: lib/libalpm/package.c:431
-#, c-format
-msgid "missing package filelist in %s, generating one"
-msgstr "manca il filelist nel pacchetto %s, creazione in corso"
-
-#: lib/libalpm/package.c:570
-#, c-format
-msgid "adding '%s' in requiredby field for '%s'"
-msgstr "inclusione di '%s' nel campo 'richiesto da' di '%s'"
-
-#: lib/libalpm/package.c:584
-#, c-format
-msgid "adding '%s' in requiredby field for '%s' (provides: %s)"
-msgstr "inclusione di '%s' nel campo 'richiesto da' di '%s' (fornisce: %s)"
-
-#: lib/libalpm/remove.c:79
-#, c-format
-msgid "could not find %s in database"
-msgstr "impossibile trovare %s nel database"
-
-#: lib/libalpm/remove.c:93
-#, c-format
-msgid "adding %s in the targets list"
-msgstr "aggiunta in corso di %s nella lista dei pacchetti"
+msgid "missing package filelist in %s, generating one\n"
+msgstr "manca il filelist nel pacchetto %s, creazione in corso\n"
#: lib/libalpm/remove.c:121
#, c-format
-msgid "pulling %s in the targets list"
-msgstr "estrazione in corso di %s nella lista dei pacchetti"
+msgid "could not find %s in database -- skipping\n"
+msgstr "impossibile trovare %s nel database, sarà ignorato\n"
-#: lib/libalpm/remove.c:124
+#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:243
#, c-format
-msgid "could not find %s in database -- skipping"
-msgstr "impossibile trovare %s nel database, sarà ignorato"
-
-#: lib/libalpm/remove.c:142
-msgid "finding removable dependencies"
-msgstr "ricerca delle dipendenze eliminabili"
-
-#: lib/libalpm/remove.c:175
-#, c-format
-msgid "cannot remove file '%s': %s"
-msgstr "impossibile rimuovere il file '%s': %s"
-
-#: lib/libalpm/remove.c:213
-#, c-format
-msgid "Skipping removal of '%s' due to NoUpgrade"
-msgstr "rimozione di '%s' ignorata dovuta a NoUpgrade"
-
-#: lib/libalpm/remove.c:220
-#, c-format
-msgid "file %s does not exist"
-msgstr "il file %s non esiste"
-
-#: lib/libalpm/remove.c:227
-#, c-format
-msgid "keeping directory %s"
-msgstr "conservazione in corso della directory %s"
-
-#: lib/libalpm/remove.c:229
-#, c-format
-msgid "removing directory %s"
-msgstr "rimozione in corso della directory %s"
-
-#: lib/libalpm/remove.c:236
-#, c-format
-msgid "%s is in trans->skip_remove, skipping removal"
-msgstr "%s è in trans->skip_remove, rimozione ignorata"
-
-#: lib/libalpm/remove.c:250
-#, c-format
-msgid "transaction is set to NOSAVE, not backing up '%s'"
-msgstr "operazione impostata su NOSAVE, nessun backup di '%s'"
-
-#: lib/libalpm/remove.c:254
-#, c-format
-msgid "unlinking %s"
-msgstr "rimozione di %s in corso"
-
-#: lib/libalpm/remove.c:261
-#, c-format
-msgid "cannot remove file %s: %s"
-msgstr "impossibile rimuovere il file %s: %s"
-
-#: lib/libalpm/remove.c:294
-#, c-format
-msgid "removing package %s-%s"
-msgstr "rimozione in corso del pacchetto %s-%s"
-
-#: lib/libalpm/remove.c:309
-#, c-format
-msgid "not removing package '%s', can't remove all files"
-msgstr "impossibile rimuovere il pacchetto '%s' e tutti i file"
-
-#: lib/libalpm/remove.c:316
-#, c-format
-msgid "removing %d files"
-msgstr "rimozione in corso di %d file"
+msgid "cannot remove file '%s': %s\n"
+msgstr "impossibile rimuovere il file '%s': %s\n"
#: lib/libalpm/remove.c:337
#, c-format
-msgid "removing database entry '%s'"
-msgstr "rimozione in corso della voce '%s' dal database"
-
-#: lib/libalpm/remove.c:339
-#, c-format
-msgid "could not remove database entry %s-%s"
-msgstr "impossibile rimuovere la voce %s-%s dal database"
-
-#: lib/libalpm/remove.c:344
-#, c-format
-msgid "could not remove entry '%s' from cache"
-msgstr "impossibile rimuovere '%s' dalla cache"
+msgid "could not remove database entry %s-%s\n"
+msgstr "impossibile rimuovere la voce %s-%s dal database\n"
-#: lib/libalpm/sha1.c:397
+#: lib/libalpm/remove.c:342
#, c-format
-msgid "sha1: %s can't be opened\n"
-msgstr "sha1: impossibile aprire %s\n"
+msgid "could not remove entry '%s' from cache\n"
+msgstr "impossibile rimuovere la voce '%s' dalla cache\n"
-#: lib/libalpm/sha1.c:412
+#: lib/libalpm/server.c:56
#, c-format
-msgid "sha1(%s) = %s"
-msgstr "sha1(%s) = %s"
-
-#: lib/libalpm/sync.c:183
-msgid "checking for package upgrades"
-msgstr "ricerca dei pacchetti da aggiornare in corso"
-
-#: lib/libalpm/sync.c:215
-#, c-format
-msgid "%s-%s elected for upgrade (%s => %s)"
-msgstr "%s-%s selezionato per l'aggiornamento (%s => %s)"
-
-#: lib/libalpm/sync.c:270
-#, c-format
-msgid "searching for target in repo '%s'"
-msgstr "ricerca in corso del pacchetto nel repository '%s'"
+msgid "url '%s' is invalid, ignoring\n"
+msgstr ""
-#: lib/libalpm/sync.c:278 lib/libalpm/sync.c:301
-#, c-format
-msgid "target '%s' not found -- looking for provisions"
-msgstr "pacchetto '%s' non trovato, ricerca delle alternative in corso"
+#: lib/libalpm/server.c:60
+msgid "url scheme not specified, assuming http\n"
+msgstr ""
-#: lib/libalpm/sync.c:283 lib/libalpm/sync.c:306
-#, c-format
-msgid "found '%s' as a provision for '%s'"
-msgstr "trovato '%s' come alternativa a '%s'"
+#: lib/libalpm/server.c:241
+msgid "disk"
+msgstr ""
-#: lib/libalpm/sync.c:290
-#, c-format
-msgid "repository '%s' not found"
-msgstr "impossibile trovare il repository '%s'"
+#: lib/libalpm/server.c:245
+#, fuzzy, c-format
+msgid "failed retrieving file '%s' from %s : %s\n"
+msgstr "impossibile recuperare alcuni file da %s\n"
-#: lib/libalpm/sync.c:331
-#, c-format
-msgid "%s-%s is up to date -- skipping"
-msgstr "%s-%s è aggiornato, sarà ignorato"
+#: lib/libalpm/server.c:275
+msgid "cannot resume download, starting over\n"
+msgstr ""
-#: lib/libalpm/sync.c:354
-#, c-format
-msgid "adding target '%s' to the transaction set"
-msgstr "aggiunta in corso del pacchetto '%s'"
+#: lib/libalpm/server.c:288
+#, fuzzy, c-format
+msgid "cannot write to file '%s'\n"
+msgstr "impossibile rimuovere il file '%s': %s\n"
-#: lib/libalpm/sync.c:402
-msgid "resolving target's dependencies"
-msgstr "risoluzione in corso delle dipendenze dei pacchetti"
+#: lib/libalpm/server.c:307
+#, fuzzy, c-format
+msgid "error downloading '%s': %s\n"
+msgstr "si è verificato un errore durante la lettura del pacchetto %s: %s\n"
-#: lib/libalpm/sync.c:422
-#, c-format
-msgid "adding package %s-%s to the transaction targets"
-msgstr "aggiunta in corso del pacchetto %s-%s"
+#: lib/libalpm/server.c:319
+#, fuzzy, c-format
+msgid "error writing to file '%s': %s\n"
+msgstr "impossibile rimuovere il file '%s': %s\n"
-#: lib/libalpm/sync.c:463
-msgid "looking for unresolvable dependencies"
-msgstr "ricerca in corso delle dipendenze irrisolvibili"
+#: lib/libalpm/server.c:387
+#, fuzzy, c-format
+msgid "could not chdir to %s\n"
+msgstr "impossibile spostarsi nella directory / (%s)\n"
-#: lib/libalpm/sync.c:494
-#, c-format
-msgid "package '%s' conflicts with '%s'"
-msgstr "il pacchetto '%s' va in conflitto con '%s'"
+#: lib/libalpm/server.c:394
+msgid "running XferCommand: fork failed!\n"
+msgstr ""
-#: lib/libalpm/sync.c:516
-#, c-format
-msgid "'%s' not found in transaction set -- skipping"
-msgstr "impossibile trovare '%s', sarà ignorato"
+#: lib/libalpm/server.c:445
+msgid "URL does not contain a file for download\n"
+msgstr ""
-#: lib/libalpm/sync.c:527
-#, c-format
-msgid "package '%s' provides its own conflict"
-msgstr "il pacchetto '%s' fornisce il suo stesso conflitto"
+#: lib/libalpm/server.c:458
+#, fuzzy, c-format
+msgid "failed to download %s\n"
+msgstr "impossibile prelevare tutti i file"
-#: lib/libalpm/sync.c:550 lib/libalpm/sync.c:555
+#: lib/libalpm/sync.c:135
#, c-format
-msgid "'%s' is in the target list -- keeping it"
-msgstr "'%s' è nella lista dei pacchetti e sarà conservato"
+msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
+msgstr ""
+"%s-%s: aggiornamento del pacchetto ignorato (per essere sostituito con %s-%"
+"s)\n"
-#: lib/libalpm/sync.c:567 lib/libalpm/sync.c:604
-#, c-format
-msgid "removing '%s' from target list"
-msgstr "rimozione in corso di '%s' dalla lista dei pacchetti"
+#: lib/libalpm/sync.c:250
+#, fuzzy, c-format
+msgid "%s: ignoring package upgrade (%s => %s)\n"
+msgstr "%s-%s: aggiornamento del pacchetto (%s) ignorato\n"
-#: lib/libalpm/sync.c:576
+#: lib/libalpm/sync.c:320
#, c-format
-msgid "resolving package '%s' conflict"
-msgstr "risoluzione in corso del conflitto del pacchetto '%s'"
+msgid "repository '%s' not found\n"
+msgstr "impossibile trovare il repository '%s'\n"
-#: lib/libalpm/sync.c:599
+#: lib/libalpm/sync.c:354
#, c-format
-msgid "electing '%s' for removal"
-msgstr "selezionato '%s' per la rimozione"
+msgid "%s-%s is up to date -- skipping\n"
+msgstr "%s-%s è aggiornato, sarà ignorato\n"
-#: lib/libalpm/sync.c:610 lib/libalpm/sync.c:626
-msgid "unresolvable package conflicts detected"
-msgstr "sono stati rilevati dei conflitti irrisolvibili"
+#: lib/libalpm/sync.c:358
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- reinstalling\n"
+msgstr "%s-%s è aggiornato, sarà ignorato\n"
-#: lib/libalpm/sync.c:678
-msgid "checking dependencies of packages designated for removal"
-msgstr ""
-"controllo in corso delle dipendenze dei pacchetti designati per la rimozione"
-
-#: lib/libalpm/sync.c:692
-msgid "something has gone horribly wrong"
-msgstr "qualcosa è andato orribilmente storto"
+#: lib/libalpm/sync.c:613 lib/libalpm/sync.c:618
+msgid "unresolvable package conflicts detected\n"
+msgstr "sono stati rilevati dei conflitti irrisolvibili\n"
-#: lib/libalpm/sync.c:712
+#: lib/libalpm/sync.c:628
#, c-format
-msgid "found '%s' as a provision for '%s' -- conflict aborted"
-msgstr "trovato '%s' come alternativa a '%s', conflitto annullato"
+msgid "malloc failure: could not allocate %zd bytes\n"
+msgstr "malloc failure: impossibile allocare %zd byte\n"
-#: lib/libalpm/sync.c:808
+#: lib/libalpm/sync.c:825
#, c-format
-msgid "%s is already in the cache\n"
-msgstr "%s è già presente nella cache\n"
+msgid "command: %s\n"
+msgstr "comando: %s\n"
-#: lib/libalpm/sync.c:819
+#: lib/libalpm/sync.c:888 lib/libalpm/sync.c:896
#, c-format
-msgid "no %s cache exists, creating...\n"
-msgstr "la cache di %s non esiste, creazione in corso...\n"
+msgid "can't get md5 checksum for file %s\n"
+msgstr "impossibile recuperare il checksum md5 del file %s\n"
-#: lib/libalpm/sync.c:820
+#: lib/libalpm/sync.c:910
#, c-format
-msgid "warning: no %s cache exists, creating..."
-msgstr "attenzione: la cache di %s non esiste, creazione in corso..."
+msgid "file %s was corrupted (bad MD5 checksum)\n"
+msgstr "il file %s è corrotto (MD5 errato)\n"
-#: lib/libalpm/sync.c:825
-msgid "couldn't create package cache, using /tmp instead\n"
-msgstr ""
-"impossibile creare la cache del pacchetto, al suo posto sarà usata /tmp\n"
-
-#: lib/libalpm/sync.c:826
-msgid "warning: couldn't create package cache, using /tmp instead"
-msgstr ""
-"attenzione: impossibile creare la cache del pacchetto, al suo posto sarà "
-"usata /tmp"
-
-#: lib/libalpm/sync.c:833
+#: lib/libalpm/sync.c:1056
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "impossibile recuperare alcuni file da %s\n"
-#: lib/libalpm/sync.c:863 lib/libalpm/sync.c:875
-#, c-format
-msgid "can't get md5 or sha1 checksum for package %s\n"
-msgstr "impossibile recuperare il checksum md5 o sha1 del pacchetto %s\n"
-
-#: lib/libalpm/sync.c:894
-#, c-format
-msgid "archive %s was corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr "archivio %s era corrotto (MD5 o SHA1 checksum errato)\n"
-
-#: lib/libalpm/sync.c:896
-#, c-format
-msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr "archivio %s è corrotto (MD5 o SHA1 checksum errato)\n"
-
-#: lib/libalpm/sync.c:917
-msgid "could not create removal transaction"
-msgstr "impossibile avviare l'operazione di rimozione"
+#: lib/libalpm/sync.c:1137
+msgid "could not create removal transaction\n"
+msgstr "impossibile avviare l'operazione di rimozione\n"
-#: lib/libalpm/sync.c:923
-msgid "could not initialize the removal transaction"
-msgstr "impossibile inizializzare l'operazione di rimozione"
+#: lib/libalpm/sync.c:1143
+msgid "could not initialize the removal transaction\n"
+msgstr "impossibile inizializzare l'operazione di rimozione\n"
-#: lib/libalpm/sync.c:943
-msgid "removing conflicting and to-be-replaced packages"
-msgstr "rimozione in corso dei pacchetti in conflitto e da sostituire"
+#: lib/libalpm/sync.c:1165
+msgid "could not prepare removal transaction\n"
+msgstr "impossibile preparare l'operazione di rimozione\n"
-#: lib/libalpm/sync.c:945
-msgid "could not prepare removal transaction"
-msgstr "impossibile preparare l'operazione di rimozione"
+#: lib/libalpm/sync.c:1171
+msgid "could not commit removal transaction\n"
+msgstr "impossibile eseguire l'operazione di rimozione\n"
-#: lib/libalpm/sync.c:951
-msgid "could not commit removal transaction"
-msgstr "impossibile eseguire l'operazione di rimozione"
+#: lib/libalpm/sync.c:1182
+msgid "could not create transaction\n"
+msgstr "impossibile avviare l'operazione\n"
-#: lib/libalpm/sync.c:958
-msgid "installing packages"
-msgstr "installazione dei pacchetti in corso"
+#: lib/libalpm/sync.c:1187
+msgid "could not initialize transaction\n"
+msgstr "impossibile inizializzare l'operazione\n"
-#: lib/libalpm/sync.c:961
-msgid "could not create transaction"
-msgstr "impossibile avviare l'operazione"
+#: lib/libalpm/sync.c:1214
+msgid "could not prepare transaction\n"
+msgstr "impossibile preparare l'operazione\n"
-#: lib/libalpm/sync.c:966
-msgid "could not initialize transaction"
-msgstr "impossibile inizializzare l'operazione"
+#: lib/libalpm/sync.c:1219
+msgid "could not commit transaction\n"
+msgstr "impossibile eseguire l'operazione\n"
-#: lib/libalpm/sync.c:989
-msgid "could not prepare transaction"
-msgstr "impossibile preparare l'operazione"
-
-#: lib/libalpm/sync.c:1001
-msgid "updating database for replaced packages' dependencies"
-msgstr ""
-"aggiornamento in corso del database per le dipendenze dei pacchetti "
-"sostituiti"
-
-#: lib/libalpm/sync.c:1030
-#, c-format
-msgid "could not update requiredby for database entry %s-%s"
-msgstr ""
-"impossibile aggiornare il campo 'richiesto da' per la voce del database %s-%s"
-
-#: lib/libalpm/sync.c:1039
-#, c-format
-msgid "could not update new database entry %s-%s"
-msgstr "impossibile aggiornare la nuova voce del database %s-%s"
-
-#: lib/libalpm/sync.c:1079
-#, c-format
-msgid "found package '%s-%s' in sync"
-msgstr "trovato il pacchetto '%s-%s' nel database"
-
-#: lib/libalpm/sync.c:1085
-#, c-format
-msgid "package '%s' not found in sync"
-msgstr "impossibile trovare il pacchetto '%s'"
-
-#: lib/libalpm/trans.c:271
-#, c-format
-msgid "updating dependency packages 'requiredby' fields for %s-%s"
-msgstr "aggiornamento delle dipendenze nei campi 'richiesto da' di %s-%s"
-
-#: lib/libalpm/trans.c:274
-msgid "package has no dependencies, no other packages to update"
-msgstr "il pacchetto non ha dipendenze, nessun altro pacchetto da aggiornare"
-
-#: lib/libalpm/trans.c:311 lib/libalpm/trans.c:341
-#, c-format
-msgid "updating 'requiredby' field for package '%s'"
-msgstr "aggiornamento in corso del campo 'richiesto da' del pacchetto '%s'"
-
-#: lib/libalpm/trans.c:326 lib/libalpm/trans.c:356
-#, c-format
-msgid "could not update 'requiredby' database entry %s-%s"
-msgstr "impossibile aggiornare la voce 'richiesto da' del database %s-%s"
-
-#: lib/libalpm/trans.c:333
-#, c-format
-msgid "could not find dependency '%s'"
-msgstr "impossibile trovare la dipendenza '%s'"
-
-#: lib/libalpm/util.c:142
-#, c-format
-msgid "failed to make path '%s' : %s"
-msgstr "impossibile creare il path '%s' : %s"
-
-#: lib/libalpm/util.c:280
-#, c-format
-msgid "could not open %s: %s\n"
-msgstr "impossibile aprire %s: %s\n"
-
-#: lib/libalpm/util.c:293
+#: lib/libalpm/trans.c:214
#, c-format
-msgid "could not extract %s: %s\n"
-msgstr "impossibile estrarre %s: %s\n"
+msgid "could not remove lock file %s\n"
+msgstr "impossibile rimuovere il file di lock %s\n"
-#: lib/libalpm/util.c:350
+#: lib/libalpm/trans.c:483
#, c-format
-msgid "logaction called: %s"
-msgstr "logaction chiamata: %s"
+msgid "No /bin/sh in root dir (%s), aborting scriptlet\n"
+msgstr ""
+"/bin/sh non è presente nella root directory (%s), lo scriptlet sarà "
+"interrotto\n"
-#: lib/libalpm/util.c:445
-msgid "could not create temp directory"
-msgstr "impossibile creare la directory temporanea"
+#: lib/libalpm/trans.c:494
+msgid "could not create temp directory\n"
+msgstr "impossibile creare la directory temporanea\n"
-#: lib/libalpm/util.c:472
+#: lib/libalpm/trans.c:536
#, c-format
-msgid "could not change directory to %s (%s)"
-msgstr "impossibile spostarsi nella directory %s (%s)"
+msgid "could not change directory to %s (%s)\n"
+msgstr "impossibile spostarsi nella directory %s (%s)\n"
-#: lib/libalpm/util.c:476
+#: lib/libalpm/trans.c:554
#, c-format
-msgid "executing %s script..."
-msgstr "esecuzione dello script %s in corso..."
+msgid "could not fork a new process (%s)\n"
+msgstr "impossibile effettuare il fork di un nuovo processo (%s)\n"
-#: lib/libalpm/util.c:489
+#: lib/libalpm/trans.c:564
#, c-format
-msgid "could not fork a new process (%s)"
-msgstr "impossibile effettuare il fork di un nuovo processo (%s)"
+msgid "could not change the root directory (%s)\n"
+msgstr "impossibile cambiare la root directory (%s)\n"
-#: lib/libalpm/util.c:496
+#: lib/libalpm/trans.c:569
#, c-format
-msgid "chrooting in %s"
-msgstr "chroot in corso nella directory %s"
+msgid "could not change directory to / (%s)\n"
+msgstr "impossibile spostarsi nella directory / (%s)\n"
-#: lib/libalpm/util.c:498
+#: lib/libalpm/trans.c:578
#, c-format
-msgid "could not change the root directory (%s)"
-msgstr "impossibile cambiare la root directory (%s)"
+msgid "call to popen failed (%s)"
+msgstr "chiamata a popen non riuscita (%s)"
-#: lib/libalpm/util.c:502
+#: lib/libalpm/trans.c:597
#, c-format
-msgid "could not change directory to / (%s)"
-msgstr "impossibile spostarsi nella directory / (%s)"
+msgid "call to waitpid failed (%s)\n"
+msgstr "chiamata a waitpid non riuscita (%s)\n"
-#: lib/libalpm/util.c:506
-#, c-format
-msgid "executing \"%s\""
-msgstr "esecuzione in corso di \"%s\""
+#: lib/libalpm/trans.c:606
+msgid "scriptlet failed to execute correctly\n"
+msgstr "L'esecuzione dello scriptlet non è riuscita correttamente\n"
-#: lib/libalpm/util.c:509
+#: lib/libalpm/trans.c:615
#, c-format
-msgid "call to popen failed (%s)"
-msgstr "chiamata a popen non riuscita (%s)"
+msgid "could not remove tmpdir %s\n"
+msgstr "impossibile rimuovere la directory temporanea %s\n"
-#: lib/libalpm/util.c:541
+#: lib/libalpm/util.c:204
#, c-format
-msgid "call to waitpid failed (%s)"
-msgstr "chiamata a waitpid non riuscita (%s)"
+msgid "failed to make path '%s' : %s\n"
+msgstr "impossibile seguire il percorso '%s' : %s\n"
-#: lib/libalpm/util.c:550
+#: lib/libalpm/util.c:389
#, c-format
-msgid "could not remove tmpdir %s"
-msgstr "impossibile rimuovere la directory temporanea %s"
+msgid "could not open %s: %s\n"
+msgstr "impossibile aprire %s: %s\n"
-#: lib/libalpm/util.c:568
+#: lib/libalpm/util.c:573
#, c-format
-msgid "cannot read disk space information from %s: %s"
-msgstr "impossibile leggere le informazioni dello spazio del disco da %s: %s"
+msgid "no %s cache exists, creating...\n"
+msgstr "la cache di %s non esiste, creazione in corso...\n"
-#: lib/libalpm/util.c:609
-#, c-format
-msgid "check_freespace: total pkg size: %lld, disk space: %lld"
+#: lib/libalpm/util.c:593
+msgid "couldn't create package cache, using /tmp instead\n"
msgstr ""
-"check_freespace: dimensione totale dei pacchetti: %lld, spazio disponibile: %"
-"lld"
+"impossibile creare la cache del pacchetto, al suo posto sarà usata /tmp\n"
-#: lib/libalpm/versioncmp.c:279
+#: lib/libalpm/util.c:643
#, c-format
-msgid "depcmp: %s-%s %s %s-%s => %s"
-msgstr "depcmp: %s-%s %s %s-%s => %s"
+msgid "md5: %s can't be opened\n"
+msgstr "md5: impossibile aprire %s\n"
-#: lib/libalpm/versioncmp.c:284
+#: lib/libalpm/util.c:645
#, c-format
-msgid "depcmp: %s-%s %s %s => %s"
-msgstr "depcmp: %s-%s %s %s => %s"
-
-#~ msgid "%s saved as %s.pacorig"
-#~ msgstr "%s salvato come %s.pacorig"
+msgid "md5: %s can't be read\n"
+msgstr "md5: impossibile leggere %s\n"
-#~ msgid "notice: %s is in NoExtract -- skipping extraction"
-#~ msgstr "avviso: %s è in NoExtract -- estrazione ignorata"
+#~ msgid "please remove '%s' first, using -Rd\n"
+#~ msgstr "Si consiglia di rimuovere prima '%s', usando l'opzione -Rd\n"
-#~ msgid "loading package cache (infolevel=%#x) for repository '%s'"
-#~ msgstr ""
-#~ "caricamento della cache del pacchetto (infolevel=%#x) per il repository '%"
-#~ "s'"
+#~ msgid "cannot resolve dependencies for \"%s\"\n"
+#~ msgstr "impossibile risolvere le dipendenze per \"%s\"\n"
-#~ msgid "package cache reloaded (infolevel=%#x) for repository '%s'"
+#~ msgid "could not update requiredby for database entry %s-%s\n"
#~ msgstr ""
-#~ "ricaricamento della cache del pacchetto (infolevel=%#x) per il repository "
-#~ "'%s'"
-
-#~ msgid "targs vs db: found %s as a conflict for %s"
-#~ msgstr "target vs db: trovato %s come conflitto per %s"
-
-#~ msgid "targs vs targs: found %s as a conflict for %s"
-#~ msgstr "targs vs targs: trovato %s come conflitto per %s"
-
-#~ msgid "db vs targs: found %s as a conflict for %s"
-#~ msgstr "db vs targs: trovato %s come conflitto per %s"
-
-#~ msgid "no dependencies for target '%s'"
-#~ msgstr "nessuna dipendenza richiesta dal pacchetto '%s'"
-
-#~ msgid "could not parse token %s"
-#~ msgstr "impossibile analizzare il simbolo %s"
-
-#~ msgid "compare versions for %s: %s vs %s, result=%d"
-#~ msgstr "confronto delle versioni di %s: %s vs %s, risultato=%d"
-
-#~ msgid "%s-%s: ignoring package upgrade (%s => %s)"
-#~ msgstr "%s-%s: aggiornamento del pacchetto (%s => %s) ignorato"
-
-#~ msgid "db scan found package: %s"
-#~ msgstr "trovato il pacchetto: %s"
+#~ "impossibile aggiornare il campo richiesto da per la voce del database %s-%"
+#~ "s\n"
-#~ msgid "dep is NULL!"
-#~ msgstr "dep è NULL!"
+#~ msgid "could not update new database entry %s-%s\n"
+#~ msgstr "impossibile aggiornare la nuova voce del database %s-%s\n"
-#~ msgid "loading ALL info for '%s'"
-#~ msgstr "caricamento in corso di tutte le informazioni di '%s'"
+#~ msgid "could not update 'requiredby' database entry %s-%s\n"
+#~ msgstr "impossibile aggiornare la voce 'richiesto da' del database %s-%s\n"
diff --git a/lib/libalpm/po/libalpm.pot b/lib/libalpm/po/libalpm.pot
index 4f7a1bf3..9e0f1829 100644
--- a/lib/libalpm/po/libalpm.pot
+++ b/lib/libalpm/po/libalpm.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-09-16 16:55-0500\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,1487 +16,658 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: lib/libalpm/add.c:77
+#: lib/libalpm/add.c:88
#, c-format
-msgid "loading target '%s'"
+msgid "replacing older version %s-%s by %s in target list\n"
msgstr ""
-#: lib/libalpm/add.c:122
+#: lib/libalpm/add.c:97
#, c-format
-msgid "replacing older version %s-%s by %s in target list"
+msgid "newer version %s-%s is in the target list -- skipping\n"
msgstr ""
-#: lib/libalpm/add.c:131
-#, c-format
-msgid "newer version %s-%s is in the target list -- skipping"
-msgstr ""
-
-#: lib/libalpm/add.c:138
-#, c-format
-msgid "reading '%s' metadata"
-msgstr ""
-
-#: lib/libalpm/add.c:191 lib/libalpm/remove.c:111
-msgid "looking for unsatisfied dependencies"
-msgstr ""
-
-#: lib/libalpm/add.c:203 lib/libalpm/sync.c:483
-msgid "looking for conflicts"
-msgstr ""
-
-#: lib/libalpm/add.c:208
-msgid "replacing packages with -A and -U is not supported yet"
-msgstr ""
-
-#: lib/libalpm/add.c:209
-#, c-format
-msgid "please remove '%s' first, using -Rd"
-msgstr ""
-
-#: lib/libalpm/add.c:250 lib/libalpm/remove.c:147
-msgid "sorting by dependencies"
-msgstr ""
-
-#: lib/libalpm/add.c:262
-msgid "cleaning up"
-msgstr ""
-
-#: lib/libalpm/add.c:277
-msgid "looking for file conflicts"
-msgstr ""
-
-#: lib/libalpm/add.c:346
-#, c-format
-msgid "upgrading package %s-%s"
-msgstr ""
-
-#: lib/libalpm/add.c:370
-#, c-format
-msgid "adding package %s-%s"
-msgstr ""
-
-#: lib/libalpm/add.c:383
-#, c-format
-msgid "removing old package first (%s-%s)"
-msgstr ""
-
-#: lib/libalpm/add.c:411
-#, c-format
-msgid "adding %s to the NoUpgrade array temporarily"
-msgstr ""
-
-#: lib/libalpm/add.c:429
-msgid "extracting files"
-msgstr ""
-
-#: lib/libalpm/add.c:444 lib/libalpm/util.c:465
-msgid "could not get current working directory"
-msgstr ""
-
-#: lib/libalpm/add.c:500 lib/libalpm/add.c:501
-#, c-format
-msgid "%s is in NoExtract, skipping extraction"
-msgstr ""
-
-#: lib/libalpm/add.c:508
-#, c-format
-msgid "%s is in trans->skip_add, skipping extraction"
-msgstr ""
-
-#: lib/libalpm/add.c:554 lib/libalpm/add.c:555 lib/libalpm/add.c:706
-#, c-format
-msgid "could not extract %s (%s)"
-msgstr ""
-
-#: lib/libalpm/add.c:598
-#, c-format
-msgid "checking md5 hashes for %s"
-msgstr ""
-
-#: lib/libalpm/add.c:600
-#, c-format
-msgid "checking sha1 hashes for %s"
-msgstr ""
-
-#: lib/libalpm/add.c:602
-#, c-format
-msgid "current: %s"
-msgstr ""
-
-#: lib/libalpm/add.c:603
-#, c-format
-msgid "new: %s"
-msgstr ""
-
-#: lib/libalpm/add.c:604
-#, c-format
-msgid "original: %s"
-msgstr ""
-
-#: lib/libalpm/add.c:616
-#, c-format
-msgid "could not rename %s (%s)"
-msgstr ""
-
-#: lib/libalpm/add.c:617
-#, c-format
-msgid "error: could not rename %s (%s)"
-msgstr ""
-
-#: lib/libalpm/add.c:623 lib/libalpm/add.c:642
-#, c-format
-msgid "could not copy tempfile to %s (%s)"
-msgstr ""
-
-#: lib/libalpm/add.c:624
-#, c-format
-msgid "error: could not copy tempfile to %s (%s)"
-msgstr ""
-
-#: lib/libalpm/add.c:628 lib/libalpm/remove.c:247
-#, c-format
-msgid "%s saved as %s"
-msgstr ""
-
-#: lib/libalpm/add.c:629
-#, c-format
-msgid "warning: %s saved as %s"
-msgstr ""
-
-#: lib/libalpm/add.c:639
-#, c-format
-msgid "action: installing new file: %s"
-msgstr ""
-
-#: lib/libalpm/add.c:649 lib/libalpm/add.c:655 lib/libalpm/add.c:660
-msgid "action: leaving existing file in place"
-msgstr ""
-
-#: lib/libalpm/add.c:663
-msgid "action: keeping current file and installing new one with .pacnew ending"
-msgstr ""
-
-#: lib/libalpm/add.c:666
-#, c-format
-msgid "could not install %s as %s: %s"
-msgstr ""
-
-#: lib/libalpm/add.c:667
-#, c-format
-msgid "error: could not install %s as %s: %s"
-msgstr ""
-
-#: lib/libalpm/add.c:669
-#, c-format
-msgid "%s installed as %s"
-msgstr ""
-
-#: lib/libalpm/add.c:670
-#, c-format
-msgid "warning: %s installed as %s"
-msgstr ""
-
-#: lib/libalpm/add.c:684
-#, c-format
-msgid "%s is in NoUpgrade -- skipping"
-msgstr ""
-
-#: lib/libalpm/add.c:685
-#, c-format
-msgid "extracting %s as %s.pacnew"
-msgstr ""
-
-#: lib/libalpm/add.c:686
-#, c-format
-msgid "warning: extracting %s as %s.pacnew"
-msgstr ""
-
-#: lib/libalpm/add.c:689
-#, c-format
-msgid "extracting %s"
-msgstr ""
-
-#: lib/libalpm/add.c:707
-#, c-format
-msgid "error: could not extract %s (%s)"
-msgstr ""
-
-#: lib/libalpm/add.c:719
-#, c-format
-msgid "appending backup entry for %s"
-msgstr ""
-
-#: lib/libalpm/add.c:751 lib/libalpm/add.c:753
-#, c-format
-msgid "errors occurred while %s %s"
-msgstr ""
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "upgrading"
-msgstr ""
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "installing"
-msgstr ""
-
-#: lib/libalpm/add.c:771
-#, c-format
-msgid "provision '%s' has been removed from package %s (%s => %s)"
-msgstr ""
-
-#: lib/libalpm/add.c:783
-#, c-format
-msgid "updating '%s' due to provision change (%s)"
-msgstr ""
-
-#: lib/libalpm/add.c:787 lib/libalpm/add.c:788
-#, c-format
-msgid "could not update provision '%s' from '%s'"
-msgstr ""
-
-#: lib/libalpm/add.c:801 lib/libalpm/remove.c:336
-msgid "updating database"
-msgstr ""
-
-#: lib/libalpm/add.c:802
-#, c-format
-msgid "adding database entry '%s'"
-msgstr ""
-
-#: lib/libalpm/add.c:805 lib/libalpm/add.c:807
-#, c-format
-msgid "could not update database entry %s-%s"
-msgstr ""
-
-#: lib/libalpm/add.c:813
-#, c-format
-msgid "could not add entry '%s' in cache"
-msgstr ""
-
-#: lib/libalpm/add.c:843 lib/libalpm/remove.c:363 lib/libalpm/sync.c:1055
-#, c-format
-msgid "running \"ldconfig -r %s\""
-msgstr ""
-
-#: lib/libalpm/alpm.c:116
-#, c-format
-msgid "removing DB %s, %d remaining..."
-msgstr ""
-
-#: lib/libalpm/alpm.c:181
-#, c-format
-msgid "unregistering database '%s'"
-msgstr ""
-
-#: lib/libalpm/alpm.c:186
-#, c-format
-msgid "closing database '%s'"
-msgstr ""
-
-#: lib/libalpm/alpm.c:232
-#, c-format
-msgid ""
-"adding new server to database '%s': protocol '%s', server '%s', path '%s'"
-msgstr ""
-
-#: lib/libalpm/alpm.c:236
-#, c-format
-msgid "serverlist flushed for '%s'"
-msgstr ""
-
-#: lib/libalpm/alpm.c:279
-#, c-format
-msgid "failed to get lastupdate time for %s (no big deal)"
-msgstr ""
-
-#: lib/libalpm/alpm.c:298
-#, c-format
-msgid "failed to sync db: %s [%d]"
-msgstr ""
-
-#: lib/libalpm/alpm.c:302
-#, c-format
-msgid "sync: new mtime for %s: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:308
-#, c-format
-msgid "flushing database %s%s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:312
-#, c-format
-msgid "could not remove database entry %s%s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:481
-#, c-format
-msgid "could not get sha1sum for package %s-%s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:487
-#, c-format
-msgid "sha1sums for package %s-%s match"
-msgstr ""
-
-#: lib/libalpm/alpm.c:490
-#, c-format
-msgid "sha1sums do not match for package %s-%s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:525
-#, c-format
-msgid "could not get md5sum for package %s-%s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:531
-#, c-format
-msgid "md5sums for package %s-%s match"
-msgstr ""
-
-#: lib/libalpm/alpm.c:534
-#, c-format
-msgid "md5sums do not match for package %s-%s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:783
-#, c-format
-msgid "could not remove lock file %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:784
-#, c-format
-msgid "warning: could not remove lock file %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:920
-#, c-format
-msgid "config: new section '%s'"
-msgstr ""
-
-#: lib/libalpm/alpm.c:951
-msgid "config: nopassiveftp"
-msgstr ""
-
-#: lib/libalpm/alpm.c:954
-msgid "config: usesyslog"
-msgstr ""
-
-#: lib/libalpm/alpm.c:957
-msgid "config: chomp"
-msgstr ""
-
-#: lib/libalpm/alpm.c:960
-msgid "config: usecolor"
-msgstr ""
-
-#: lib/libalpm/alpm.c:969
-#, c-format
-msgid "config: including %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:979 lib/libalpm/alpm.c:984
-#, c-format
-msgid "config: noupgrade: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:992 lib/libalpm/alpm.c:997
-#, c-format
-msgid "config: noextract: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1005 lib/libalpm/alpm.c:1010
-#, c-format
-msgid "config: ignorepkg: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1018 lib/libalpm/alpm.c:1023
-#, c-format
-msgid "config: holdpkg: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1030
-#, c-format
-msgid "config: dbpath: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1037
-#, c-format
-msgid "config: cachedir: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1044
-#, c-format
-msgid "config: rootdir: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1047
-#, c-format
-msgid "config: logfile: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1050
-#, c-format
-msgid "config: xfercommand: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1055
-#, c-format
-msgid "config: upgradedelay: %d"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1093 lib/libalpm/sync.c:107
-msgid "checking for package replacements"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1104 lib/libalpm/sync.c:123
-#, c-format
-msgid "checking replacement '%s' for package '%s'"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1107 lib/libalpm/sync.c:125
-#, c-format
-msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1137 lib/libalpm/sync.c:160
-#, c-format
-msgid "%s-%s elected for upgrade (to be replaced by %s-%s)"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1159 lib/libalpm/sync.c:194
-#, c-format
-msgid "'%s' not found in sync db -- skipping"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1173 lib/libalpm/sync.c:208 lib/libalpm/sync.c:509
-#, c-format
-msgid "'%s' is already elected for removal -- skipping"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1179
-#, c-format
-msgid "%s elected for upgrade (%s => %s)"
-msgstr ""
-
-#: lib/libalpm/be_files.c:61
-#, c-format
-msgid "unpacking database '%s'"
-msgstr ""
-
-#: lib/libalpm/be_files.c:78
-#, c-format
-msgid "opening database from path '%s'"
+#: lib/libalpm/add.c:168
+msgid "conflicting packages were found in the target list\n"
msgstr ""
-#: lib/libalpm/be_files.c:182
-#, c-format
-msgid "db scan could not find package: %s"
+#: lib/libalpm/add.c:169
+msgid "you cannot install two conflicting packages at the same time\n"
msgstr ""
-#: lib/libalpm/be_files.c:186
-#, c-format
-msgid "invalid name for database entry '%s'"
+#: lib/libalpm/add.c:172
+msgid "replacing packages with -A and -U is not supported yet\n"
msgstr ""
-#: lib/libalpm/be_files.c:221
-msgid "invalid package entry provided to _alpm_db_read, skipping"
+#: lib/libalpm/add.c:173
+msgid "you can replace packages manually using -Rd and -U\n"
msgstr ""
-#: lib/libalpm/be_files.c:226
+#: lib/libalpm/add.c:365
#, c-format
msgid ""
-"request to read database info for a file-based package '%s', skipping..."
-msgstr ""
-
-#: lib/libalpm/be_files.c:239
-#, c-format
-msgid "loading package data for %s : level=%d"
-msgstr ""
-
-#: lib/libalpm/be_files.c:247
-#, c-format
-msgid "cannot find '%s-%s' in db '%s'"
-msgstr ""
-
-#: lib/libalpm/be_files.c:255 lib/libalpm/be_files.c:401
-#: lib/libalpm/be_files.c:424 lib/libalpm/be_files.c:515
-#: lib/libalpm/be_files.c:605 lib/libalpm/be_files.c:632
-#: lib/libalpm/package.c:208
-#, c-format
-msgid "could not open file %s: %s"
-msgstr ""
-
-#: lib/libalpm/be_files.c:512
-#, c-format
-msgid "writing %s-%s DESC information back to db"
-msgstr ""
-
-#: lib/libalpm/be_files.c:602
-#, c-format
-msgid "writing %s-%s FILES information back to db"
-msgstr ""
-
-#: lib/libalpm/be_files.c:629
-#, c-format
-msgid "writing %s-%s DEPENDS information back to db"
-msgstr ""
-
-#: lib/libalpm/cache.c:59
-#, c-format
-msgid "loading package cache for repository '%s'"
-msgstr ""
-
-#: lib/libalpm/cache.c:64
-#, c-format
-msgid "adding '%s' to package cache for db '%s'"
-msgstr ""
-
-#: lib/libalpm/cache.c:85
-#, c-format
-msgid "freeing package cache for repository '%s'"
-msgstr ""
-
-#: lib/libalpm/cache.c:109
-#, c-format
-msgid "error: pkgcache is NULL for db '%s'"
+"directory permissions differ on %s\n"
+"filesystem: %o package: %o\n"
msgstr ""
-#: lib/libalpm/cache.c:129
+#: lib/libalpm/add.c:392
#, c-format
-msgid "adding entry '%s' in '%s' cache"
+msgid "extract: symlink %s does not point to dir\n"
msgstr ""
-#: lib/libalpm/cache.c:149
+#: lib/libalpm/add.c:399
#, c-format
-msgid "removing entry '%s' from '%s' cache"
+msgid "extract: not overwriting dir with file %s\n"
msgstr ""
-#: lib/libalpm/cache.c:156
+#: lib/libalpm/add.c:454 lib/libalpm/add.c:598 lib/libalpm/util.c:422
#, c-format
-msgid "cannot remove entry '%s' from '%s' cache: not found"
+msgid "could not extract %s (%s)\n"
msgstr ""
-#: lib/libalpm/cache.c:178
+#: lib/libalpm/add.c:505
#, c-format
-msgid "error: failed to get '%s' from NULL pkgcache"
+msgid "could not rename %s (%s)\n"
msgstr ""
-#: lib/libalpm/cache.c:201
+#: lib/libalpm/add.c:512 lib/libalpm/add.c:532 lib/libalpm/trans.c:508
#, c-format
-msgid "loading group cache for repository '%s'"
+msgid "could not copy tempfile to %s (%s)\n"
msgstr ""
-#: lib/libalpm/conflict.c:69
+#: lib/libalpm/add.c:517 lib/libalpm/remove.c:234
#, c-format
-msgid " found conflict '%s' : package '%s'"
+msgid "%s saved as %s\n"
msgstr ""
-#: lib/libalpm/conflict.c:78
+#: lib/libalpm/add.c:556
#, c-format
-msgid " found conflict '%s' : package '%s' provides '%s'"
+msgid "could not install %s as %s: %s\n"
msgstr ""
-#: lib/libalpm/conflict.c:101 lib/libalpm/conflict.c:143
+#: lib/libalpm/add.c:559
#, c-format
-msgid "package '%s' conflicts with itself - packaging error"
+msgid "%s installed as %s\n"
msgstr ""
-#: lib/libalpm/conflict.c:107
+#: lib/libalpm/add.c:576
#, c-format
-msgid "checkconflicts: target '%s' vs db"
-msgstr ""
-
-#: lib/libalpm/conflict.c:149
-#, c-format
-msgid "checkconflicts: target '%s' vs all targets"
-msgstr ""
-
-#: lib/libalpm/conflict.c:181
-#, c-format
-msgid "checkconflicts: db vs target '%s'"
-msgstr ""
-
-#: lib/libalpm/conflict.c:201
-#, c-format
-msgid "target '%s' is also in target list, using NEW conflicts"
-msgstr ""
-
-#: lib/libalpm/conflict.c:257
-#, c-format
-msgid "\tCONFLICTS:: %s conflicts with %s"
-msgstr ""
-
-#: lib/libalpm/conflict.c:349 lib/libalpm/deps.c:60 lib/libalpm/deps.c:438
-#: lib/libalpm/deps.c:634 lib/libalpm/deps.c:674 lib/libalpm/group.c:45
-#: lib/libalpm/handle.c:51 lib/libalpm/package.c:82 lib/libalpm/sync.c:67
-#: lib/libalpm/sync.c:614 lib/libalpm/sync.c:630 lib/libalpm/sync.c:727
-#: lib/libalpm/trans.c:55 lib/libalpm/util.c:614 lib/libalpm/util.c:621
-#, c-format
-msgid "malloc failure: could not allocate %d bytes"
-msgstr ""
-
-#: lib/libalpm/db.c:64 lib/libalpm/db.c:71
-#, c-format
-msgid "malloc failed: could not allocate %d bytes"
-msgstr ""
-
-#: lib/libalpm/db.c:167
-msgid "attempt to re-register the 'local' DB"
-msgstr ""
-
-#: lib/libalpm/db.c:175
-#, c-format
-msgid "attempt to re-register the '%s' database, using existing"
-msgstr ""
-
-#: lib/libalpm/db.c:181
-#, c-format
-msgid "registering database '%s'"
-msgstr ""
-
-#: lib/libalpm/db.c:186
-#, c-format
-msgid "database directory '%s' does not exist, creating it"
-msgstr ""
-
-#: lib/libalpm/db.c:197
-#, c-format
-msgid "opening database '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:131
-msgid "started sorting dependencies"
-msgstr ""
-
-#: lib/libalpm/deps.c:136
-msgid "possible dependency cycle detected"
-msgstr ""
-
-#: lib/libalpm/deps.c:183
-msgid "sorting dependencies finished"
+msgid "extracting %s as %s.pacnew\n"
msgstr ""
-#: lib/libalpm/deps.c:225 lib/libalpm/deps.c:310
-msgid "null package found in package list"
+#: lib/libalpm/add.c:711 lib/libalpm/trans.c:529
+msgid "could not get current working directory\n"
msgstr ""
-#: lib/libalpm/deps.c:230
+#: lib/libalpm/add.c:765
#, c-format
-msgid "cannot find package installed '%s'"
+msgid "problem occurred while upgrading %s\n"
msgstr ""
-#: lib/libalpm/deps.c:261
+#: lib/libalpm/add.c:770
#, c-format
-msgid "checkdeps: dependency '%s' has moved from '%s' to '%s'"
+msgid "problem occurred while installing %s\n"
msgstr ""
-#: lib/libalpm/deps.c:280
+#: lib/libalpm/add.c:785
#, c-format
-msgid "checkdeps: dependency '%s' satisfied by installed package '%s'"
+msgid "could not update database entry %s-%s\n"
msgstr ""
-#: lib/libalpm/deps.c:289
+#: lib/libalpm/add.c:793
#, c-format
-msgid "checkdeps: updated '%s' won't satisfy a dependency of '%s'"
+msgid "could not add entry '%s' in cache\n"
msgstr ""
-#: lib/libalpm/deps.c:359
+#: lib/libalpm/be_files.c:223
#, c-format
-msgid "missing dependency '%s' for package '%s'"
+msgid "invalid name for database entry '%s'\n"
msgstr ""
-#: lib/libalpm/deps.c:409
+#: lib/libalpm/be_files.c:275
#, c-format
-msgid "checkdeps: found %s as required by %s"
+msgid "loading package data for %s : level=%d\n"
msgstr ""
-#: lib/libalpm/deps.c:485
+#: lib/libalpm/be_files.c:292 lib/libalpm/be_files.c:429
+#: lib/libalpm/be_files.c:452 lib/libalpm/be_files.c:563
+#: lib/libalpm/be_files.c:641 lib/libalpm/be_files.c:669
+#: lib/libalpm/package.c:787
#, c-format
-msgid "excluding %s -- explicitly installed"
+msgid "could not open file %s: %s\n"
msgstr ""
-#: lib/libalpm/deps.c:532
+#: lib/libalpm/cache.c:62
#, c-format
-msgid "cannot find package \"%s\" or anything that provides it!"
+msgid "adding '%s' to package cache for db '%s'\n"
msgstr ""
-#: lib/libalpm/deps.c:540 lib/libalpm/deps.c:551
+#: lib/libalpm/db.c:285
#, c-format
-msgid "adding '%s' to the targets"
+msgid "could not remove database entry %s%s\n"
msgstr ""
-#: lib/libalpm/deps.c:583
-msgid "started resolving dependencies"
+#: lib/libalpm/db.c:553
+msgid "attempt to re-register the 'local' DB\n"
msgstr ""
-#: lib/libalpm/deps.c:601
-#, c-format
-msgid "%s provides dependency %s -- skipping"
+#: lib/libalpm/db.c:562 lib/libalpm/db.c:613
+msgid "database path is undefined\n"
msgstr ""
-#: lib/libalpm/deps.c:630
-#, c-format
-msgid ""
-"cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+#: lib/libalpm/deps.c:173
+msgid "dependency cycle detected:\n"
msgstr ""
-#: lib/libalpm/deps.c:647
+#: lib/libalpm/deps.c:175
#, c-format
-msgid "dependency %s is already in the target list -- skipping"
+msgid "%s will be removed after its %s dependency\n"
msgstr ""
-#: lib/libalpm/deps.c:667
+#: lib/libalpm/deps.c:177
#, c-format
-msgid "pulling dependency %s (needed by %s)"
+msgid "%s will be installed before its %s dependency\n"
msgstr ""
-#: lib/libalpm/deps.c:671
+#: lib/libalpm/deps.c:573
#, c-format
-msgid "cannot resolve dependencies for \"%s\""
+msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr ""
-#: lib/libalpm/deps.c:687
-#, c-format
-msgid "dependency cycle detected: %s"
-msgstr ""
-
-#: lib/libalpm/deps.c:691
-msgid "finished resolving dependencies"
-msgstr ""
-
-#: lib/libalpm/error.c:40
+#: lib/libalpm/error.c:43
msgid "out of memory!"
msgstr ""
-#: lib/libalpm/error.c:42
+#: lib/libalpm/error.c:45
msgid "unexpected system error"
msgstr ""
-#: lib/libalpm/error.c:44
+#: lib/libalpm/error.c:47
msgid "insufficient privileges"
msgstr ""
-#: lib/libalpm/error.c:46
+#: lib/libalpm/error.c:49
msgid "could not find or read file"
msgstr ""
-#: lib/libalpm/error.c:48
+#: lib/libalpm/error.c:51
+msgid "could not find or read directory"
+msgstr ""
+
+#: lib/libalpm/error.c:53
msgid "wrong or NULL argument passed"
msgstr ""
-#: lib/libalpm/error.c:51
+#: lib/libalpm/error.c:56
msgid "library not initialized"
msgstr ""
-#: lib/libalpm/error.c:53
+#: lib/libalpm/error.c:58
msgid "library already initialized"
msgstr ""
-#: lib/libalpm/error.c:55
+#: lib/libalpm/error.c:60
msgid "unable to lock database"
msgstr ""
-#: lib/libalpm/error.c:58
+#: lib/libalpm/error.c:63
msgid "could not open database"
msgstr ""
-#: lib/libalpm/error.c:60
+#: lib/libalpm/error.c:65
msgid "could not create database"
msgstr ""
-#: lib/libalpm/error.c:62
+#: lib/libalpm/error.c:67
msgid "database not initialized"
msgstr ""
-#: lib/libalpm/error.c:64
+#: lib/libalpm/error.c:69
msgid "database already registered"
msgstr ""
-#: lib/libalpm/error.c:66
+#: lib/libalpm/error.c:71
msgid "could not find database"
msgstr ""
-#: lib/libalpm/error.c:68
+#: lib/libalpm/error.c:73
msgid "could not update database"
msgstr ""
-#: lib/libalpm/error.c:70
+#: lib/libalpm/error.c:75
msgid "could not remove database entry"
msgstr ""
-#: lib/libalpm/error.c:73
+#: lib/libalpm/error.c:78
msgid "invalid url for server"
msgstr ""
-#: lib/libalpm/error.c:80
+#: lib/libalpm/error.c:85
msgid "could not set parameter"
msgstr ""
-#: lib/libalpm/error.c:83
+#: lib/libalpm/error.c:88
msgid "transaction already initialized"
msgstr ""
-#: lib/libalpm/error.c:85 lib/libalpm/error.c:89
+#: lib/libalpm/error.c:90 lib/libalpm/error.c:94
msgid "transaction not initialized"
msgstr ""
-#: lib/libalpm/error.c:87
+#: lib/libalpm/error.c:92
msgid "duplicate target"
msgstr ""
-#: lib/libalpm/error.c:91
+#: lib/libalpm/error.c:96
msgid "transaction not prepared"
msgstr ""
-#: lib/libalpm/error.c:93
+#: lib/libalpm/error.c:98
msgid "transaction aborted"
msgstr ""
-#: lib/libalpm/error.c:95
+#: lib/libalpm/error.c:100
msgid "operation not compatible with the transaction type"
msgstr ""
-#: lib/libalpm/error.c:97 lib/libalpm/sync.c:994
+#: lib/libalpm/error.c:102
msgid "could not commit transaction"
msgstr ""
-#: lib/libalpm/error.c:99
+#: lib/libalpm/error.c:104
msgid "could not download all files"
msgstr ""
-#: lib/libalpm/error.c:102
+#: lib/libalpm/error.c:107
msgid "could not find or read package"
msgstr ""
-#: lib/libalpm/error.c:104
+#: lib/libalpm/error.c:109
msgid "invalid or corrupted package"
msgstr ""
-#: lib/libalpm/error.c:106
+#: lib/libalpm/error.c:111
msgid "cannot open package file"
msgstr ""
-#: lib/libalpm/error.c:108
+#: lib/libalpm/error.c:113
msgid "cannot load package data"
msgstr ""
-#: lib/libalpm/error.c:110
+#: lib/libalpm/error.c:115
msgid "package already installed"
msgstr ""
-#: lib/libalpm/error.c:112
+#: lib/libalpm/error.c:117
msgid "package not installed or lesser version"
msgstr ""
-#: lib/libalpm/error.c:114
+#: lib/libalpm/error.c:119
msgid "cannot remove all files for package"
msgstr ""
-#: lib/libalpm/error.c:116
+#: lib/libalpm/error.c:121
msgid "package name is not valid"
msgstr ""
-#: lib/libalpm/error.c:118
+#: lib/libalpm/error.c:123
msgid "corrupted package"
msgstr ""
-#: lib/libalpm/error.c:120
+#: lib/libalpm/error.c:125
msgid "no such repository"
msgstr ""
-#: lib/libalpm/error.c:123
-msgid "group not found"
-msgstr ""
-
-#: lib/libalpm/error.c:126
-msgid "could not satisfy dependencies"
-msgstr ""
-
#: lib/libalpm/error.c:128
-msgid "conflicting dependencies"
+msgid "corrupted delta"
msgstr ""
#: lib/libalpm/error.c:130
-msgid "conflicting files"
+msgid "delta patch failed"
msgstr ""
#: lib/libalpm/error.c:133
-msgid "user aborted the operation"
+msgid "group not found"
msgstr ""
-#: lib/libalpm/error.c:135
-msgid "internal error"
+#: lib/libalpm/error.c:136
+msgid "could not satisfy dependencies"
msgstr ""
-#: lib/libalpm/error.c:137
-msgid "libarchive error"
+#: lib/libalpm/error.c:138
+msgid "conflicting dependencies"
msgstr ""
-#: lib/libalpm/error.c:139
-msgid "not enough space on disk"
+#: lib/libalpm/error.c:140
+msgid "conflicting files"
msgstr ""
-#: lib/libalpm/error.c:142
-msgid "not confirmed"
+#: lib/libalpm/error.c:143
+msgid "user aborted the operation"
msgstr ""
#: lib/libalpm/error.c:145
-msgid "bad configuration section name"
+msgid "internal error"
msgstr ""
#: lib/libalpm/error.c:147
-msgid "'local' is reserved and cannot be used as a repository name"
-msgstr ""
-
-#: lib/libalpm/error.c:149
-msgid "syntax error in config file"
+msgid "libarchive error"
msgstr ""
-#: lib/libalpm/error.c:151
-msgid "all directives must belong to a section"
+#: lib/libalpm/error.c:150
+msgid "not confirmed"
msgstr ""
-#: lib/libalpm/error.c:153
+#: lib/libalpm/error.c:152
msgid "invalid regular expression"
msgstr ""
-#: lib/libalpm/error.c:156
+#: lib/libalpm/error.c:155
msgid "connection to remote host failed"
msgstr ""
-#: lib/libalpm/error.c:159
+#: lib/libalpm/error.c:158
msgid "unexpected error"
msgstr ""
-#: lib/libalpm/handle.c:163
-#, c-format
-msgid "cannot canonicalize specified root path '%s'"
-msgstr ""
-
-#: lib/libalpm/handle.c:175
-#, c-format
-msgid "option 'root' = %s"
-msgstr ""
-
-#: lib/libalpm/handle.c:195
+#: lib/libalpm/package.c:124
#, c-format
-msgid "option 'dbpath' = %s"
+msgid "could not get md5sum for package %s-%s\n"
msgstr ""
-#: lib/libalpm/handle.c:211
+#: lib/libalpm/package.c:133
#, c-format
-msgid "option 'cachedir' = %s"
+msgid "md5sums do not match for package %s-%s\n"
msgstr ""
-#: lib/libalpm/md5driver.c:56
+#: lib/libalpm/package.c:737
#, c-format
-msgid "%s can't be opened\n"
+msgid "%s: forcing upgrade to version %s\n"
msgstr ""
-#: lib/libalpm/md5driver.c:74
+#: lib/libalpm/package.c:742
#, c-format
-msgid "md5(%s) = %s"
+msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr ""
-#: lib/libalpm/package.c:147
+#: lib/libalpm/package.c:750
#, c-format
-msgid "%s-%s: ignoring package upgrade (%s)"
+msgid "%s-%s: delaying upgrade of package (%s)\n"
msgstr ""
-#: lib/libalpm/package.c:158
+#: lib/libalpm/package.c:931
#, c-format
-msgid "%s: forcing upgrade to version %s"
+msgid "could not parse package description file in %s\n"
msgstr ""
-#: lib/libalpm/package.c:163
+#: lib/libalpm/package.c:936
#, c-format
-msgid "%s: local (%s) is newer than %s (%s)"
+msgid "missing package name in %s\n"
msgstr ""
-#: lib/libalpm/package.c:171
+#: lib/libalpm/package.c:940
#, c-format
-msgid "%s-%s: delaying upgrade of package (%s)"
+msgid "missing package version in %s\n"
msgstr ""
-#: lib/libalpm/package.c:222 lib/libalpm/package.c:281
+#: lib/libalpm/package.c:970
#, c-format
-msgid "%s: syntax error in description file line %d"
+msgid "could not remove tempfile %s\n"
msgstr ""
-#: lib/libalpm/package.c:355
-msgid "could not parse the package description file"
-msgstr ""
-
-#: lib/libalpm/package.c:359
-#, c-format
-msgid "missing package name in %s"
-msgstr ""
-
-#: lib/libalpm/package.c:363
+#: lib/libalpm/package.c:985 lib/libalpm/package.c:998
#, c-format
-msgid "missing package version in %s"
+msgid "error while reading package %s: %s\n"
msgstr ""
-#: lib/libalpm/package.c:398
+#: lib/libalpm/package.c:1005
#, c-format
-msgid "could not remove tempfile %s"
+msgid "missing package metadata in %s\n"
msgstr ""
-#: lib/libalpm/package.c:411 lib/libalpm/package.c:418
+#: lib/libalpm/package.c:1012
#, c-format
-msgid "error while reading package: %s"
-msgstr ""
-
-#: lib/libalpm/package.c:424
-msgid "missing package metadata"
-msgstr ""
-
-#: lib/libalpm/package.c:431
-#, c-format
-msgid "missing package filelist in %s, generating one"
-msgstr ""
-
-#: lib/libalpm/package.c:570
-#, c-format
-msgid "adding '%s' in requiredby field for '%s'"
-msgstr ""
-
-#: lib/libalpm/package.c:584
-#, c-format
-msgid "adding '%s' in requiredby field for '%s' (provides: %s)"
-msgstr ""
-
-#: lib/libalpm/remove.c:79
-#, c-format
-msgid "could not find %s in database"
-msgstr ""
-
-#: lib/libalpm/remove.c:93
-#, c-format
-msgid "adding %s in the targets list"
+msgid "missing package filelist in %s, generating one\n"
msgstr ""
#: lib/libalpm/remove.c:121
#, c-format
-msgid "pulling %s in the targets list"
-msgstr ""
-
-#: lib/libalpm/remove.c:124
-#, c-format
-msgid "could not find %s in database -- skipping"
-msgstr ""
-
-#: lib/libalpm/remove.c:142
-msgid "finding removable dependencies"
-msgstr ""
-
-#: lib/libalpm/remove.c:175
-#, c-format
-msgid "cannot remove file '%s': %s"
-msgstr ""
-
-#: lib/libalpm/remove.c:213
-#, c-format
-msgid "Skipping removal of '%s' due to NoUpgrade"
-msgstr ""
-
-#: lib/libalpm/remove.c:220
-#, c-format
-msgid "file %s does not exist"
-msgstr ""
-
-#: lib/libalpm/remove.c:227
-#, c-format
-msgid "keeping directory %s"
-msgstr ""
-
-#: lib/libalpm/remove.c:229
-#, c-format
-msgid "removing directory %s"
+msgid "could not find %s in database -- skipping\n"
msgstr ""
-#: lib/libalpm/remove.c:236
+#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:243
#, c-format
-msgid "%s is in trans->skip_remove, skipping removal"
-msgstr ""
-
-#: lib/libalpm/remove.c:250
-#, c-format
-msgid "transaction is set to NOSAVE, not backing up '%s'"
-msgstr ""
-
-#: lib/libalpm/remove.c:254
-#, c-format
-msgid "unlinking %s"
-msgstr ""
-
-#: lib/libalpm/remove.c:261
-#, c-format
-msgid "cannot remove file %s: %s"
-msgstr ""
-
-#: lib/libalpm/remove.c:294
-#, c-format
-msgid "removing package %s-%s"
-msgstr ""
-
-#: lib/libalpm/remove.c:309
-#, c-format
-msgid "not removing package '%s', can't remove all files"
-msgstr ""
-
-#: lib/libalpm/remove.c:316
-#, c-format
-msgid "removing %d files"
+msgid "cannot remove file '%s': %s\n"
msgstr ""
#: lib/libalpm/remove.c:337
#, c-format
-msgid "removing database entry '%s'"
-msgstr ""
-
-#: lib/libalpm/remove.c:339
-#, c-format
-msgid "could not remove database entry %s-%s"
+msgid "could not remove database entry %s-%s\n"
msgstr ""
-#: lib/libalpm/remove.c:344
+#: lib/libalpm/remove.c:342
#, c-format
-msgid "could not remove entry '%s' from cache"
+msgid "could not remove entry '%s' from cache\n"
msgstr ""
-#: lib/libalpm/sha1.c:397
+#: lib/libalpm/server.c:56
#, c-format
-msgid "sha1: %s can't be opened\n"
-msgstr ""
-
-#: lib/libalpm/sha1.c:412
-#, c-format
-msgid "sha1(%s) = %s"
-msgstr ""
-
-#: lib/libalpm/sync.c:183
-msgid "checking for package upgrades"
+msgid "url '%s' is invalid, ignoring\n"
msgstr ""
-#: lib/libalpm/sync.c:215
-#, c-format
-msgid "%s-%s elected for upgrade (%s => %s)"
+#: lib/libalpm/server.c:60
+msgid "url scheme not specified, assuming http\n"
msgstr ""
-#: lib/libalpm/sync.c:270
-#, c-format
-msgid "searching for target in repo '%s'"
+#: lib/libalpm/server.c:241
+msgid "disk"
msgstr ""
-#: lib/libalpm/sync.c:278 lib/libalpm/sync.c:301
+#: lib/libalpm/server.c:245
#, c-format
-msgid "target '%s' not found -- looking for provisions"
+msgid "failed retrieving file '%s' from %s : %s\n"
msgstr ""
-#: lib/libalpm/sync.c:283 lib/libalpm/sync.c:306
-#, c-format
-msgid "found '%s' as a provision for '%s'"
+#: lib/libalpm/server.c:275
+msgid "cannot resume download, starting over\n"
msgstr ""
-#: lib/libalpm/sync.c:290
+#: lib/libalpm/server.c:288
#, c-format
-msgid "repository '%s' not found"
+msgid "cannot write to file '%s'\n"
msgstr ""
-#: lib/libalpm/sync.c:331
+#: lib/libalpm/server.c:307
#, c-format
-msgid "%s-%s is up to date -- skipping"
+msgid "error downloading '%s': %s\n"
msgstr ""
-#: lib/libalpm/sync.c:354
+#: lib/libalpm/server.c:319
#, c-format
-msgid "adding target '%s' to the transaction set"
-msgstr ""
-
-#: lib/libalpm/sync.c:402
-msgid "resolving target's dependencies"
+msgid "error writing to file '%s': %s\n"
msgstr ""
-#: lib/libalpm/sync.c:422
+#: lib/libalpm/server.c:387
#, c-format
-msgid "adding package %s-%s to the transaction targets"
+msgid "could not chdir to %s\n"
msgstr ""
-#: lib/libalpm/sync.c:463
-msgid "looking for unresolvable dependencies"
+#: lib/libalpm/server.c:394
+msgid "running XferCommand: fork failed!\n"
msgstr ""
-#: lib/libalpm/sync.c:494
-#, c-format
-msgid "package '%s' conflicts with '%s'"
+#: lib/libalpm/server.c:445
+msgid "URL does not contain a file for download\n"
msgstr ""
-#: lib/libalpm/sync.c:516
+#: lib/libalpm/server.c:458
#, c-format
-msgid "'%s' not found in transaction set -- skipping"
+msgid "failed to download %s\n"
msgstr ""
-#: lib/libalpm/sync.c:527
+#: lib/libalpm/sync.c:135
#, c-format
-msgid "package '%s' provides its own conflict"
+msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
msgstr ""
-#: lib/libalpm/sync.c:550 lib/libalpm/sync.c:555
+#: lib/libalpm/sync.c:250
#, c-format
-msgid "'%s' is in the target list -- keeping it"
+msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr ""
-#: lib/libalpm/sync.c:567 lib/libalpm/sync.c:604
+#: lib/libalpm/sync.c:320
#, c-format
-msgid "removing '%s' from target list"
+msgid "repository '%s' not found\n"
msgstr ""
-#: lib/libalpm/sync.c:576
-#, c-format
-msgid "resolving package '%s' conflict"
-msgstr ""
-
-#: lib/libalpm/sync.c:599
-#, c-format
-msgid "electing '%s' for removal"
-msgstr ""
-
-#: lib/libalpm/sync.c:610 lib/libalpm/sync.c:626
-msgid "unresolvable package conflicts detected"
-msgstr ""
-
-#: lib/libalpm/sync.c:678
-msgid "checking dependencies of packages designated for removal"
-msgstr ""
-
-#: lib/libalpm/sync.c:692
-msgid "something has gone horribly wrong"
-msgstr ""
-
-#: lib/libalpm/sync.c:712
+#: lib/libalpm/sync.c:354
#, c-format
-msgid "found '%s' as a provision for '%s' -- conflict aborted"
+msgid "%s-%s is up to date -- skipping\n"
msgstr ""
-#: lib/libalpm/sync.c:808
+#: lib/libalpm/sync.c:358
#, c-format
-msgid "%s is already in the cache\n"
+msgid "%s-%s is up to date -- reinstalling\n"
msgstr ""
-#: lib/libalpm/sync.c:819
-#, c-format
-msgid "no %s cache exists, creating...\n"
+#: lib/libalpm/sync.c:613 lib/libalpm/sync.c:618
+msgid "unresolvable package conflicts detected\n"
msgstr ""
-#: lib/libalpm/sync.c:820
+#: lib/libalpm/sync.c:628
#, c-format
-msgid "warning: no %s cache exists, creating..."
+msgid "malloc failure: could not allocate %zd bytes\n"
msgstr ""
#: lib/libalpm/sync.c:825
-msgid "couldn't create package cache, using /tmp instead\n"
-msgstr ""
-
-#: lib/libalpm/sync.c:826
-msgid "warning: couldn't create package cache, using /tmp instead"
-msgstr ""
-
-#: lib/libalpm/sync.c:833
-#, c-format
-msgid "failed to retrieve some files from %s\n"
-msgstr ""
-
-#: lib/libalpm/sync.c:863 lib/libalpm/sync.c:875
-#, c-format
-msgid "can't get md5 or sha1 checksum for package %s\n"
-msgstr ""
-
-#: lib/libalpm/sync.c:894
-#, c-format
-msgid "archive %s was corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr ""
-
-#: lib/libalpm/sync.c:896
#, c-format
-msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr ""
-
-#: lib/libalpm/sync.c:917
-msgid "could not create removal transaction"
-msgstr ""
-
-#: lib/libalpm/sync.c:923
-msgid "could not initialize the removal transaction"
-msgstr ""
-
-#: lib/libalpm/sync.c:943
-msgid "removing conflicting and to-be-replaced packages"
-msgstr ""
-
-#: lib/libalpm/sync.c:945
-msgid "could not prepare removal transaction"
-msgstr ""
-
-#: lib/libalpm/sync.c:951
-msgid "could not commit removal transaction"
-msgstr ""
-
-#: lib/libalpm/sync.c:958
-msgid "installing packages"
-msgstr ""
-
-#: lib/libalpm/sync.c:961
-msgid "could not create transaction"
-msgstr ""
-
-#: lib/libalpm/sync.c:966
-msgid "could not initialize transaction"
-msgstr ""
-
-#: lib/libalpm/sync.c:989
-msgid "could not prepare transaction"
-msgstr ""
-
-#: lib/libalpm/sync.c:1001
-msgid "updating database for replaced packages' dependencies"
+msgid "command: %s\n"
msgstr ""
-#: lib/libalpm/sync.c:1030
+#: lib/libalpm/sync.c:888 lib/libalpm/sync.c:896
#, c-format
-msgid "could not update requiredby for database entry %s-%s"
+msgid "can't get md5 checksum for file %s\n"
msgstr ""
-#: lib/libalpm/sync.c:1039
+#: lib/libalpm/sync.c:910
#, c-format
-msgid "could not update new database entry %s-%s"
+msgid "file %s was corrupted (bad MD5 checksum)\n"
msgstr ""
-#: lib/libalpm/sync.c:1079
+#: lib/libalpm/sync.c:1056
#, c-format
-msgid "found package '%s-%s' in sync"
+msgid "failed to retrieve some files from %s\n"
msgstr ""
-#: lib/libalpm/sync.c:1085
-#, c-format
-msgid "package '%s' not found in sync"
+#: lib/libalpm/sync.c:1137
+msgid "could not create removal transaction\n"
msgstr ""
-#: lib/libalpm/trans.c:271
-#, c-format
-msgid "updating dependency packages 'requiredby' fields for %s-%s"
+#: lib/libalpm/sync.c:1143
+msgid "could not initialize the removal transaction\n"
msgstr ""
-#: lib/libalpm/trans.c:274
-msgid "package has no dependencies, no other packages to update"
+#: lib/libalpm/sync.c:1165
+msgid "could not prepare removal transaction\n"
msgstr ""
-#: lib/libalpm/trans.c:311 lib/libalpm/trans.c:341
-#, c-format
-msgid "updating 'requiredby' field for package '%s'"
+#: lib/libalpm/sync.c:1171
+msgid "could not commit removal transaction\n"
msgstr ""
-#: lib/libalpm/trans.c:326 lib/libalpm/trans.c:356
-#, c-format
-msgid "could not update 'requiredby' database entry %s-%s"
+#: lib/libalpm/sync.c:1182
+msgid "could not create transaction\n"
msgstr ""
-#: lib/libalpm/trans.c:333
-#, c-format
-msgid "could not find dependency '%s'"
+#: lib/libalpm/sync.c:1187
+msgid "could not initialize transaction\n"
msgstr ""
-#: lib/libalpm/util.c:142
-#, c-format
-msgid "failed to make path '%s' : %s"
+#: lib/libalpm/sync.c:1214
+msgid "could not prepare transaction\n"
msgstr ""
-#: lib/libalpm/util.c:280
-#, c-format
-msgid "could not open %s: %s\n"
+#: lib/libalpm/sync.c:1219
+msgid "could not commit transaction\n"
msgstr ""
-#: lib/libalpm/util.c:293
+#: lib/libalpm/trans.c:214
#, c-format
-msgid "could not extract %s: %s\n"
+msgid "could not remove lock file %s\n"
msgstr ""
-#: lib/libalpm/util.c:350
+#: lib/libalpm/trans.c:483
#, c-format
-msgid "logaction called: %s"
+msgid "No /bin/sh in root dir (%s), aborting scriptlet\n"
msgstr ""
-#: lib/libalpm/util.c:445
-msgid "could not create temp directory"
+#: lib/libalpm/trans.c:494
+msgid "could not create temp directory\n"
msgstr ""
-#: lib/libalpm/util.c:472
+#: lib/libalpm/trans.c:536
#, c-format
-msgid "could not change directory to %s (%s)"
+msgid "could not change directory to %s (%s)\n"
msgstr ""
-#: lib/libalpm/util.c:476
+#: lib/libalpm/trans.c:554
#, c-format
-msgid "executing %s script..."
+msgid "could not fork a new process (%s)\n"
msgstr ""
-#: lib/libalpm/util.c:489
+#: lib/libalpm/trans.c:564
#, c-format
-msgid "could not fork a new process (%s)"
+msgid "could not change the root directory (%s)\n"
msgstr ""
-#: lib/libalpm/util.c:496
+#: lib/libalpm/trans.c:569
#, c-format
-msgid "chrooting in %s"
+msgid "could not change directory to / (%s)\n"
msgstr ""
-#: lib/libalpm/util.c:498
+#: lib/libalpm/trans.c:578
#, c-format
-msgid "could not change the root directory (%s)"
+msgid "call to popen failed (%s)"
msgstr ""
-#: lib/libalpm/util.c:502
+#: lib/libalpm/trans.c:597
#, c-format
-msgid "could not change directory to / (%s)"
+msgid "call to waitpid failed (%s)\n"
msgstr ""
-#: lib/libalpm/util.c:506
-#, c-format
-msgid "executing \"%s\""
+#: lib/libalpm/trans.c:606
+msgid "scriptlet failed to execute correctly\n"
msgstr ""
-#: lib/libalpm/util.c:509
+#: lib/libalpm/trans.c:615
#, c-format
-msgid "call to popen failed (%s)"
+msgid "could not remove tmpdir %s\n"
msgstr ""
-#: lib/libalpm/util.c:541
+#: lib/libalpm/util.c:204
#, c-format
-msgid "call to waitpid failed (%s)"
+msgid "failed to make path '%s' : %s\n"
msgstr ""
-#: lib/libalpm/util.c:550
+#: lib/libalpm/util.c:389
#, c-format
-msgid "could not remove tmpdir %s"
+msgid "could not open %s: %s\n"
msgstr ""
-#: lib/libalpm/util.c:568
+#: lib/libalpm/util.c:573
#, c-format
-msgid "cannot read disk space information from %s: %s"
+msgid "no %s cache exists, creating...\n"
msgstr ""
-#: lib/libalpm/util.c:609
-#, c-format
-msgid "check_freespace: total pkg size: %lld, disk space: %lld"
+#: lib/libalpm/util.c:593
+msgid "couldn't create package cache, using /tmp instead\n"
msgstr ""
-#: lib/libalpm/versioncmp.c:279
+#: lib/libalpm/util.c:643
#, c-format
-msgid "depcmp: %s-%s %s %s-%s => %s"
+msgid "md5: %s can't be opened\n"
msgstr ""
-#: lib/libalpm/versioncmp.c:284
+#: lib/libalpm/util.c:645
#, c-format
-msgid "depcmp: %s-%s %s %s => %s"
+msgid "md5: %s can't be read\n"
msgstr ""
diff --git a/lib/libalpm/po/pl_PL.po b/lib/libalpm/po/pl_PL.po
index 0790a611..01e0fa07 100644
--- a/lib/libalpm/po/pl_PL.po
+++ b/lib/libalpm/po/pl_PL.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.0.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-09-16 16:55-0500\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
"PO-Revision-Date: 2007-04-12 04:23+0200\n"
"Last-Translator: Mateusz Jędrasik <m.jedrasik@gmail.com>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -18,1507 +18,728 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
-#: lib/libalpm/add.c:77
-#, c-format
-msgid "loading target '%s'"
-msgstr "Å‚adowanie celu '%s'"
-
-#: lib/libalpm/add.c:122
-#, c-format
-msgid "replacing older version %s-%s by %s in target list"
+#: lib/libalpm/add.c:88
+#, fuzzy, c-format
+msgid "replacing older version %s-%s by %s in target list\n"
msgstr "zastępowanie starszej wersji %s-%s na %s z listy celów"
-#: lib/libalpm/add.c:131
-#, c-format
-msgid "newer version %s-%s is in the target list -- skipping"
+#: lib/libalpm/add.c:97
+#, fuzzy, c-format
+msgid "newer version %s-%s is in the target list -- skipping\n"
msgstr "nowsza wersja %s-%s znajduje się w liście celów -- pomijam"
-#: lib/libalpm/add.c:138
-#, c-format
-msgid "reading '%s' metadata"
-msgstr "czytanie metadane '%s'"
-
-#: lib/libalpm/add.c:191 lib/libalpm/remove.c:111
-msgid "looking for unsatisfied dependencies"
-msgstr "szukanie nieusatysfakcjonowanych zależności"
+#: lib/libalpm/add.c:168
+msgid "conflicting packages were found in the target list\n"
+msgstr ""
-#: lib/libalpm/add.c:203 lib/libalpm/sync.c:483
-msgid "looking for conflicts"
-msgstr "szukanie konfliktów"
+#: lib/libalpm/add.c:169
+msgid "you cannot install two conflicting packages at the same time\n"
+msgstr ""
-#: lib/libalpm/add.c:208
-msgid "replacing packages with -A and -U is not supported yet"
+#: lib/libalpm/add.c:172
+#, fuzzy
+msgid "replacing packages with -A and -U is not supported yet\n"
msgstr "zastępowanie pakietów z -A i -U nie jest jeszcze wspierane"
-#: lib/libalpm/add.c:209
-#, c-format
-msgid "please remove '%s' first, using -Rd"
-msgstr "proszę usunąć pierw '%s', korzystając z -Rd"
-
-#: lib/libalpm/add.c:250 lib/libalpm/remove.c:147
-msgid "sorting by dependencies"
-msgstr "sortowanie według zależności"
-
-#: lib/libalpm/add.c:262
-msgid "cleaning up"
-msgstr "czyszczenie"
-
-#: lib/libalpm/add.c:277
-msgid "looking for file conflicts"
-msgstr "szukanie konfliktów plików"
-
-#: lib/libalpm/add.c:346
-#, c-format
-msgid "upgrading package %s-%s"
-msgstr "aktualizowanie pakietu %s-%s"
-
-#: lib/libalpm/add.c:370
-#, c-format
-msgid "adding package %s-%s"
-msgstr "dodawanie pakietu %s-%s"
-
-#: lib/libalpm/add.c:383
-#, c-format
-msgid "removing old package first (%s-%s)"
-msgstr "usuwanie wpierw starego pakietu (%s-%s)"
+#: lib/libalpm/add.c:173
+msgid "you can replace packages manually using -Rd and -U\n"
+msgstr ""
-#: lib/libalpm/add.c:411
+#: lib/libalpm/add.c:365
#, c-format
-msgid "adding %s to the NoUpgrade array temporarily"
-msgstr "dodawanie %s tymczasowo do tablicy NoUpgrade"
-
-#: lib/libalpm/add.c:429
-msgid "extracting files"
-msgstr "rozpakowywanie plików"
-
-#: lib/libalpm/add.c:444 lib/libalpm/util.c:465
-msgid "could not get current working directory"
-msgstr "nie można znaleźć obecnego katalogu"
+msgid ""
+"directory permissions differ on %s\n"
+"filesystem: %o package: %o\n"
+msgstr ""
-#: lib/libalpm/add.c:500 lib/libalpm/add.c:501
+#: lib/libalpm/add.c:392
#, c-format
-msgid "%s is in NoExtract, skipping extraction"
-msgstr "%s znajduje siÄ™ w NoExtract, pomijanie rozpakowywania"
+msgid "extract: symlink %s does not point to dir\n"
+msgstr ""
-#: lib/libalpm/add.c:508
+#: lib/libalpm/add.c:399
#, c-format
-msgid "%s is in trans->skip_add, skipping extraction"
-msgstr "%s znajduje siÄ™ w trans->skip_add, pomijanie rozpakowywania"
+msgid "extract: not overwriting dir with file %s\n"
+msgstr ""
-#: lib/libalpm/add.c:554 lib/libalpm/add.c:555 lib/libalpm/add.c:706
-#, c-format
-msgid "could not extract %s (%s)"
+#: lib/libalpm/add.c:454 lib/libalpm/add.c:598 lib/libalpm/util.c:422
+#, fuzzy, c-format
+msgid "could not extract %s (%s)\n"
msgstr "nie udało się rozpakować %s (%s)"
-#: lib/libalpm/add.c:598
-#, c-format
-msgid "checking md5 hashes for %s"
-msgstr "sprawdzanie sum md5 dla %s"
-
-#: lib/libalpm/add.c:600
-#, c-format
-msgid "checking sha1 hashes for %s"
-msgstr "sprawdzanie sum sha1 dla %s"
-
-#: lib/libalpm/add.c:602
-#, c-format
-msgid "current: %s"
-msgstr "bieżące: %s"
-
-#: lib/libalpm/add.c:603
-#, c-format
-msgid "new: %s"
-msgstr "nowe: %s"
-
-#: lib/libalpm/add.c:604
-#, c-format
-msgid "original: %s"
-msgstr "oryginalne: %s"
-
-#: lib/libalpm/add.c:616
-#, c-format
-msgid "could not rename %s (%s)"
+#: lib/libalpm/add.c:505
+#, fuzzy, c-format
+msgid "could not rename %s (%s)\n"
msgstr "nie udało się zmienić nazwy %s (%s)"
-#: lib/libalpm/add.c:617
-#, c-format
-msgid "error: could not rename %s (%s)"
-msgstr "błąd: nie udało się zmienić nazwy %s (%s)"
-
-#: lib/libalpm/add.c:623 lib/libalpm/add.c:642
-#, c-format
-msgid "could not copy tempfile to %s (%s)"
+#: lib/libalpm/add.c:512 lib/libalpm/add.c:532 lib/libalpm/trans.c:508
+#, fuzzy, c-format
+msgid "could not copy tempfile to %s (%s)\n"
msgstr "nie udało się skopiować pliku tymczasowego do %s (%s)"
-#: lib/libalpm/add.c:624
-#, c-format
-msgid "error: could not copy tempfile to %s (%s)"
-msgstr "błąd: nie udało się skopiować pliku tymczasowego do %s (%s)"
-
-#: lib/libalpm/add.c:628 lib/libalpm/remove.c:247
-#, c-format
-msgid "%s saved as %s"
+#: lib/libalpm/add.c:517 lib/libalpm/remove.c:234
+#, fuzzy, c-format
+msgid "%s saved as %s\n"
msgstr "%s zachowane jako %s"
-#: lib/libalpm/add.c:629
-#, c-format
-msgid "warning: %s saved as %s"
-msgstr "uwaga: %s zachowane jako %s"
-
-#: lib/libalpm/add.c:639
-#, c-format
-msgid "action: installing new file: %s"
-msgstr "czynność: instalowanie nowego pliku: %s"
-
-#: lib/libalpm/add.c:649 lib/libalpm/add.c:655 lib/libalpm/add.c:660
-msgid "action: leaving existing file in place"
-msgstr "czynność: zostawianie obecnych plików na miejscu"
-
-#: lib/libalpm/add.c:663
-msgid "action: keeping current file and installing new one with .pacnew ending"
-msgstr ""
-"czynność: zachowywanie obecnego pliku i instalowanie nowego z końcówką ."
-"pacnew"
-
-#: lib/libalpm/add.c:666
-#, c-format
-msgid "could not install %s as %s: %s"
+#: lib/libalpm/add.c:556
+#, fuzzy, c-format
+msgid "could not install %s as %s: %s\n"
msgstr "nie udało się zainstalować %s jako %s: %s"
-#: lib/libalpm/add.c:667
-#, c-format
-msgid "error: could not install %s as %s: %s"
-msgstr "błąd: nie udało się zainstalować %s jako %s: %s"
-
-#: lib/libalpm/add.c:669
-#, c-format
-msgid "%s installed as %s"
+#: lib/libalpm/add.c:559
+#, fuzzy, c-format
+msgid "%s installed as %s\n"
msgstr "%s zainstalowano jako %s"
-#: lib/libalpm/add.c:670
-#, c-format
-msgid "warning: %s installed as %s"
-msgstr "uwaga: %s zainstalowano jako %s"
-
-#: lib/libalpm/add.c:684
-#, c-format
-msgid "%s is in NoUpgrade -- skipping"
-msgstr "%s znajduje siÄ™ w NoUpgrade -- pomijanie"
-
-#: lib/libalpm/add.c:685
-#, c-format
-msgid "extracting %s as %s.pacnew"
+#: lib/libalpm/add.c:576
+#, fuzzy, c-format
+msgid "extracting %s as %s.pacnew\n"
msgstr "rozpakowywanie %s jako %s.pacnew"
-#: lib/libalpm/add.c:686
-#, c-format
-msgid "warning: extracting %s as %s.pacnew"
-msgstr "uwaga: rozpakowywanie %s jako %s.pacnew"
-
-#: lib/libalpm/add.c:689
-#, c-format
-msgid "extracting %s"
-msgstr "rozpakowywanie %s"
-
-#: lib/libalpm/add.c:707
-#, c-format
-msgid "error: could not extract %s (%s)"
-msgstr "błąd: nie udało się rozpakować %s (%s)"
-
-#: lib/libalpm/add.c:719
-#, c-format
-msgid "appending backup entry for %s"
-msgstr "dodawanie pozycji kopii zapasowej dla %s"
+#: lib/libalpm/add.c:711 lib/libalpm/trans.c:529
+#, fuzzy
+msgid "could not get current working directory\n"
+msgstr "nie można znaleźć obecnego katalogu"
-#: lib/libalpm/add.c:751 lib/libalpm/add.c:753
-#, c-format
-msgid "errors occurred while %s %s"
+#: lib/libalpm/add.c:765
+#, fuzzy, c-format
+msgid "problem occurred while upgrading %s\n"
msgstr "wystąpiły błędy podczas %s %s"
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "upgrading"
-msgstr "aktualizowanie"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "installing"
-msgstr "instalowanie"
-
-#: lib/libalpm/add.c:771
-#, c-format
-msgid "provision '%s' has been removed from package %s (%s => %s)"
-msgstr "zasób '%s' został usunięty z pakietu %s (%s => %s)"
-
-#: lib/libalpm/add.c:783
-#, c-format
-msgid "updating '%s' due to provision change (%s)"
-msgstr "aktualizowanie '%s' z powodu zmiany zasobu (%s)"
-
-#: lib/libalpm/add.c:787 lib/libalpm/add.c:788
-#, c-format
-msgid "could not update provision '%s' from '%s'"
-msgstr "nie udało się zaktualizować zasobu '%s' z '%s'"
-
-#: lib/libalpm/add.c:801 lib/libalpm/remove.c:336
-msgid "updating database"
-msgstr "aktualizowanie bazy danych"
-
-#: lib/libalpm/add.c:802
-#, c-format
-msgid "adding database entry '%s'"
-msgstr "dodawanie pozycji bazy danych '%s'"
+#: lib/libalpm/add.c:770
+#, fuzzy, c-format
+msgid "problem occurred while installing %s\n"
+msgstr "wystąpiły błędy podczas %s %s"
-#: lib/libalpm/add.c:805 lib/libalpm/add.c:807
-#, c-format
-msgid "could not update database entry %s-%s"
+#: lib/libalpm/add.c:785
+#, fuzzy, c-format
+msgid "could not update database entry %s-%s\n"
msgstr "nie udało się zaktualizować pozycji bazy danych %s-%s"
-#: lib/libalpm/add.c:813
-#, c-format
-msgid "could not add entry '%s' in cache"
+#: lib/libalpm/add.c:793
+#, fuzzy, c-format
+msgid "could not add entry '%s' in cache\n"
msgstr "nie udało się dodać pozycji '%s' w pliku podręcznym"
-#: lib/libalpm/add.c:843 lib/libalpm/remove.c:363 lib/libalpm/sync.c:1055
-#, c-format
-msgid "running \"ldconfig -r %s\""
-msgstr "uruchamianie \"ldconfig -r %s\""
-
-#: lib/libalpm/alpm.c:116
-#, c-format
-msgid "removing DB %s, %d remaining..."
-msgstr "usuwanie BD %s, pozostało %d..."
-
-#: lib/libalpm/alpm.c:181
-#, c-format
-msgid "unregistering database '%s'"
-msgstr "odrejestrowywanie bazy danych '%s'"
-
-#: lib/libalpm/alpm.c:186
-#, c-format
-msgid "closing database '%s'"
-msgstr "zamykanie bazy danych '%s'"
-
-#: lib/libalpm/alpm.c:232
-#, c-format
-msgid ""
-"adding new server to database '%s': protocol '%s', server '%s', path '%s'"
-msgstr ""
-"dodawanie nowego serwera do bazy danych '%s': protokół '%s', serwer '%s', "
-"ścieżka '%s'"
-
-#: lib/libalpm/alpm.c:236
-#, c-format
-msgid "serverlist flushed for '%s'"
-msgstr "lista serwerów spuszczona(?) dla '%s'"
-
-#: lib/libalpm/alpm.c:279
-#, c-format
-msgid "failed to get lastupdate time for %s (no big deal)"
-msgstr ""
-"nie udało się otrzymać czasu ostatniej aktualizacji dla %s (nic wielkiego)"
-
-#: lib/libalpm/alpm.c:298
-#, c-format
-msgid "failed to sync db: %s [%d]"
-msgstr "nie udało się zsynchronizować bd: %s [%d]"
-
-#: lib/libalpm/alpm.c:302
-#, c-format
-msgid "sync: new mtime for %s: %s"
-msgstr "sync: nowy mtime dla %s: %s"
-
-#: lib/libalpm/alpm.c:308
-#, c-format
-msgid "flushing database %s%s"
-msgstr "spuszczanie(?) bazy danych %s%s"
-
-#: lib/libalpm/alpm.c:312
-#, c-format
-msgid "could not remove database entry %s%s"
-msgstr "nie udało się usunąć wpisu %s%s z bazy danych"
-
-#: lib/libalpm/alpm.c:481
-#, c-format
-msgid "could not get sha1sum for package %s-%s"
-msgstr "nie udało się otrzymać sumy sha1 dla pakietu %s-%s"
-
-#: lib/libalpm/alpm.c:487
-#, c-format
-msgid "sha1sums for package %s-%s match"
-msgstr "sumy kontrolne sha1 zgadzajÄ… siÄ™ dla pakietu %s-%s"
-
-#: lib/libalpm/alpm.c:490
-#, c-format
-msgid "sha1sums do not match for package %s-%s"
-msgstr "sumy kontrolne sha1 dla pakietu %s-%s nie zgadzajÄ… siÄ™"
-
-#: lib/libalpm/alpm.c:525
-#, c-format
-msgid "could not get md5sum for package %s-%s"
-msgstr "nie udało się otrzymać sumy md5 dla pakietu %s-%s"
-
-#: lib/libalpm/alpm.c:531
-#, c-format
-msgid "md5sums for package %s-%s match"
-msgstr "sumy kontrolne md5 zgadzajÄ… siÄ™ dla pakietu %s-%s"
-
-#: lib/libalpm/alpm.c:534
-#, c-format
-msgid "md5sums do not match for package %s-%s"
-msgstr "sumy kontrolne md5 dla pakietu %s-%s nie zgadzajÄ… siÄ™"
-
-#: lib/libalpm/alpm.c:783
-#, c-format
-msgid "could not remove lock file %s"
-msgstr "nie udało się usunąć pliku blokującego %s"
-
-#: lib/libalpm/alpm.c:784
-#, c-format
-msgid "warning: could not remove lock file %s"
-msgstr "uwaga: nie udało się usunąć pliku blokującego %s"
-
-#: lib/libalpm/alpm.c:920
-#, c-format
-msgid "config: new section '%s'"
-msgstr "konfiguracja: nowa sekcja '%s'"
-
-#: lib/libalpm/alpm.c:951
-msgid "config: nopassiveftp"
-msgstr "konfiguracja: nopassiveftp"
-
-#: lib/libalpm/alpm.c:954
-msgid "config: usesyslog"
-msgstr "konfiguracja: usesyslog"
-
-#: lib/libalpm/alpm.c:957
-msgid "config: chomp"
-msgstr "konfiguracja: chomp"
-
-#: lib/libalpm/alpm.c:960
-msgid "config: usecolor"
-msgstr "konfiguracja: usecolor"
-
-#: lib/libalpm/alpm.c:969
-#, c-format
-msgid "config: including %s"
-msgstr "konfiguracja: zawieranie %s"
-
-#: lib/libalpm/alpm.c:979 lib/libalpm/alpm.c:984
-#, c-format
-msgid "config: noupgrade: %s"
-msgstr "konfiguracja: noupgrade: %s"
-
-#: lib/libalpm/alpm.c:992 lib/libalpm/alpm.c:997
-#, c-format
-msgid "config: noextract: %s"
-msgstr "konfiguracja: noextract: %s"
-
-#: lib/libalpm/alpm.c:1005 lib/libalpm/alpm.c:1010
-#, c-format
-msgid "config: ignorepkg: %s"
-msgstr "konfiguracja: ignorepkg: %s"
-
-#: lib/libalpm/alpm.c:1018 lib/libalpm/alpm.c:1023
-#, c-format
-msgid "config: holdpkg: %s"
-msgstr "konfiguracja: holdpkg: %s"
-
-#: lib/libalpm/alpm.c:1030
-#, c-format
-msgid "config: dbpath: %s"
-msgstr "konfiguracja: dbpath: %s"
-
-#: lib/libalpm/alpm.c:1037
-#, c-format
-msgid "config: cachedir: %s"
-msgstr "konfiguracja: cachedir: %s"
-
-#: lib/libalpm/alpm.c:1044
-#, c-format
-msgid "config: rootdir: %s"
-msgstr "konfiguracja: rootdir: %s"
-
-#: lib/libalpm/alpm.c:1047
-#, c-format
-msgid "config: logfile: %s"
-msgstr "konfiguracja: logfile: %s"
-
-#: lib/libalpm/alpm.c:1050
-#, c-format
-msgid "config: xfercommand: %s"
-msgstr "konfiguracja: xfercommand: %s"
-
-#: lib/libalpm/alpm.c:1055
-#, c-format
-msgid "config: upgradedelay: %d"
-msgstr "konfiguracja: upgradedelay: %d"
-
-#: lib/libalpm/alpm.c:1093 lib/libalpm/sync.c:107
-msgid "checking for package replacements"
-msgstr "sprawdzanie potencjalnych pakietów zastępczych"
-
-#: lib/libalpm/alpm.c:1104 lib/libalpm/sync.c:123
-#, c-format
-msgid "checking replacement '%s' for package '%s'"
-msgstr "sprawdzanie zastępcy '%s' dla pakietu '%s'"
-
-#: lib/libalpm/alpm.c:1107 lib/libalpm/sync.c:125
-#, c-format
-msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)"
-msgstr "%s-%s: ignorowanie aktualizowania pakietu (do zastÄ…pienia przez %s-%s)"
-
-#: lib/libalpm/alpm.c:1137 lib/libalpm/sync.c:160
-#, c-format
-msgid "%s-%s elected for upgrade (to be replaced by %s-%s)"
-msgstr "%s-%s wybrany do zaktualizowania (do zastÄ…pienia przez %s-%s)"
-
-#: lib/libalpm/alpm.c:1159 lib/libalpm/sync.c:194
-#, c-format
-msgid "'%s' not found in sync db -- skipping"
-msgstr "'%s' nie odnaleziony w bd sync -- pomijanie"
-
-#: lib/libalpm/alpm.c:1173 lib/libalpm/sync.c:208 lib/libalpm/sync.c:509
-#, c-format
-msgid "'%s' is already elected for removal -- skipping"
-msgstr "'%s' jest już wybrany do usunięcia -- pomijanie"
-
-#: lib/libalpm/alpm.c:1179
-#, c-format
-msgid "%s elected for upgrade (%s => %s)"
-msgstr "%s wybrany do zaktualizowania (%s => %s)"
-
-#: lib/libalpm/be_files.c:61
-#, c-format
-msgid "unpacking database '%s'"
-msgstr "rozpakowywanie bazy danych '%s'"
-
-#: lib/libalpm/be_files.c:78
-#, c-format
-msgid "opening database from path '%s'"
-msgstr "otwieranie bazy danych ze ścieżki '%s'"
-
-#: lib/libalpm/be_files.c:182
-#, c-format
-msgid "db scan could not find package: %s"
-msgstr "skan bd nie odnalazł pakietu: %s"
-
-#: lib/libalpm/be_files.c:186
-#, c-format
-msgid "invalid name for database entry '%s'"
+#: lib/libalpm/be_files.c:223
+#, fuzzy, c-format
+msgid "invalid name for database entry '%s'\n"
msgstr "nieprawidłowa nazwa dla wpisu bazy danych '%s'"
-#: lib/libalpm/be_files.c:221
-msgid "invalid package entry provided to _alpm_db_read, skipping"
-msgstr "dostarczono nieprawidłowy wpis pakietu do _alpm_db_read, pomijanie"
-
-#: lib/libalpm/be_files.c:226
-#, c-format
-msgid ""
-"request to read database info for a file-based package '%s', skipping..."
-msgstr ""
-"żądanie odczytania informacji bazy danych dla pakietu '%s' bazowanego na "
-"pliku, pomijanie..."
-
-#: lib/libalpm/be_files.c:239
-#, c-format
-msgid "loading package data for %s : level=%d"
+#: lib/libalpm/be_files.c:275
+#, fuzzy, c-format
+msgid "loading package data for %s : level=%d\n"
msgstr "Å‚adowanie danych pakietu dla %s : poziom=%d"
-#: lib/libalpm/be_files.c:247
-#, c-format
-msgid "cannot find '%s-%s' in db '%s'"
-msgstr "nie udało się odnaleźć '%s-%s' w bd '%s'"
-
-#: lib/libalpm/be_files.c:255 lib/libalpm/be_files.c:401
-#: lib/libalpm/be_files.c:424 lib/libalpm/be_files.c:515
-#: lib/libalpm/be_files.c:605 lib/libalpm/be_files.c:632
-#: lib/libalpm/package.c:208
-#, c-format
-msgid "could not open file %s: %s"
+#: lib/libalpm/be_files.c:292 lib/libalpm/be_files.c:429
+#: lib/libalpm/be_files.c:452 lib/libalpm/be_files.c:563
+#: lib/libalpm/be_files.c:641 lib/libalpm/be_files.c:669
+#: lib/libalpm/package.c:787
+#, fuzzy, c-format
+msgid "could not open file %s: %s\n"
msgstr "nie udało się otworzyć pliku %s: %s"
-#: lib/libalpm/be_files.c:512
-#, c-format
-msgid "writing %s-%s DESC information back to db"
-msgstr "zapisywanie informacji DESC dla %s-%s spowrotem do bd"
-
-#: lib/libalpm/be_files.c:602
-#, c-format
-msgid "writing %s-%s FILES information back to db"
-msgstr "zapisywanie informacji FILES dla %s-%s spowrotem do bd"
-
-#: lib/libalpm/be_files.c:629
-#, c-format
-msgid "writing %s-%s DEPENDS information back to db"
-msgstr "zapisywanie informacji DEPENDS dla %s-%s spowrotem do bd"
-
-#: lib/libalpm/cache.c:59
-#, c-format
-msgid "loading package cache for repository '%s'"
-msgstr "ładowanie pamięci podręcznej pakietów dla repozytorium '%s'"
-
-#: lib/libalpm/cache.c:64
-#, c-format
-msgid "adding '%s' to package cache for db '%s'"
+#: lib/libalpm/cache.c:62
+#, fuzzy, c-format
+msgid "adding '%s' to package cache for db '%s'\n"
msgstr "dodawanie '%s' do pamięci podręcznej pakietów dla bd '%s'"
-#: lib/libalpm/cache.c:85
-#, c-format
-msgid "freeing package cache for repository '%s'"
-msgstr "uwalnianie pamięci podręcznej pakietów dla repozytorium '%s'"
-
-#: lib/libalpm/cache.c:109
-#, c-format
-msgid "error: pkgcache is NULL for db '%s'"
-msgstr "błąd: pkgcache jest równy NULL dla bd '%s'"
-
-#: lib/libalpm/cache.c:129
-#, c-format
-msgid "adding entry '%s' in '%s' cache"
-msgstr "dodawanie wpisu '%s' pamięci podręcznej '%s'"
-
-#: lib/libalpm/cache.c:149
-#, c-format
-msgid "removing entry '%s' from '%s' cache"
-msgstr "usuwanie wpisu '%s' z pamięci podręcznej '%s'"
-
-#: lib/libalpm/cache.c:156
-#, c-format
-msgid "cannot remove entry '%s' from '%s' cache: not found"
-msgstr ""
-"nie udało się usunąć wpisu '%s' z pamięci podręcznej '%s': nie znaleziono"
-
-#: lib/libalpm/cache.c:178
-#, c-format
-msgid "error: failed to get '%s' from NULL pkgcache"
-msgstr "błąd: nie udało się otrzymać '%s' z NULL pkgcache"
-
-#: lib/libalpm/cache.c:201
-#, c-format
-msgid "loading group cache for repository '%s'"
-msgstr "ładowanie pamięci podręcznej grup z repozytorium '%s'"
-
-#: lib/libalpm/conflict.c:69
-#, c-format
-msgid " found conflict '%s' : package '%s'"
-msgstr " znaleziono konflikt '%s' : pakiet '%s'"
-
-#: lib/libalpm/conflict.c:78
-#, c-format
-msgid " found conflict '%s' : package '%s' provides '%s'"
-msgstr " znaleziono konflikt '%s' : pakiet '%s' dostarcza '%s'"
-
-#: lib/libalpm/conflict.c:101 lib/libalpm/conflict.c:143
-#, c-format
-msgid "package '%s' conflicts with itself - packaging error"
-msgstr "pakiet '%s' konfliktuje ze sobą - błąd pakowania"
-
-#: lib/libalpm/conflict.c:107
-#, c-format
-msgid "checkconflicts: target '%s' vs db"
-msgstr "checkconflicts: cel '%s' vs bd"
-
-#: lib/libalpm/conflict.c:149
-#, c-format
-msgid "checkconflicts: target '%s' vs all targets"
-msgstr "checkconflicts: cel '%s' vs wszystkie cele"
-
-#: lib/libalpm/conflict.c:181
-#, c-format
-msgid "checkconflicts: db vs target '%s'"
-msgstr "checkconflicts: bd vs cel '%s'"
-
-#: lib/libalpm/conflict.c:201
-#, c-format
-msgid "target '%s' is also in target list, using NEW conflicts"
-msgstr "cel '%s' jest także w liście celów, używanie NOWYCH konfliktów"
-
-#: lib/libalpm/conflict.c:257
-#, c-format
-msgid "\tCONFLICTS:: %s conflicts with %s"
-msgstr "\tCONFLICTS:: %s konfliktuje z %s"
-
-#: lib/libalpm/conflict.c:349 lib/libalpm/deps.c:60 lib/libalpm/deps.c:438
-#: lib/libalpm/deps.c:634 lib/libalpm/deps.c:674 lib/libalpm/group.c:45
-#: lib/libalpm/handle.c:51 lib/libalpm/package.c:82 lib/libalpm/sync.c:67
-#: lib/libalpm/sync.c:614 lib/libalpm/sync.c:630 lib/libalpm/sync.c:727
-#: lib/libalpm/trans.c:55 lib/libalpm/util.c:614 lib/libalpm/util.c:621
-#, c-format
-msgid "malloc failure: could not allocate %d bytes"
-msgstr "błąd malloc: nie udało się zaalokować %d bajtów"
-
-#: lib/libalpm/db.c:64 lib/libalpm/db.c:71
-#, c-format
-msgid "malloc failed: could not allocate %d bytes"
-msgstr "błąd malloc: nie udało się zaalokować %d bajtów"
+#: lib/libalpm/db.c:285
+#, fuzzy, c-format
+msgid "could not remove database entry %s%s\n"
+msgstr "nie udało się usunąć wpisu %s%s z bazy danych"
-#: lib/libalpm/db.c:167
-msgid "attempt to re-register the 'local' DB"
+#: lib/libalpm/db.c:553
+#, fuzzy
+msgid "attempt to re-register the 'local' DB\n"
msgstr "próba ponownej rejestracji 'lokalnej' BD"
-#: lib/libalpm/db.c:175
-#, c-format
-msgid "attempt to re-register the '%s' database, using existing"
-msgstr "próba ponownej rejestracji bazy danych '%s', używając obecnej"
-
-#: lib/libalpm/db.c:181
-#, c-format
-msgid "registering database '%s'"
-msgstr "rejestrowanie bazy danych '%s'"
-
-#: lib/libalpm/db.c:186
-#, c-format
-msgid "database directory '%s' does not exist, creating it"
-msgstr "katalog bazy danych '%s' nie istnieje, utwarzanie"
-
-#: lib/libalpm/db.c:197
-#, c-format
-msgid "opening database '%s'"
-msgstr "otwieranie bazy danych '%s'"
-
-#: lib/libalpm/deps.c:131
-msgid "started sorting dependencies"
-msgstr "rozpoczynanie sortowania zależności"
-
-#: lib/libalpm/deps.c:136
-msgid "possible dependency cycle detected"
-msgstr "odkryto potencjalny cykl zależności"
-
-#: lib/libalpm/deps.c:183
-msgid "sorting dependencies finished"
-msgstr "sortowanie zależności ukończone"
-
-#: lib/libalpm/deps.c:225 lib/libalpm/deps.c:310
-msgid "null package found in package list"
-msgstr "zerowy pakiet odnaleziony w liście pakietów"
-
-#: lib/libalpm/deps.c:230
-#, c-format
-msgid "cannot find package installed '%s'"
-msgstr "nie udało się odnaleźć pakietu który zainstalował '%s'"
+#: lib/libalpm/db.c:562 lib/libalpm/db.c:613
+#, fuzzy
+msgid "database path is undefined\n"
+msgstr "baza danych nie została zainicjowana"
-#: lib/libalpm/deps.c:261
-#, c-format
-msgid "checkdeps: dependency '%s' has moved from '%s' to '%s'"
-msgstr "checkdeps: zależność '%s' została przesunięta z '%s' do '%s'"
+#: lib/libalpm/deps.c:173
+#, fuzzy
+msgid "dependency cycle detected:\n"
+msgstr "wykryto cykl zależności: %s"
-#: lib/libalpm/deps.c:280
+#: lib/libalpm/deps.c:175
#, c-format
-msgid "checkdeps: dependency '%s' satisfied by installed package '%s'"
+msgid "%s will be removed after its %s dependency\n"
msgstr ""
-"checkdeps: zależność '%s' satysfakcjonowana przez zainstalowany pakiet '%s'"
-
-#: lib/libalpm/deps.c:289
-#, c-format
-msgid "checkdeps: updated '%s' won't satisfy a dependency of '%s'"
-msgstr "checkdeps: zaktualizowany '%s' nie satysfakcjonuje zależności '%s'"
-#: lib/libalpm/deps.c:359
+#: lib/libalpm/deps.c:177
#, c-format
-msgid "missing dependency '%s' for package '%s'"
-msgstr "brakująca zależność '%s' dla pakietu '%s'"
-
-#: lib/libalpm/deps.c:409
-#, c-format
-msgid "checkdeps: found %s as required by %s"
-msgstr "checkdeps: znaleziono %s wymagane przez %s"
-
-#: lib/libalpm/deps.c:485
-#, c-format
-msgid "excluding %s -- explicitly installed"
-msgstr "wykluczanie %s -- zainstalowany eksplicytnie"
-
-#: lib/libalpm/deps.c:532
-#, c-format
-msgid "cannot find package \"%s\" or anything that provides it!"
-msgstr "nie udało się odnaleźć pakietu \"%s\" ani niczego co go dostarcza!"
-
-#: lib/libalpm/deps.c:540 lib/libalpm/deps.c:551
-#, c-format
-msgid "adding '%s' to the targets"
-msgstr "dodawanie '%s' do celów"
-
-#: lib/libalpm/deps.c:583
-msgid "started resolving dependencies"
-msgstr "rozpoczynanie rozwiązywania zależności"
-
-#: lib/libalpm/deps.c:601
-#, c-format
-msgid "%s provides dependency %s -- skipping"
-msgstr "%s dostarcza zależność %s -- pomijanie"
-
-#: lib/libalpm/deps.c:630
-#, c-format
-msgid ""
-"cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+msgid "%s will be installed before its %s dependency\n"
msgstr ""
-"nie udało się rozwiązać zależności dla \"%s\" (\"%s\" nie znajduje się w "
-"zbiorze pakietów)"
-
-#: lib/libalpm/deps.c:647
-#, c-format
-msgid "dependency %s is already in the target list -- skipping"
-msgstr "zależność %s jest już w liście celów -- pomijanie"
-#: lib/libalpm/deps.c:667
-#, c-format
-msgid "pulling dependency %s (needed by %s)"
-msgstr "wciąganie zależności %s (wymagane przez %s)"
-
-#: lib/libalpm/deps.c:671
-#, c-format
-msgid "cannot resolve dependencies for \"%s\""
+#: lib/libalpm/deps.c:573
+#, fuzzy, c-format
+msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "nie udało się rozwiązać zależności dla \"%s\""
-#: lib/libalpm/deps.c:687
-#, c-format
-msgid "dependency cycle detected: %s"
-msgstr "wykryto cykl zależności: %s"
-
-#: lib/libalpm/deps.c:691
-msgid "finished resolving dependencies"
-msgstr "zakończono rozwiązywanie zależności"
-
-#: lib/libalpm/error.c:40
+#: lib/libalpm/error.c:43
msgid "out of memory!"
msgstr "brak pamięci!"
-#: lib/libalpm/error.c:42
+#: lib/libalpm/error.c:45
msgid "unexpected system error"
msgstr "niespodziewany błąd systemu"
-#: lib/libalpm/error.c:44
+#: lib/libalpm/error.c:47
msgid "insufficient privileges"
msgstr "niewystarczajÄ…ce przywileje"
-#: lib/libalpm/error.c:46
+#: lib/libalpm/error.c:49
msgid "could not find or read file"
msgstr "nie udało się znaleźć bądź odczytać pliku"
-#: lib/libalpm/error.c:48
+#: lib/libalpm/error.c:51
+#, fuzzy
+msgid "could not find or read directory"
+msgstr "nie udało się znaleźć bądź odczytać pliku"
+
+#: lib/libalpm/error.c:53
msgid "wrong or NULL argument passed"
msgstr "błędny bądź ZEROWY argument dany"
-#: lib/libalpm/error.c:51
+#: lib/libalpm/error.c:56
msgid "library not initialized"
msgstr "biblioteka nie została zainicjowana"
-#: lib/libalpm/error.c:53
+#: lib/libalpm/error.c:58
msgid "library already initialized"
msgstr "biblioteka już zainicjowana"
-#: lib/libalpm/error.c:55
+#: lib/libalpm/error.c:60
msgid "unable to lock database"
msgstr "nie udało się zablokować bazy danych"
-#: lib/libalpm/error.c:58
+#: lib/libalpm/error.c:63
msgid "could not open database"
msgstr "nie udało się otworzyć bazy danych"
-#: lib/libalpm/error.c:60
+#: lib/libalpm/error.c:65
msgid "could not create database"
msgstr "nie udało się stworzyć bazy danych"
-#: lib/libalpm/error.c:62
+#: lib/libalpm/error.c:67
msgid "database not initialized"
msgstr "baza danych nie została zainicjowana"
-#: lib/libalpm/error.c:64
+#: lib/libalpm/error.c:69
msgid "database already registered"
msgstr "baza danych już zarejestrowana"
-#: lib/libalpm/error.c:66
+#: lib/libalpm/error.c:71
msgid "could not find database"
msgstr "nie udało się odnaleźc bazy danych"
-#: lib/libalpm/error.c:68
+#: lib/libalpm/error.c:73
msgid "could not update database"
msgstr "nie udało się zaktualizować bazy danych"
-#: lib/libalpm/error.c:70
+#: lib/libalpm/error.c:75
msgid "could not remove database entry"
msgstr "nie udało się usunąć wpisu do bazy danych"
-#: lib/libalpm/error.c:73
+#: lib/libalpm/error.c:78
msgid "invalid url for server"
msgstr "nieprawidłowy url dla serwera"
-#: lib/libalpm/error.c:80
+#: lib/libalpm/error.c:85
msgid "could not set parameter"
msgstr "nie udało się ustawić parametru"
-#: lib/libalpm/error.c:83
+#: lib/libalpm/error.c:88
msgid "transaction already initialized"
msgstr "tranzakcja już zainicjowana"
-#: lib/libalpm/error.c:85 lib/libalpm/error.c:89
+#: lib/libalpm/error.c:90 lib/libalpm/error.c:94
msgid "transaction not initialized"
msgstr "tranzakcja nie została zainicjowana"
-#: lib/libalpm/error.c:87
+#: lib/libalpm/error.c:92
msgid "duplicate target"
msgstr "duplikat celu"
-#: lib/libalpm/error.c:91
+#: lib/libalpm/error.c:96
msgid "transaction not prepared"
msgstr "tranzakcja nie została przygotowana"
-#: lib/libalpm/error.c:93
+#: lib/libalpm/error.c:98
msgid "transaction aborted"
msgstr "tranzakcja zaniechana"
-#: lib/libalpm/error.c:95
+#: lib/libalpm/error.c:100
msgid "operation not compatible with the transaction type"
msgstr "operacja niekompatybilna z typem tranzakcji"
-#: lib/libalpm/error.c:97 lib/libalpm/sync.c:994
+#: lib/libalpm/error.c:102
msgid "could not commit transaction"
msgstr "nie udało się wykonać tranzakcji"
-#: lib/libalpm/error.c:99
+#: lib/libalpm/error.c:104
msgid "could not download all files"
msgstr "nie udało się pobrać wszystkich plików"
-#: lib/libalpm/error.c:102
+#: lib/libalpm/error.c:107
msgid "could not find or read package"
msgstr "nie udało się znaleźć bądź odczytać pakietu"
-#: lib/libalpm/error.c:104
+#: lib/libalpm/error.c:109
msgid "invalid or corrupted package"
-msgstr "nieprawidłowy bądź uszkodzony pakiet"
+msgstr "nieprawidłowy bądź skorumpowany pakiet"
-#: lib/libalpm/error.c:106
+#: lib/libalpm/error.c:111
msgid "cannot open package file"
msgstr "nie udało się otworzyć pliku pakietu"
-#: lib/libalpm/error.c:108
+#: lib/libalpm/error.c:113
msgid "cannot load package data"
msgstr "nie udało się załadować danych pakietu"
-#: lib/libalpm/error.c:110
+#: lib/libalpm/error.c:115
msgid "package already installed"
msgstr "pakiet już zainstalowany"
-#: lib/libalpm/error.c:112
+#: lib/libalpm/error.c:117
msgid "package not installed or lesser version"
msgstr "pakiet nie zainstalowany lub zainstalowany w niższej wersji"
-#: lib/libalpm/error.c:114
+#: lib/libalpm/error.c:119
msgid "cannot remove all files for package"
msgstr "nie udało się usunąć wszystkich plików pakietu"
-#: lib/libalpm/error.c:116
+#: lib/libalpm/error.c:121
msgid "package name is not valid"
msgstr "nieprawidłowa nazwa pakietu"
-#: lib/libalpm/error.c:118
+#: lib/libalpm/error.c:123
msgid "corrupted package"
-msgstr "uszkodzony pakiet"
+msgstr "skorumpowany pakiet"
-#: lib/libalpm/error.c:120
+#: lib/libalpm/error.c:125
msgid "no such repository"
msgstr "nie ma takiego repozytorium"
-#: lib/libalpm/error.c:123
+#: lib/libalpm/error.c:128
+#, fuzzy
+msgid "corrupted delta"
+msgstr "skorumpowany pakiet"
+
+#: lib/libalpm/error.c:130
+msgid "delta patch failed"
+msgstr ""
+
+#: lib/libalpm/error.c:133
msgid "group not found"
msgstr "grupa nie została odnaleziona"
-#: lib/libalpm/error.c:126
+#: lib/libalpm/error.c:136
msgid "could not satisfy dependencies"
msgstr "nie udało się usatysfakcjonować zależności"
-#: lib/libalpm/error.c:128
+#: lib/libalpm/error.c:138
msgid "conflicting dependencies"
msgstr "konfliktujące zależności"
-#: lib/libalpm/error.c:130
+#: lib/libalpm/error.c:140
msgid "conflicting files"
msgstr "konfliktujÄ…ce pliki"
-#: lib/libalpm/error.c:133
+#: lib/libalpm/error.c:143
msgid "user aborted the operation"
msgstr "użytkownik zaniechał operacji"
-#: lib/libalpm/error.c:135
+#: lib/libalpm/error.c:145
msgid "internal error"
msgstr "błąd wewnętrzny"
-#: lib/libalpm/error.c:137
+#: lib/libalpm/error.c:147
msgid "libarchive error"
msgstr "błąd libarchive"
-#: lib/libalpm/error.c:139
-msgid "not enough space on disk"
-msgstr "nie wystarczająca ilość wolnego miejsca na dysku"
-
-#: lib/libalpm/error.c:142
+#: lib/libalpm/error.c:150
msgid "not confirmed"
msgstr "nie potwierdzono"
-#: lib/libalpm/error.c:145
-msgid "bad configuration section name"
-msgstr "zła nazwa sekcji konfiguracji"
-
-#: lib/libalpm/error.c:147
-msgid "'local' is reserved and cannot be used as a repository name"
-msgstr ""
-"'local' jest nazwą zarezerwowaną i nie może zostać użyty jako nazwa "
-"repozytorium"
-
-#: lib/libalpm/error.c:149
-msgid "syntax error in config file"
-msgstr "błąd składni w pliku konfiguracyjnym"
-
-#: lib/libalpm/error.c:151
-msgid "all directives must belong to a section"
-msgstr "wszystkie dyrektywy muszą być własnością sekcji"
-
-#: lib/libalpm/error.c:153
+#: lib/libalpm/error.c:152
msgid "invalid regular expression"
msgstr "nieprawidłowe wyrażenie regularne"
-#: lib/libalpm/error.c:156
+#: lib/libalpm/error.c:155
msgid "connection to remote host failed"
msgstr "połączenie ze zdalnym hostem nieudane"
-#: lib/libalpm/error.c:159
+#: lib/libalpm/error.c:158
msgid "unexpected error"
msgstr "niespodziewany błąd"
-#: lib/libalpm/handle.c:163
-#, c-format
-msgid "cannot canonicalize specified root path '%s'"
-msgstr "nie udało się skanonizować podanej ścieżki docelowej '%s'"
-
-#: lib/libalpm/handle.c:175
-#, c-format
-msgid "option 'root' = %s"
-msgstr "opcja 'root' = %s"
-
-#: lib/libalpm/handle.c:195
-#, c-format
-msgid "option 'dbpath' = %s"
-msgstr "opcja 'dbpath' = %s"
-
-#: lib/libalpm/handle.c:211
-#, c-format
-msgid "option 'cachedir' = %s"
-msgstr "opcja 'cachedir' = %s"
-
-#: lib/libalpm/md5driver.c:56
-#, c-format
-msgid "%s can't be opened\n"
-msgstr "%s nie może być otwarte\n"
-
-#: lib/libalpm/md5driver.c:74
-#, c-format
-msgid "md5(%s) = %s"
-msgstr "md5(%s) = %s"
+#: lib/libalpm/package.c:124
+#, fuzzy, c-format
+msgid "could not get md5sum for package %s-%s\n"
+msgstr "nie udało się otrzymać sumy md5 dla pakietu %s-%s"
-#: lib/libalpm/package.c:147
-#, c-format
-msgid "%s-%s: ignoring package upgrade (%s)"
-msgstr "%s-%s: ignorowanie aktualizacji pakietu (%s)"
+#: lib/libalpm/package.c:133
+#, fuzzy, c-format
+msgid "md5sums do not match for package %s-%s\n"
+msgstr "sumy kontrolne md5 dla pakietu %s-%s nie zgadzajÄ… siÄ™"
-#: lib/libalpm/package.c:158
-#, c-format
-msgid "%s: forcing upgrade to version %s"
+#: lib/libalpm/package.c:737
+#, fuzzy, c-format
+msgid "%s: forcing upgrade to version %s\n"
msgstr "%s: wymuszanie aktualizacji do wersji %s"
-#: lib/libalpm/package.c:163
-#, c-format
-msgid "%s: local (%s) is newer than %s (%s)"
+#: lib/libalpm/package.c:742
+#, fuzzy, c-format
+msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: local (%s) jest nowsze niż %s (%s)"
-#: lib/libalpm/package.c:171
-#, c-format
-msgid "%s-%s: delaying upgrade of package (%s)"
+#: lib/libalpm/package.c:750
+#, fuzzy, c-format
+msgid "%s-%s: delaying upgrade of package (%s)\n"
msgstr "%s-%s: opóźnianie aktualizacji pakietu (%s)"
-#: lib/libalpm/package.c:222 lib/libalpm/package.c:281
-#, c-format
-msgid "%s: syntax error in description file line %d"
-msgstr "%s: błąd składni w pliku opisu linia %d"
-
-#: lib/libalpm/package.c:355
-msgid "could not parse the package description file"
+#: lib/libalpm/package.c:931
+#, fuzzy, c-format
+msgid "could not parse package description file in %s\n"
msgstr "nie udało się przeczytać pliku opisu"
-#: lib/libalpm/package.c:359
-#, c-format
-msgid "missing package name in %s"
+#: lib/libalpm/package.c:936
+#, fuzzy, c-format
+msgid "missing package name in %s\n"
msgstr "brak nazwy pakietu w %s"
-#: lib/libalpm/package.c:363
-#, c-format
-msgid "missing package version in %s"
+#: lib/libalpm/package.c:940
+#, fuzzy, c-format
+msgid "missing package version in %s\n"
msgstr "brak wersji pakietu w %s"
-#: lib/libalpm/package.c:398
-#, c-format
-msgid "could not remove tempfile %s"
+#: lib/libalpm/package.c:970
+#, fuzzy, c-format
+msgid "could not remove tempfile %s\n"
msgstr "nie udało się usunąć pliku tymczasowego %s"
-#: lib/libalpm/package.c:411 lib/libalpm/package.c:418
-#, c-format
-msgid "error while reading package: %s"
+#: lib/libalpm/package.c:985 lib/libalpm/package.c:998
+#, fuzzy, c-format
+msgid "error while reading package %s: %s\n"
msgstr "błąd odczytywania pakietu: %s"
-#: lib/libalpm/package.c:424
-msgid "missing package metadata"
+#: lib/libalpm/package.c:1005
+#, fuzzy, c-format
+msgid "missing package metadata in %s\n"
msgstr "brak metadanych pakietu"
-#: lib/libalpm/package.c:431
-#, c-format
-msgid "missing package filelist in %s, generating one"
+#: lib/libalpm/package.c:1012
+#, fuzzy, c-format
+msgid "missing package filelist in %s, generating one\n"
msgstr "brak listy plików pakietu w %s, generowanie"
-#: lib/libalpm/package.c:570
-#, c-format
-msgid "adding '%s' in requiredby field for '%s'"
-msgstr "dodawanie '%s' w polu requiredby dla '%s'"
-
-#: lib/libalpm/package.c:584
-#, c-format
-msgid "adding '%s' in requiredby field for '%s' (provides: %s)"
-msgstr "dodawanie '%s' w polu requiredby dla '%s' (dostarcza: %s)"
-
-#: lib/libalpm/remove.c:79
-#, c-format
-msgid "could not find %s in database"
-msgstr "nie udało się odnaleźć %s w bazie danych"
-
-#: lib/libalpm/remove.c:93
-#, c-format
-msgid "adding %s in the targets list"
-msgstr "dodawanie %s do listy celów"
-
#: lib/libalpm/remove.c:121
-#, c-format
-msgid "pulling %s in the targets list"
-msgstr "wciąganie %s na listę celów"
-
-#: lib/libalpm/remove.c:124
-#, c-format
-msgid "could not find %s in database -- skipping"
+#, fuzzy, c-format
+msgid "could not find %s in database -- skipping\n"
msgstr "nie udało się odnaleźć %s w bazie danych -- pomijanie"
-#: lib/libalpm/remove.c:142
-msgid "finding removable dependencies"
-msgstr "odnajdywanie usuwalnych zależności"
-
-#: lib/libalpm/remove.c:175
-#, c-format
-msgid "cannot remove file '%s': %s"
+#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:243
+#, fuzzy, c-format
+msgid "cannot remove file '%s': %s\n"
msgstr "nie udało się usunąć pliku '%s': %s"
-#: lib/libalpm/remove.c:213
-#, c-format
-msgid "Skipping removal of '%s' due to NoUpgrade"
-msgstr "Pomijanie usunięcia '%s' ze względu na NoUpgrade"
-
-#: lib/libalpm/remove.c:220
-#, c-format
-msgid "file %s does not exist"
-msgstr "plik %s nie istnieje"
-
-#: lib/libalpm/remove.c:227
-#, c-format
-msgid "keeping directory %s"
-msgstr "zachowywanie katalogu %s"
-
-#: lib/libalpm/remove.c:229
-#, c-format
-msgid "removing directory %s"
-msgstr "usuwanie katalogu %s"
+#: lib/libalpm/remove.c:337
+#, fuzzy, c-format
+msgid "could not remove database entry %s-%s\n"
+msgstr "nie udało się usunąć wpisu %s-%s z bazy danych"
-#: lib/libalpm/remove.c:236
-#, c-format
-msgid "%s is in trans->skip_remove, skipping removal"
-msgstr "%s jest w trans->skip_remove, pomijanie usunięcia"
+#: lib/libalpm/remove.c:342
+#, fuzzy, c-format
+msgid "could not remove entry '%s' from cache\n"
+msgstr "nie udało się usunąć wpisu '%s' z pamięci podręcznej"
-#: lib/libalpm/remove.c:250
+#: lib/libalpm/server.c:56
#, c-format
-msgid "transaction is set to NOSAVE, not backing up '%s'"
+msgid "url '%s' is invalid, ignoring\n"
msgstr ""
-"tranzakcja ustawiona jako NOSAVE, brak tworzenia kopii zapasowej dla '%s'"
-
-#: lib/libalpm/remove.c:254
-#, c-format
-msgid "unlinking %s"
-msgstr "odlinkowywanie %s"
-
-#: lib/libalpm/remove.c:261
-#, c-format
-msgid "cannot remove file %s: %s"
-msgstr "nie udało się usunąć pliku %s: %s"
-#: lib/libalpm/remove.c:294
-#, c-format
-msgid "removing package %s-%s"
-msgstr "usuwanie pakietu %s-%s"
+#: lib/libalpm/server.c:60
+msgid "url scheme not specified, assuming http\n"
+msgstr ""
-#: lib/libalpm/remove.c:309
-#, c-format
-msgid "not removing package '%s', can't remove all files"
+#: lib/libalpm/server.c:241
+msgid "disk"
msgstr ""
-"pakiet '%s' nie zostanie usunięty, nie udało się usunąć wszystkich plików"
-#: lib/libalpm/remove.c:316
-#, c-format
-msgid "removing %d files"
-msgstr "usuwanie %d plików"
+#: lib/libalpm/server.c:245
+#, fuzzy, c-format
+msgid "failed retrieving file '%s' from %s : %s\n"
+msgstr "nie udało się pobrać niektórych plików z %s\n"
-#: lib/libalpm/remove.c:337
-#, c-format
-msgid "removing database entry '%s'"
-msgstr "usuwanie wpisu '%s' z bazy danych"
+#: lib/libalpm/server.c:275
+msgid "cannot resume download, starting over\n"
+msgstr ""
-#: lib/libalpm/remove.c:339
-#, c-format
-msgid "could not remove database entry %s-%s"
-msgstr "nie udało się usunąć wpisu %s-%s z bazy danych"
+#: lib/libalpm/server.c:288
+#, fuzzy, c-format
+msgid "cannot write to file '%s'\n"
+msgstr "nie udało się usunąć pliku '%s': %s"
-#: lib/libalpm/remove.c:344
-#, c-format
-msgid "could not remove entry '%s' from cache"
-msgstr "nie udało się usunąć wpisu '%s' z pamięci podręcznej"
+#: lib/libalpm/server.c:307
+#, fuzzy, c-format
+msgid "error downloading '%s': %s\n"
+msgstr "błąd odczytywania pakietu: %s"
-#: lib/libalpm/sha1.c:397
-#, c-format
-msgid "sha1: %s can't be opened\n"
-msgstr "sha1: %s nie może zostać otwarty\n"
+#: lib/libalpm/server.c:319
+#, fuzzy, c-format
+msgid "error writing to file '%s': %s\n"
+msgstr "nie udało się usunąć pliku '%s': %s"
-#: lib/libalpm/sha1.c:412
-#, c-format
-msgid "sha1(%s) = %s"
-msgstr "sha1(%s) = %s"
+#: lib/libalpm/server.c:387
+#, fuzzy, c-format
+msgid "could not chdir to %s\n"
+msgstr "nie udało się zmienić katalogu na / (%s)"
-#: lib/libalpm/sync.c:183
-msgid "checking for package upgrades"
-msgstr "sprawdzanie potencjalnych uaktualnień pakietów"
+#: lib/libalpm/server.c:394
+msgid "running XferCommand: fork failed!\n"
+msgstr ""
-#: lib/libalpm/sync.c:215
-#, c-format
-msgid "%s-%s elected for upgrade (%s => %s)"
-msgstr "%s-%s wybrany do aktualizacji (%s => %s)"
+#: lib/libalpm/server.c:445
+msgid "URL does not contain a file for download\n"
+msgstr ""
-#: lib/libalpm/sync.c:270
-#, c-format
-msgid "searching for target in repo '%s'"
-msgstr "poszukiwanie celu w repo '%s'"
+#: lib/libalpm/server.c:458
+#, fuzzy, c-format
+msgid "failed to download %s\n"
+msgstr "nie udało się pobrać wszystkich plików"
-#: lib/libalpm/sync.c:278 lib/libalpm/sync.c:301
-#, c-format
-msgid "target '%s' not found -- looking for provisions"
-msgstr "cel '%s' nie został odnaleziony -- szukanie zasobów dostarczających"
+#: lib/libalpm/sync.c:135
+#, fuzzy, c-format
+msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
+msgstr "%s-%s: ignorowanie aktualizowania pakietu (do zastÄ…pienia przez %s-%s)"
-#: lib/libalpm/sync.c:283 lib/libalpm/sync.c:306
-#, c-format
-msgid "found '%s' as a provision for '%s'"
-msgstr "znaleziono '%s' jako zasób dla '%s'"
+#: lib/libalpm/sync.c:250
+#, fuzzy, c-format
+msgid "%s: ignoring package upgrade (%s => %s)\n"
+msgstr "%s-%s: ignorowanie aktualizacji pakietu (%s)"
-#: lib/libalpm/sync.c:290
-#, c-format
-msgid "repository '%s' not found"
+#: lib/libalpm/sync.c:320
+#, fuzzy, c-format
+msgid "repository '%s' not found\n"
msgstr "repozytorium '%s' nie zostało znalezione"
-#: lib/libalpm/sync.c:331
-#, c-format
-msgid "%s-%s is up to date -- skipping"
-msgstr "%s-%s jest w najnowszej wersji -- pomijanie"
-
#: lib/libalpm/sync.c:354
-#, c-format
-msgid "adding target '%s' to the transaction set"
-msgstr "dodawanie celu '%s' do zestawu tranzakcji"
-
-#: lib/libalpm/sync.c:402
-msgid "resolving target's dependencies"
-msgstr "rozwiązywanie zależności celu"
-
-#: lib/libalpm/sync.c:422
-#, c-format
-msgid "adding package %s-%s to the transaction targets"
-msgstr "dodawanie pakietu %s-%s do celów tranzakcji"
-
-#: lib/libalpm/sync.c:463
-msgid "looking for unresolvable dependencies"
-msgstr "szukanie nierozwiązywalnych zależności"
-
-#: lib/libalpm/sync.c:494
-#, c-format
-msgid "package '%s' conflicts with '%s'"
-msgstr "pakiet '%s' konfliktuje z '%s'"
-
-#: lib/libalpm/sync.c:516
-#, c-format
-msgid "'%s' not found in transaction set -- skipping"
-msgstr "'%s' nie znaleziony w zestawie tranzakcji -- pomijanie"
-
-#: lib/libalpm/sync.c:527
-#, c-format
-msgid "package '%s' provides its own conflict"
-msgstr "pakiet '%s' dostarcza swój własny konflikt"
-
-#: lib/libalpm/sync.c:550 lib/libalpm/sync.c:555
-#, c-format
-msgid "'%s' is in the target list -- keeping it"
-msgstr "'%s' jest w liście celów -- zachowywanie"
-
-#: lib/libalpm/sync.c:567 lib/libalpm/sync.c:604
-#, c-format
-msgid "removing '%s' from target list"
-msgstr "usuwanie '%s' z listy celów"
-
-#: lib/libalpm/sync.c:576
-#, c-format
-msgid "resolving package '%s' conflict"
-msgstr "rozwiÄ…zywanie konfliktu pakietu '%s'"
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- skipping\n"
+msgstr "%s-%s jest w najnowszej wersji -- pomijanie"
-#: lib/libalpm/sync.c:599
-#, c-format
-msgid "electing '%s' for removal"
-msgstr "wybieranie '%s' do usunięcia"
+#: lib/libalpm/sync.c:358
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- reinstalling\n"
+msgstr "%s-%s jest w najnowszej wersji -- pomijanie"
-#: lib/libalpm/sync.c:610 lib/libalpm/sync.c:626
-msgid "unresolvable package conflicts detected"
+#: lib/libalpm/sync.c:613 lib/libalpm/sync.c:618
+#, fuzzy
+msgid "unresolvable package conflicts detected\n"
msgstr "odkryto nierozwiązywalne konflikty pakietów"
-#: lib/libalpm/sync.c:678
-msgid "checking dependencies of packages designated for removal"
-msgstr "sprawdzanie zależności pakietów wyznaczonych do usunięcia"
-
-#: lib/libalpm/sync.c:692
-msgid "something has gone horribly wrong"
-msgstr "coś się bardzo nie udało"
-
-#: lib/libalpm/sync.c:712
-#, c-format
-msgid "found '%s' as a provision for '%s' -- conflict aborted"
-msgstr "znaleziono '%s' jako zasób dla '%s' -- konflikt zaniechany"
-
-#: lib/libalpm/sync.c:808
-#, c-format
-msgid "%s is already in the cache\n"
-msgstr "%s jest już w pamięci podręcznej\n"
-
-#: lib/libalpm/sync.c:819
-#, c-format
-msgid "no %s cache exists, creating...\n"
-msgstr "brak pamięci podręcznej dla %s, tworzenie...\n"
-
-#: lib/libalpm/sync.c:820
-#, c-format
-msgid "warning: no %s cache exists, creating..."
-msgstr "uwaga: brak pamięci podręcznej dla %s, tworzenie..."
+#: lib/libalpm/sync.c:628
+#, fuzzy, c-format
+msgid "malloc failure: could not allocate %zd bytes\n"
+msgstr "błąd malloc: nie udało się zaalokować %d bajtów"
#: lib/libalpm/sync.c:825
-msgid "couldn't create package cache, using /tmp instead\n"
-msgstr ""
-"nie udało się stworzenie pamięci podręcznej pakietu, używanie /tmp w zamian\n"
-
-#: lib/libalpm/sync.c:826
-msgid "warning: couldn't create package cache, using /tmp instead"
-msgstr ""
-"uwaga: nie udało się stworzenie pamięci podręcznej pakietu, używanie /tmp w "
-"zamian"
-
-#: lib/libalpm/sync.c:833
#, c-format
-msgid "failed to retrieve some files from %s\n"
-msgstr "nie udało się pobrać niektórych plików z %s\n"
+msgid "command: %s\n"
+msgstr ""
-#: lib/libalpm/sync.c:863 lib/libalpm/sync.c:875
-#, c-format
-msgid "can't get md5 or sha1 checksum for package %s\n"
+#: lib/libalpm/sync.c:888 lib/libalpm/sync.c:896
+#, fuzzy, c-format
+msgid "can't get md5 checksum for file %s\n"
msgstr "nie udało się otrzymać sum kontrolnych md5 lub sha1 dla pakietu %s\n"
-#: lib/libalpm/sync.c:894
-#, c-format
-msgid "archive %s was corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr "archiwum %s było uszkodzone (błąd sumy kontrolnej MD5 lub SHA1)\n"
+#: lib/libalpm/sync.c:910
+#, fuzzy, c-format
+msgid "file %s was corrupted (bad MD5 checksum)\n"
+msgstr "archiwum %s było skorumpowane (błąd sumy kontrolnej MD5 lub SHA1)\n"
-#: lib/libalpm/sync.c:896
+#: lib/libalpm/sync.c:1056
#, c-format
-msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr "archiwum %s jest uszkodzone (błąd sumy kontrolnej MD5 lub SHA1)\n"
+msgid "failed to retrieve some files from %s\n"
+msgstr "nie udało się pobrać niektórych plików z %s\n"
-#: lib/libalpm/sync.c:917
-msgid "could not create removal transaction"
+#: lib/libalpm/sync.c:1137
+#, fuzzy
+msgid "could not create removal transaction\n"
msgstr "nie udało się utworzyć tranzakcji usuwania"
-#: lib/libalpm/sync.c:923
-msgid "could not initialize the removal transaction"
+#: lib/libalpm/sync.c:1143
+#, fuzzy
+msgid "could not initialize the removal transaction\n"
msgstr "nie udało się zainicjować tranzakcji usuwania"
-#: lib/libalpm/sync.c:943
-msgid "removing conflicting and to-be-replaced packages"
-msgstr "usuwanie pakietów konfliktujących i pakietów do zastąpienia"
-
-#: lib/libalpm/sync.c:945
-msgid "could not prepare removal transaction"
+#: lib/libalpm/sync.c:1165
+#, fuzzy
+msgid "could not prepare removal transaction\n"
msgstr "nie udało się przygotować tranzakcji usuwania"
-#: lib/libalpm/sync.c:951
-msgid "could not commit removal transaction"
+#: lib/libalpm/sync.c:1171
+#, fuzzy
+msgid "could not commit removal transaction\n"
msgstr "nie udało się wykonać tranzakcji usuwania"
-#: lib/libalpm/sync.c:958
-msgid "installing packages"
-msgstr "instalowanie pakietów"
-
-#: lib/libalpm/sync.c:961
-msgid "could not create transaction"
+#: lib/libalpm/sync.c:1182
+#, fuzzy
+msgid "could not create transaction\n"
msgstr "nie udało się stworzyć tranzakcji"
-#: lib/libalpm/sync.c:966
-msgid "could not initialize transaction"
+#: lib/libalpm/sync.c:1187
+#, fuzzy
+msgid "could not initialize transaction\n"
msgstr "nie udało się zainicjować tranzakcji"
-#: lib/libalpm/sync.c:989
-msgid "could not prepare transaction"
+#: lib/libalpm/sync.c:1214
+#, fuzzy
+msgid "could not prepare transaction\n"
msgstr "nie udało się przygotować tranzakcji"
-#: lib/libalpm/sync.c:1001
-msgid "updating database for replaced packages' dependencies"
-msgstr "aktualizowanie baz danych dla zależności zastąpionych pakietów"
+#: lib/libalpm/sync.c:1219
+#, fuzzy
+msgid "could not commit transaction\n"
+msgstr "nie udało się wykonać tranzakcji"
-#: lib/libalpm/sync.c:1030
-#, c-format
-msgid "could not update requiredby for database entry %s-%s"
-msgstr "nie udało się zaktualizować requiredby dla wpisu %s-%s w bazie danych"
+#: lib/libalpm/trans.c:214
+#, fuzzy, c-format
+msgid "could not remove lock file %s\n"
+msgstr "nie udało się usunąć pliku blokującego %s"
-#: lib/libalpm/sync.c:1039
+#: lib/libalpm/trans.c:483
#, c-format
-msgid "could not update new database entry %s-%s"
-msgstr "nie udało się zaktualizować nowego wpisu %s-%s w bazie danych"
+msgid "No /bin/sh in root dir (%s), aborting scriptlet\n"
+msgstr ""
-#: lib/libalpm/sync.c:1079
-#, c-format
-msgid "found package '%s-%s' in sync"
-msgstr "znaleziono pakiet '%s-%s' w sync"
+#: lib/libalpm/trans.c:494
+#, fuzzy
+msgid "could not create temp directory\n"
+msgstr "nie udało się stworzyć katalogu tymczasowego"
-#: lib/libalpm/sync.c:1085
-#, c-format
-msgid "package '%s' not found in sync"
-msgstr "pakiet '%s' nie został odnaleziony w sync"
+#: lib/libalpm/trans.c:536
+#, fuzzy, c-format
+msgid "could not change directory to %s (%s)\n"
+msgstr "nie udało się zmienić katalogu na %s (%s)"
-#: lib/libalpm/trans.c:271
-#, c-format
-msgid "updating dependency packages 'requiredby' fields for %s-%s"
-msgstr "aktualizowanie pól 'requiredby' pakietów zależności dla %s-%s"
+#: lib/libalpm/trans.c:554
+#, fuzzy, c-format
+msgid "could not fork a new process (%s)\n"
+msgstr "nie udało się odwidlić nowego procesu (%s)"
-#: lib/libalpm/trans.c:274
-msgid "package has no dependencies, no other packages to update"
-msgstr ""
-"pakiet nie ma żadnych zależności, brak innych pakietów do zaktualizowania"
+#: lib/libalpm/trans.c:564
+#, fuzzy, c-format
+msgid "could not change the root directory (%s)\n"
+msgstr "nie udało się zmienić katalogu głównego (%s)"
-#: lib/libalpm/trans.c:311 lib/libalpm/trans.c:341
-#, c-format
-msgid "updating 'requiredby' field for package '%s'"
-msgstr "aktualizowanie pola 'requiredby' dla pakietu '%s'"
+#: lib/libalpm/trans.c:569
+#, fuzzy, c-format
+msgid "could not change directory to / (%s)\n"
+msgstr "nie udało się zmienić katalogu na / (%s)"
-#: lib/libalpm/trans.c:326 lib/libalpm/trans.c:356
-#, c-format
-msgid "could not update 'requiredby' database entry %s-%s"
+#: lib/libalpm/trans.c:578
+#, fuzzy, c-format
+msgid "call to popen failed (%s)"
+msgstr "zawołanie do waitpid nieudane (%s)"
+
+#: lib/libalpm/trans.c:597
+#, fuzzy, c-format
+msgid "call to waitpid failed (%s)\n"
+msgstr "zawołanie do waitpid nieudane (%s)"
+
+#: lib/libalpm/trans.c:606
+msgid "scriptlet failed to execute correctly\n"
msgstr ""
-"nie udało się zaktualizować wpisu do bazy danych 'requiredby' dla %s-%s"
-#: lib/libalpm/trans.c:333
-#, c-format
-msgid "could not find dependency '%s'"
-msgstr "nie udało się odnaleźć zależności '%s'"
+#: lib/libalpm/trans.c:615
+#, fuzzy, c-format
+msgid "could not remove tmpdir %s\n"
+msgstr "nie udało się usunąć katalogu tymczasowego %s"
-#: lib/libalpm/util.c:142
-#, c-format
-msgid "failed to make path '%s' : %s"
+#: lib/libalpm/util.c:204
+#, fuzzy, c-format
+msgid "failed to make path '%s' : %s\n"
msgstr "nie udało się stworzyć ścieżki '%s' : %s"
-#: lib/libalpm/util.c:280
+#: lib/libalpm/util.c:389
#, c-format
msgid "could not open %s: %s\n"
msgstr "nie udało się otworzyć %s: %s\n"
-#: lib/libalpm/util.c:293
+#: lib/libalpm/util.c:573
#, c-format
-msgid "could not extract %s: %s\n"
-msgstr "nie udało się rozpakować %s: %s\n"
+msgid "no %s cache exists, creating...\n"
+msgstr "brak pamięci podręcznej dla %s, tworzenie...\n"
-#: lib/libalpm/util.c:350
-#, c-format
-msgid "logaction called: %s"
-msgstr "zawołane logaction: %s"
+#: lib/libalpm/util.c:593
+#, fuzzy
+msgid "couldn't create package cache, using /tmp instead\n"
+msgstr ""
+"nie udało się stworzenie pamięci podręcznej pakietu, używanie /tmp w zamian\n"
-#: lib/libalpm/util.c:445
-msgid "could not create temp directory"
-msgstr "nie udało się stworzyć katalogu tymczasowego"
+#: lib/libalpm/util.c:643
+#, fuzzy, c-format
+msgid "md5: %s can't be opened\n"
+msgstr "%s nie może być otwarte\n"
-#: lib/libalpm/util.c:472
-#, c-format
-msgid "could not change directory to %s (%s)"
-msgstr "nie udało się zmienić katalogu na %s (%s)"
+#: lib/libalpm/util.c:645
+#, fuzzy, c-format
+msgid "md5: %s can't be read\n"
+msgstr "%s nie może być otwarte\n"
-#: lib/libalpm/util.c:476
-#, c-format
-msgid "executing %s script..."
-msgstr "wykonywanie skryptu %s..."
+#~ msgid "please remove '%s' first, using -Rd"
+#~ msgstr "proszę usunąć pierw '%s', korzystając z -Rd"
-#: lib/libalpm/util.c:489
-#, c-format
-msgid "could not fork a new process (%s)"
-msgstr "nie udało się odwidlić nowego procesu (%s)"
+#~ msgid "could not extract %s (%s)"
+#~ msgstr "nie udało się rozpakować %s (%s)"
-#: lib/libalpm/util.c:496
-#, c-format
-msgid "chrooting in %s"
-msgstr "chroot'owanie do %s"
+#~ msgid "could not update provision '%s' from '%s'"
+#~ msgstr "nie udało się zaktualizować zasobu '%s' z '%s'"
-#: lib/libalpm/util.c:498
-#, c-format
-msgid "could not change the root directory (%s)"
-msgstr "nie udało się zmienić katalogu głównego (%s)"
+#, fuzzy
+#~ msgid "%s: description file is missing"
+#~ msgstr "%s: błąd składni w pliku opisu linia %d"
-#: lib/libalpm/util.c:502
-#, c-format
-msgid "could not change directory to / (%s)"
-msgstr "nie udało się zmienić katalogu na / (%s)"
+#~ msgid "malloc failed: could not allocate %d bytes"
+#~ msgstr "błąd malloc: nie udało się zaalokować %d bajtów"
-#: lib/libalpm/util.c:506
-#, c-format
-msgid "executing \"%s\""
-msgstr "wykonywanie \"%s\""
+#~ msgid ""
+#~ "cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
+#~ msgstr ""
+#~ "nie udało się rozwiązać zależności dla \"%s\" (\"%s\" nie znajduje się w "
+#~ "zbiorze pakietów)"
-#: lib/libalpm/util.c:509
-#, c-format
-msgid "call to popen failed (%s)"
-msgstr "zawołanie do popen nieudane (%s)"
+#~ msgid "cannot canonicalize specified root path '%s'"
+#~ msgstr "nie udało się skanonizować podanej ścieżki docelowej '%s'"
-#: lib/libalpm/util.c:541
-#, c-format
-msgid "call to waitpid failed (%s)"
-msgstr "zawołanie do waitpid nieudane (%s)"
+#~ msgid "could not get sha1sum for package %s-%s"
+#~ msgstr "nie udało się otrzymać sumy sha1 dla pakietu %s-%s"
-#: lib/libalpm/util.c:550
-#, c-format
-msgid "could not remove tmpdir %s"
-msgstr "nie udało się usunąć katalogu tymczasowego %s"
+#~ msgid "sha1sums do not match for package %s-%s"
+#~ msgstr "sumy kontrolne sha1 dla pakietu %s-%s nie zgadzajÄ… siÄ™"
-#: lib/libalpm/util.c:568
-#, c-format
-msgid "cannot read disk space information from %s: %s"
-msgstr "nie udało się odczytać informacji o ilości danych na dysku z %s: %s"
+#~ msgid "cannot remove file %s: %s"
+#~ msgstr "nie udało się usunąć pliku %s: %s"
-#: lib/libalpm/util.c:609
-#, c-format
-msgid "check_freespace: total pkg size: %lld, disk space: %lld"
-msgstr "check_freespace: pełen rozmiar pakietu: %lld, wolna przestrzeń: %lld"
+#~ msgid "sha1: %s can't be opened\n"
+#~ msgstr "sha1: %s nie może zostać otwarty\n"
-#: lib/libalpm/versioncmp.c:279
-#, c-format
-msgid "depcmp: %s-%s %s %s-%s => %s"
-msgstr "depcmp: %s-%s %s %s-%s => %s"
+#~ msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
+#~ msgstr "archiwum %s jest skorumpowane (błąd sumy kontrolnej MD5 lub SHA1)\n"
-#: lib/libalpm/versioncmp.c:284
-#, c-format
-msgid "depcmp: %s-%s %s %s => %s"
-msgstr "depcmp: %s-%s %s %s => %s"
+#~ msgid "could not update requiredby for database entry %s-%s"
+#~ msgstr ""
+#~ "nie udało się zaktualizować requiredby dla wpisu %s-%s w bazie danych"
+
+#~ msgid "could not update new database entry %s-%s"
+#~ msgstr "nie udało się zaktualizować nowego wpisu %s-%s w bazie danych"
+
+#~ msgid "could not update 'requiredby' database entry %s-%s"
+#~ msgstr ""
+#~ "nie udało się zaktualizować wpisu do bazy danych 'requiredby' dla %s-%s"
diff --git a/lib/libalpm/po/pt_BR.po b/lib/libalpm/po/pt_BR.po
index 5d734e38..35c7c880 100644
--- a/lib/libalpm/po/pt_BR.po
+++ b/lib/libalpm/po/pt_BR.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pt_BR\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-09-16 16:55-0500\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
"PO-Revision-Date: 2007-03-07 01:18-0300\n"
"Last-Translator: Douglas Soares de Andrade <dsandrade@gmail.com>\n"
"Language-Team: Português do Brasil <pt@li.org>\n"
@@ -22,1495 +22,683 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: KBabel 1.11.4\n"
-#: lib/libalpm/add.c:77
-#, c-format
-msgid "loading target '%s'"
-msgstr "carregando pacotes '%s'"
-
-#: lib/libalpm/add.c:122
-#, c-format
-msgid "replacing older version %s-%s by %s in target list"
+#: lib/libalpm/add.c:88
+#, fuzzy, c-format
+msgid "replacing older version %s-%s by %s in target list\n"
msgstr "substituindo a versão antiga %s-%s por '%s' na lista de pacotes"
-#: lib/libalpm/add.c:131
-#, c-format
-msgid "newer version %s-%s is in the target list -- skipping"
+#: lib/libalpm/add.c:97
+#, fuzzy, c-format
+msgid "newer version %s-%s is in the target list -- skipping\n"
msgstr "versão atualizada %s-%s está na lista de pacotes -- pulando"
-#: lib/libalpm/add.c:138
-#, c-format
-msgid "reading '%s' metadata"
-msgstr "lendo os metadados de '%s'"
-
-#: lib/libalpm/add.c:191 lib/libalpm/remove.c:111
-msgid "looking for unsatisfied dependencies"
-msgstr "procurando por dependências não satisfeitas"
+#: lib/libalpm/add.c:168
+msgid "conflicting packages were found in the target list\n"
+msgstr ""
-#: lib/libalpm/add.c:203 lib/libalpm/sync.c:483
-msgid "looking for conflicts"
-msgstr "procurando por conflitos"
+#: lib/libalpm/add.c:169
+msgid "you cannot install two conflicting packages at the same time\n"
+msgstr ""
-#: lib/libalpm/add.c:208
-msgid "replacing packages with -A and -U is not supported yet"
+#: lib/libalpm/add.c:172
+#, fuzzy
+msgid "replacing packages with -A and -U is not supported yet\n"
msgstr "substituir pacotes com -A e -U ainda não é suportado"
-#: lib/libalpm/add.c:209
-#, c-format
-msgid "please remove '%s' first, using -Rd"
-msgstr "por favor, remova '%s' primeiro usando -Rd"
-
-#: lib/libalpm/add.c:250 lib/libalpm/remove.c:147
-msgid "sorting by dependencies"
-msgstr "ordenando por dependências"
-
-#: lib/libalpm/add.c:262
-msgid "cleaning up"
-msgstr "finalizando"
-
-#: lib/libalpm/add.c:277
-msgid "looking for file conflicts"
-msgstr "procurando por conflitos de arquivos"
-
-#: lib/libalpm/add.c:346
-#, c-format
-msgid "upgrading package %s-%s"
-msgstr "atualizando pacote %s-%s"
-
-#: lib/libalpm/add.c:370
-#, c-format
-msgid "adding package %s-%s"
-msgstr "adicionando pacote %s-%s"
-
-#: lib/libalpm/add.c:383
-#, c-format
-msgid "removing old package first (%s-%s)"
-msgstr "removendo pacotes antigos primeiro (%s-%s)"
+#: lib/libalpm/add.c:173
+msgid "you can replace packages manually using -Rd and -U\n"
+msgstr ""
-#: lib/libalpm/add.c:411
+#: lib/libalpm/add.c:365
#, c-format
-msgid "adding %s to the NoUpgrade array temporarily"
-msgstr "adicionando %s para NoUpgrade temporariamente"
-
-#: lib/libalpm/add.c:429
-msgid "extracting files"
-msgstr "extraindo arquivos"
-
-#: lib/libalpm/add.c:444 lib/libalpm/util.c:465
-msgid "could not get current working directory"
-msgstr "não foi possível obter o diretório de trabalho atual"
+msgid ""
+"directory permissions differ on %s\n"
+"filesystem: %o package: %o\n"
+msgstr ""
-#: lib/libalpm/add.c:500 lib/libalpm/add.c:501
+#: lib/libalpm/add.c:392
#, c-format
-msgid "%s is in NoExtract, skipping extraction"
-msgstr "%s está incluso em NoExtract -- não descompactando"
+msgid "extract: symlink %s does not point to dir\n"
+msgstr ""
-#: lib/libalpm/add.c:508
+#: lib/libalpm/add.c:399
#, c-format
-msgid "%s is in trans->skip_add, skipping extraction"
-msgstr "o pacote %s está incluso em trans->skip_add, não descompactando"
+msgid "extract: not overwriting dir with file %s\n"
+msgstr ""
-#: lib/libalpm/add.c:554 lib/libalpm/add.c:555 lib/libalpm/add.c:706
-#, c-format
-msgid "could not extract %s (%s)"
+#: lib/libalpm/add.c:454 lib/libalpm/add.c:598 lib/libalpm/util.c:422
+#, fuzzy, c-format
+msgid "could not extract %s (%s)\n"
msgstr "não foi possível extrair %s (%s)"
-#: lib/libalpm/add.c:598
-#, c-format
-msgid "checking md5 hashes for %s"
-msgstr "verificando hashes md5 para %s"
-
-#: lib/libalpm/add.c:600
-#, c-format
-msgid "checking sha1 hashes for %s"
-msgstr "verificando hashes sha1 para %s"
-
-#: lib/libalpm/add.c:602
-#, c-format
-msgid "current: %s"
-msgstr "atual: %s"
-
-#: lib/libalpm/add.c:603
-#, c-format
-msgid "new: %s"
-msgstr "novo: %s"
-
-#: lib/libalpm/add.c:604
-#, c-format
-msgid "original: %s"
-msgstr "original: %s"
-
-#: lib/libalpm/add.c:616
-#, c-format
-msgid "could not rename %s (%s)"
+#: lib/libalpm/add.c:505
+#, fuzzy, c-format
+msgid "could not rename %s (%s)\n"
msgstr "não foi possível renomear %s (%s)"
-#: lib/libalpm/add.c:617
-#, c-format
-msgid "error: could not rename %s (%s)"
-msgstr "erro: não foi possível renomear %s (%s)"
-
-#: lib/libalpm/add.c:623 lib/libalpm/add.c:642
-#, c-format
-msgid "could not copy tempfile to %s (%s)"
+#: lib/libalpm/add.c:512 lib/libalpm/add.c:532 lib/libalpm/trans.c:508
+#, fuzzy, c-format
+msgid "could not copy tempfile to %s (%s)\n"
msgstr "não foi possível copiar arquivo temporário para %s (%s)"
-#: lib/libalpm/add.c:624
-#, c-format
-msgid "error: could not copy tempfile to %s (%s)"
-msgstr "erro: não foi possível copiar arquivo temporário para %s (%s)"
-
-#: lib/libalpm/add.c:628 lib/libalpm/remove.c:247
-#, c-format
-msgid "%s saved as %s"
+#: lib/libalpm/add.c:517 lib/libalpm/remove.c:234
+#, fuzzy, c-format
+msgid "%s saved as %s\n"
msgstr "%s salvo como %s"
-#: lib/libalpm/add.c:629
-#, c-format
-msgid "warning: %s saved as %s"
-msgstr "aviso: %s salvo como %s"
-
-#: lib/libalpm/add.c:639
-#, c-format
-msgid "action: installing new file: %s"
-msgstr "ação: instalando novo arquivo: %s"
-
-#: lib/libalpm/add.c:649 lib/libalpm/add.c:655 lib/libalpm/add.c:660
-msgid "action: leaving existing file in place"
-msgstr "ação: preservando o arquivo existente"
-
-#: lib/libalpm/add.c:663
-msgid "action: keeping current file and installing new one with .pacnew ending"
-msgstr ""
-"ação: preservando o arquivo existente e instalando o novo com um final ."
-"pacnew"
-
-#: lib/libalpm/add.c:666
-#, c-format
-msgid "could not install %s as %s: %s"
+#: lib/libalpm/add.c:556
+#, fuzzy, c-format
+msgid "could not install %s as %s: %s\n"
msgstr "não foi possível instalar %s como %s: %s"
-#: lib/libalpm/add.c:667
-#, c-format
-msgid "error: could not install %s as %s: %s"
-msgstr "erro: não foi possível instalar %s como %s: %s"
-
-#: lib/libalpm/add.c:669
-#, c-format
-msgid "%s installed as %s"
+#: lib/libalpm/add.c:559
+#, fuzzy, c-format
+msgid "%s installed as %s\n"
msgstr "%s instalado como %s"
-#: lib/libalpm/add.c:670
-#, c-format
-msgid "warning: %s installed as %s"
-msgstr "atenção: %s instalado como %s"
-
-#: lib/libalpm/add.c:684
-#, c-format
-msgid "%s is in NoUpgrade -- skipping"
-msgstr "%s está como NoUpgrade -- pulando"
-
-#: lib/libalpm/add.c:685
-#, c-format
-msgid "extracting %s as %s.pacnew"
+#: lib/libalpm/add.c:576
+#, fuzzy, c-format
+msgid "extracting %s as %s.pacnew\n"
msgstr "extraindo %s como %s.pacnew"
-#: lib/libalpm/add.c:686
-#, c-format
-msgid "warning: extracting %s as %s.pacnew"
-msgstr "aviso: extraindo %s como %s.pacnew"
-
-#: lib/libalpm/add.c:689
-#, c-format
-msgid "extracting %s"
-msgstr "extraindo %s"
-
-#: lib/libalpm/add.c:707
-#, c-format
-msgid "error: could not extract %s (%s)"
-msgstr "erro: não foi possível descompactar %s (%s)"
-
-#: lib/libalpm/add.c:719
-#, c-format
-msgid "appending backup entry for %s"
-msgstr "adicionando entrada de backup para %s"
+#: lib/libalpm/add.c:711 lib/libalpm/trans.c:529
+#, fuzzy
+msgid "could not get current working directory\n"
+msgstr "não foi possível obter o diretório de trabalho atual"
-#: lib/libalpm/add.c:751 lib/libalpm/add.c:753
-#, c-format
-msgid "errors occurred while %s %s"
+#: lib/libalpm/add.c:765
+#, fuzzy, c-format
+msgid "problem occurred while upgrading %s\n"
msgstr "erros ocorreram durante %s %s"
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "upgrading"
-msgstr "atualizando"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "installing"
-msgstr "instalando"
-
-#: lib/libalpm/add.c:771
-#, c-format
-msgid "provision '%s' has been removed from package %s (%s => %s)"
-msgstr "a provisão '%s' foi removida do pacote %s (%s => %s)"
-
-#: lib/libalpm/add.c:783
-#, c-format
-msgid "updating '%s' due to provision change (%s)"
-msgstr "atualizando '%s' devido a uma mudança de provisão (%s)"
-
-#: lib/libalpm/add.c:787 lib/libalpm/add.c:788
-#, c-format
-msgid "could not update provision '%s' from '%s'"
-msgstr "não foi possível atualizar a provisão '%s' para '%s'"
-
-#: lib/libalpm/add.c:801 lib/libalpm/remove.c:336
-msgid "updating database"
-msgstr "atualizando base de dados"
-
-#: lib/libalpm/add.c:802
-#, c-format
-msgid "adding database entry '%s'"
-msgstr "adicionando a entrada de base de dados '%s'"
+#: lib/libalpm/add.c:770
+#, fuzzy, c-format
+msgid "problem occurred while installing %s\n"
+msgstr "erros ocorreram durante %s %s"
-#: lib/libalpm/add.c:805 lib/libalpm/add.c:807
-#, c-format
-msgid "could not update database entry %s-%s"
+#: lib/libalpm/add.c:785
+#, fuzzy, c-format
+msgid "could not update database entry %s-%s\n"
msgstr "não foi possível atualizar a entrada na base de dados %s-%s"
-#: lib/libalpm/add.c:813
-#, c-format
-msgid "could not add entry '%s' in cache"
-msgstr "não foi possível adicionar a entrada '%s' ao cache"
-
-#: lib/libalpm/add.c:843 lib/libalpm/remove.c:363 lib/libalpm/sync.c:1055
-#, c-format
-msgid "running \"ldconfig -r %s\""
-msgstr "executando \"ldconfig -r %s\""
-
-#: lib/libalpm/alpm.c:116
-#, c-format
-msgid "removing DB %s, %d remaining..."
-msgstr "removendo DB %s, %d continua existindo..."
-
-#: lib/libalpm/alpm.c:181
-#, c-format
-msgid "unregistering database '%s'"
-msgstr "desregistrando a base de dados '%s'"
-
-#: lib/libalpm/alpm.c:186
-#, c-format
-msgid "closing database '%s'"
-msgstr "fechando a base de dados '%s'"
-
-#: lib/libalpm/alpm.c:232
-#, c-format
-msgid ""
-"adding new server to database '%s': protocol '%s', server '%s', path '%s'"
-msgstr ""
-"adicionando novo servidor à base de dados '%s': protocolo '%s', servidor '%"
-"s', caminho '%s'"
-
-#: lib/libalpm/alpm.c:236
-#, c-format
-msgid "serverlist flushed for '%s'"
-msgstr "lista de servidores nivelada para '%s'"
-
-#: lib/libalpm/alpm.c:279
-#, c-format
-msgid "failed to get lastupdate time for %s (no big deal)"
-msgstr ""
-"falha para conseguir o horário da última atualização de %s (no big deal)"
-
-#: lib/libalpm/alpm.c:298
-#, c-format
-msgid "failed to sync db: %s [%d]"
-msgstr "falha ao sincronizar base de dados: %s [%d]"
-
-#: lib/libalpm/alpm.c:302
-#, c-format
-msgid "sync: new mtime for %s: %s"
-msgstr "sincronizar: novo mtime para %s: %s"
-
-#: lib/libalpm/alpm.c:308
-#, c-format
-msgid "flushing database %s%s"
-msgstr "nivelando a base de dados %s%s"
-
-#: lib/libalpm/alpm.c:312
-#, c-format
-msgid "could not remove database entry %s%s"
-msgstr "não foi possível remover a entrada da base de dados %s%s"
-
-#: lib/libalpm/alpm.c:481
-#, c-format
-msgid "could not get sha1sum for package %s-%s"
-msgstr "não foi possível conseguir a soma sha1 para o pacote %s-%s"
-
-#: lib/libalpm/alpm.c:487
-#, c-format
-msgid "sha1sums for package %s-%s match"
-msgstr "somas sha1 para o pacote %s - %s coincidem"
-
-#: lib/libalpm/alpm.c:490
-#, c-format
-msgid "sha1sums do not match for package %s-%s"
-msgstr "somas sha1 não coincidem para o pacote %s-%s"
-
-#: lib/libalpm/alpm.c:525
-#, c-format
-msgid "could not get md5sum for package %s-%s"
-msgstr "não foi possível conseguir a soma md5 para o pacote %s-%s"
-
-#: lib/libalpm/alpm.c:531
-#, c-format
-msgid "md5sums for package %s-%s match"
-msgstr "somas md5 para o pacote %s - %s coincidem"
-
-#: lib/libalpm/alpm.c:534
-#, c-format
-msgid "md5sums do not match for package %s-%s"
-msgstr "somas md5 não coincidem para o pacote %s-%s"
-
-#: lib/libalpm/alpm.c:783
-#, c-format
-msgid "could not remove lock file %s"
-msgstr "não foi possível remover o arquivo de lock %s"
-
-#: lib/libalpm/alpm.c:784
-#, c-format
-msgid "warning: could not remove lock file %s"
-msgstr "aviso: não foi possível remover o arquivo de lock %s"
-
-#: lib/libalpm/alpm.c:920
-#, c-format
-msgid "config: new section '%s'"
-msgstr "configuração: nova seção '%s'"
-
-#: lib/libalpm/alpm.c:951
-msgid "config: nopassiveftp"
-msgstr "configuração: nopassiveftp"
-
-#: lib/libalpm/alpm.c:954
-msgid "config: usesyslog"
-msgstr "configuração: usesyslog"
-
-#: lib/libalpm/alpm.c:957
-msgid "config: chomp"
-msgstr "configuração: chomp"
-
-#: lib/libalpm/alpm.c:960
-msgid "config: usecolor"
-msgstr "configuração: usecolor"
-
-#: lib/libalpm/alpm.c:969
-#, c-format
-msgid "config: including %s"
-msgstr "configuração: including %s"
-
-#: lib/libalpm/alpm.c:979 lib/libalpm/alpm.c:984
-#, c-format
-msgid "config: noupgrade: %s"
-msgstr "configuração: noupgrade: %s"
-
-#: lib/libalpm/alpm.c:992 lib/libalpm/alpm.c:997
-#, c-format
-msgid "config: noextract: %s"
-msgstr "configuração: noextract: %s"
-
-#: lib/libalpm/alpm.c:1005 lib/libalpm/alpm.c:1010
-#, c-format
-msgid "config: ignorepkg: %s"
-msgstr "configuração: ignorepkg: %s"
-
-#: lib/libalpm/alpm.c:1018 lib/libalpm/alpm.c:1023
-#, c-format
-msgid "config: holdpkg: %s"
-msgstr "configuração: holdpkg: %s"
-
-#: lib/libalpm/alpm.c:1030
-#, c-format
-msgid "config: dbpath: %s"
-msgstr "configuração: dbpath: %s"
-
-#: lib/libalpm/alpm.c:1037
-#, c-format
-msgid "config: cachedir: %s"
-msgstr "configuração: cachedir: %s"
-
-#: lib/libalpm/alpm.c:1044
+#: lib/libalpm/add.c:793
#, fuzzy, c-format
-msgid "config: rootdir: %s"
-msgstr "configuração: cachedir: %s"
-
-#: lib/libalpm/alpm.c:1047
-#, c-format
-msgid "config: logfile: %s"
-msgstr "configuração: logfile: %s"
-
-#: lib/libalpm/alpm.c:1050
-#, c-format
-msgid "config: xfercommand: %s"
-msgstr "configuração: xfercommand: %s"
-
-#: lib/libalpm/alpm.c:1055
-#, c-format
-msgid "config: upgradedelay: %d"
-msgstr "configuração: upgradedelay: %d"
-
-#: lib/libalpm/alpm.c:1093 lib/libalpm/sync.c:107
-msgid "checking for package replacements"
-msgstr "verificando por substitutos do pacote"
-
-#: lib/libalpm/alpm.c:1104 lib/libalpm/sync.c:123
-#, c-format
-msgid "checking replacement '%s' for package '%s'"
-msgstr "verificando substituto '%s' para o pacote '%s'"
-
-#: lib/libalpm/alpm.c:1107 lib/libalpm/sync.c:125
-#, c-format
-msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1137 lib/libalpm/sync.c:160
-#, c-format
-msgid "%s-%s elected for upgrade (to be replaced by %s-%s)"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1159 lib/libalpm/sync.c:194
-#, c-format
-msgid "'%s' not found in sync db -- skipping"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1173 lib/libalpm/sync.c:208 lib/libalpm/sync.c:509
-#, c-format
-msgid "'%s' is already elected for removal -- skipping"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1179
-#, c-format
-msgid "%s elected for upgrade (%s => %s)"
-msgstr ""
-
-#: lib/libalpm/be_files.c:61
-#, c-format
-msgid "unpacking database '%s'"
-msgstr "descompactando base de dados '%s'"
-
-#: lib/libalpm/be_files.c:78
-#, c-format
-msgid "opening database from path '%s'"
-msgstr "abrindo base de dados '%s'"
+msgid "could not add entry '%s' in cache\n"
+msgstr "não foi possível adicionar a entrada '%s' ao cache"
-#: lib/libalpm/be_files.c:182
+#: lib/libalpm/be_files.c:223
#, fuzzy, c-format
-msgid "db scan could not find package: %s"
-msgstr "não foi possível encontrar a base de dados"
-
-#: lib/libalpm/be_files.c:186
-#, c-format
-msgid "invalid name for database entry '%s'"
+msgid "invalid name for database entry '%s'\n"
msgstr "nome inválido para a entrada na base de dados '%s'"
-#: lib/libalpm/be_files.c:221
-msgid "invalid package entry provided to _alpm_db_read, skipping"
-msgstr ""
-
-#: lib/libalpm/be_files.c:226
-#, c-format
-msgid ""
-"request to read database info for a file-based package '%s', skipping..."
-msgstr ""
-
-#: lib/libalpm/be_files.c:239
-#, c-format
-msgid "loading package data for %s : level=%d"
-msgstr ""
-
-#: lib/libalpm/be_files.c:247
+#: lib/libalpm/be_files.c:275
#, c-format
-msgid "cannot find '%s-%s' in db '%s'"
+msgid "loading package data for %s : level=%d\n"
msgstr ""
-#: lib/libalpm/be_files.c:255 lib/libalpm/be_files.c:401
-#: lib/libalpm/be_files.c:424 lib/libalpm/be_files.c:515
-#: lib/libalpm/be_files.c:605 lib/libalpm/be_files.c:632
-#: lib/libalpm/package.c:208
-#, c-format
-msgid "could not open file %s: %s"
+#: lib/libalpm/be_files.c:292 lib/libalpm/be_files.c:429
+#: lib/libalpm/be_files.c:452 lib/libalpm/be_files.c:563
+#: lib/libalpm/be_files.c:641 lib/libalpm/be_files.c:669
+#: lib/libalpm/package.c:787
+#, fuzzy, c-format
+msgid "could not open file %s: %s\n"
msgstr "não foi possível abrir o arquivo %s: %s"
-#: lib/libalpm/be_files.c:512
-#, c-format
-msgid "writing %s-%s DESC information back to db"
-msgstr ""
-
-#: lib/libalpm/be_files.c:602
-#, c-format
-msgid "writing %s-%s FILES information back to db"
-msgstr ""
-
-#: lib/libalpm/be_files.c:629
-#, c-format
-msgid "writing %s-%s DEPENDS information back to db"
-msgstr ""
-
-#: lib/libalpm/cache.c:59
-#, c-format
-msgid "loading package cache for repository '%s'"
-msgstr ""
-
-#: lib/libalpm/cache.c:64
-#, c-format
-msgid "adding '%s' to package cache for db '%s'"
-msgstr ""
-
-#: lib/libalpm/cache.c:85
+#: lib/libalpm/cache.c:62
#, c-format
-msgid "freeing package cache for repository '%s'"
+msgid "adding '%s' to package cache for db '%s'\n"
msgstr ""
-#: lib/libalpm/cache.c:109
-#, c-format
-msgid "error: pkgcache is NULL for db '%s'"
-msgstr ""
-
-#: lib/libalpm/cache.c:129
-#, c-format
-msgid "adding entry '%s' in '%s' cache"
-msgstr ""
-
-#: lib/libalpm/cache.c:149
-#, c-format
-msgid "removing entry '%s' from '%s' cache"
-msgstr ""
-
-#: lib/libalpm/cache.c:156
-#, c-format
-msgid "cannot remove entry '%s' from '%s' cache: not found"
-msgstr ""
-
-#: lib/libalpm/cache.c:178
-#, c-format
-msgid "error: failed to get '%s' from NULL pkgcache"
-msgstr ""
-
-#: lib/libalpm/cache.c:201
-#, c-format
-msgid "loading group cache for repository '%s'"
-msgstr ""
-
-#: lib/libalpm/conflict.c:69
-#, c-format
-msgid " found conflict '%s' : package '%s'"
-msgstr ""
-
-#: lib/libalpm/conflict.c:78
-#, c-format
-msgid " found conflict '%s' : package '%s' provides '%s'"
-msgstr ""
-
-#: lib/libalpm/conflict.c:101 lib/libalpm/conflict.c:143
+#: lib/libalpm/db.c:285
#, fuzzy, c-format
-msgid "package '%s' conflicts with itself - packaging error"
-msgstr "pacote '%s' conflita com '%s'"
-
-#: lib/libalpm/conflict.c:107
-#, c-format
-msgid "checkconflicts: target '%s' vs db"
-msgstr ""
-
-#: lib/libalpm/conflict.c:149
-#, c-format
-msgid "checkconflicts: target '%s' vs all targets"
-msgstr ""
-
-#: lib/libalpm/conflict.c:181
-#, c-format
-msgid "checkconflicts: db vs target '%s'"
-msgstr ""
-
-#: lib/libalpm/conflict.c:201
-#, c-format
-msgid "target '%s' is also in target list, using NEW conflicts"
-msgstr ""
-
-#: lib/libalpm/conflict.c:257
-#, c-format
-msgid "\tCONFLICTS:: %s conflicts with %s"
-msgstr ""
-
-#: lib/libalpm/conflict.c:349 lib/libalpm/deps.c:60 lib/libalpm/deps.c:438
-#: lib/libalpm/deps.c:634 lib/libalpm/deps.c:674 lib/libalpm/group.c:45
-#: lib/libalpm/handle.c:51 lib/libalpm/package.c:82 lib/libalpm/sync.c:67
-#: lib/libalpm/sync.c:614 lib/libalpm/sync.c:630 lib/libalpm/sync.c:727
-#: lib/libalpm/trans.c:55 lib/libalpm/util.c:614 lib/libalpm/util.c:621
-#, c-format
-msgid "malloc failure: could not allocate %d bytes"
-msgstr ""
-
-#: lib/libalpm/db.c:64 lib/libalpm/db.c:71
-#, c-format
-msgid "malloc failed: could not allocate %d bytes"
-msgstr ""
-
-#: lib/libalpm/db.c:167
-msgid "attempt to re-register the 'local' DB"
-msgstr ""
-
-#: lib/libalpm/db.c:175
-#, c-format
-msgid "attempt to re-register the '%s' database, using existing"
-msgstr ""
-
-#: lib/libalpm/db.c:181
-#, c-format
-msgid "registering database '%s'"
-msgstr ""
-
-#: lib/libalpm/db.c:186
-#, c-format
-msgid "database directory '%s' does not exist, creating it"
-msgstr ""
-
-#: lib/libalpm/db.c:197
-#, c-format
-msgid "opening database '%s'"
-msgstr "abrindo base de dados '%s'"
-
-#: lib/libalpm/deps.c:131
-msgid "started sorting dependencies"
-msgstr ""
-
-#: lib/libalpm/deps.c:136
-msgid "possible dependency cycle detected"
-msgstr ""
-
-#: lib/libalpm/deps.c:183
-msgid "sorting dependencies finished"
-msgstr ""
-
-#: lib/libalpm/deps.c:225 lib/libalpm/deps.c:310
-msgid "null package found in package list"
-msgstr ""
-
-#: lib/libalpm/deps.c:230
-#, c-format
-msgid "cannot find package installed '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:261
-#, c-format
-msgid "checkdeps: dependency '%s' has moved from '%s' to '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:280
-#, c-format
-msgid "checkdeps: dependency '%s' satisfied by installed package '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:289
-#, c-format
-msgid "checkdeps: updated '%s' won't satisfy a dependency of '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:359
-#, c-format
-msgid "missing dependency '%s' for package '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:409
-#, c-format
-msgid "checkdeps: found %s as required by %s"
-msgstr ""
-
-#: lib/libalpm/deps.c:485
-#, c-format
-msgid "excluding %s -- explicitly installed"
-msgstr ""
-
-#: lib/libalpm/deps.c:532
-#, c-format
-msgid "cannot find package \"%s\" or anything that provides it!"
-msgstr ""
-
-#: lib/libalpm/deps.c:540 lib/libalpm/deps.c:551
-#, c-format
-msgid "adding '%s' to the targets"
-msgstr ""
-
-#: lib/libalpm/deps.c:583
-msgid "started resolving dependencies"
-msgstr ""
+msgid "could not remove database entry %s%s\n"
+msgstr "não foi possível remover a entrada da base de dados %s%s"
-#: lib/libalpm/deps.c:601
-#, c-format
-msgid "%s provides dependency %s -- skipping"
+#: lib/libalpm/db.c:553
+msgid "attempt to re-register the 'local' DB\n"
msgstr ""
-#: lib/libalpm/deps.c:630
-#, c-format
-msgid ""
-"cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
-msgstr ""
+#: lib/libalpm/db.c:562 lib/libalpm/db.c:613
+#, fuzzy
+msgid "database path is undefined\n"
+msgstr "base de dados não inicializada"
-#: lib/libalpm/deps.c:647
-#, c-format
-msgid "dependency %s is already in the target list -- skipping"
+#: lib/libalpm/deps.c:173
+msgid "dependency cycle detected:\n"
msgstr ""
-#: lib/libalpm/deps.c:667
+#: lib/libalpm/deps.c:175
#, c-format
-msgid "pulling dependency %s (needed by %s)"
+msgid "%s will be removed after its %s dependency\n"
msgstr ""
-#: lib/libalpm/deps.c:671
+#: lib/libalpm/deps.c:177
#, c-format
-msgid "cannot resolve dependencies for \"%s\""
+msgid "%s will be installed before its %s dependency\n"
msgstr ""
-#: lib/libalpm/deps.c:687
+#: lib/libalpm/deps.c:573
#, c-format
-msgid "dependency cycle detected: %s"
-msgstr ""
-
-#: lib/libalpm/deps.c:691
-msgid "finished resolving dependencies"
+msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr ""
-#: lib/libalpm/error.c:40
+#: lib/libalpm/error.c:43
msgid "out of memory!"
msgstr ""
-#: lib/libalpm/error.c:42
+#: lib/libalpm/error.c:45
msgid "unexpected system error"
msgstr ""
-#: lib/libalpm/error.c:44
+#: lib/libalpm/error.c:47
msgid "insufficient privileges"
msgstr ""
-#: lib/libalpm/error.c:46
+#: lib/libalpm/error.c:49
msgid "could not find or read file"
msgstr ""
-#: lib/libalpm/error.c:48
+#: lib/libalpm/error.c:51
+#, fuzzy
+msgid "could not find or read directory"
+msgstr "não foi possível obter o diretório de trabalho atual"
+
+#: lib/libalpm/error.c:53
msgid "wrong or NULL argument passed"
msgstr ""
-#: lib/libalpm/error.c:51
+#: lib/libalpm/error.c:56
msgid "library not initialized"
msgstr "biblioteca não inicializada"
-#: lib/libalpm/error.c:53
+#: lib/libalpm/error.c:58
msgid "library already initialized"
msgstr "biblioteca já inicializada"
-#: lib/libalpm/error.c:55
+#: lib/libalpm/error.c:60
msgid "unable to lock database"
msgstr ""
-#: lib/libalpm/error.c:58
+#: lib/libalpm/error.c:63
msgid "could not open database"
msgstr "não foi possível abrir a base de dados"
-#: lib/libalpm/error.c:60
+#: lib/libalpm/error.c:65
msgid "could not create database"
msgstr "não foi possível criar a base de dados"
-#: lib/libalpm/error.c:62
+#: lib/libalpm/error.c:67
msgid "database not initialized"
msgstr "base de dados não inicializada"
-#: lib/libalpm/error.c:64
+#: lib/libalpm/error.c:69
msgid "database already registered"
msgstr "base de dados já registrada"
-#: lib/libalpm/error.c:66
+#: lib/libalpm/error.c:71
msgid "could not find database"
msgstr "não foi possível encontrar a base de dados"
-#: lib/libalpm/error.c:68
+#: lib/libalpm/error.c:73
msgid "could not update database"
msgstr "não foi possível atualizar a base de dados"
-#: lib/libalpm/error.c:70
+#: lib/libalpm/error.c:75
msgid "could not remove database entry"
msgstr "não foi possível remover a entrada da base de dados"
-#: lib/libalpm/error.c:73
+#: lib/libalpm/error.c:78
msgid "invalid url for server"
msgstr ""
-#: lib/libalpm/error.c:80
+#: lib/libalpm/error.c:85
msgid "could not set parameter"
msgstr ""
-#: lib/libalpm/error.c:83
+#: lib/libalpm/error.c:88
msgid "transaction already initialized"
msgstr ""
-#: lib/libalpm/error.c:85 lib/libalpm/error.c:89
+#: lib/libalpm/error.c:90 lib/libalpm/error.c:94
msgid "transaction not initialized"
msgstr ""
-#: lib/libalpm/error.c:87
+#: lib/libalpm/error.c:92
msgid "duplicate target"
msgstr "alvo duplicado"
-#: lib/libalpm/error.c:91
+#: lib/libalpm/error.c:96
msgid "transaction not prepared"
msgstr ""
-#: lib/libalpm/error.c:93
+#: lib/libalpm/error.c:98
msgid "transaction aborted"
msgstr ""
-#: lib/libalpm/error.c:95
+#: lib/libalpm/error.c:100
msgid "operation not compatible with the transaction type"
msgstr ""
-#: lib/libalpm/error.c:97 lib/libalpm/sync.c:994
+#: lib/libalpm/error.c:102
msgid "could not commit transaction"
msgstr ""
-#: lib/libalpm/error.c:99
+#: lib/libalpm/error.c:104
msgid "could not download all files"
msgstr ""
-#: lib/libalpm/error.c:102
+#: lib/libalpm/error.c:107
msgid "could not find or read package"
msgstr ""
-#: lib/libalpm/error.c:104
+#: lib/libalpm/error.c:109
msgid "invalid or corrupted package"
msgstr ""
-#: lib/libalpm/error.c:106
+#: lib/libalpm/error.c:111
msgid "cannot open package file"
msgstr ""
-#: lib/libalpm/error.c:108
+#: lib/libalpm/error.c:113
msgid "cannot load package data"
msgstr ""
-#: lib/libalpm/error.c:110
+#: lib/libalpm/error.c:115
msgid "package already installed"
msgstr ""
-#: lib/libalpm/error.c:112
+#: lib/libalpm/error.c:117
msgid "package not installed or lesser version"
msgstr ""
-#: lib/libalpm/error.c:114
+#: lib/libalpm/error.c:119
msgid "cannot remove all files for package"
msgstr ""
-#: lib/libalpm/error.c:116
+#: lib/libalpm/error.c:121
msgid "package name is not valid"
msgstr "o nome do pacote não é valido"
-#: lib/libalpm/error.c:118
+#: lib/libalpm/error.c:123
msgid "corrupted package"
msgstr "pacote corrompido"
-#: lib/libalpm/error.c:120
+#: lib/libalpm/error.c:125
msgid "no such repository"
msgstr ""
-#: lib/libalpm/error.c:123
+#: lib/libalpm/error.c:128
+#, fuzzy
+msgid "corrupted delta"
+msgstr "pacote corrompido"
+
+#: lib/libalpm/error.c:130
+msgid "delta patch failed"
+msgstr ""
+
+#: lib/libalpm/error.c:133
msgid "group not found"
msgstr "grupo não encontrado"
-#: lib/libalpm/error.c:126
+#: lib/libalpm/error.c:136
msgid "could not satisfy dependencies"
msgstr ""
-#: lib/libalpm/error.c:128
+#: lib/libalpm/error.c:138
msgid "conflicting dependencies"
msgstr ""
-#: lib/libalpm/error.c:130
+#: lib/libalpm/error.c:140
msgid "conflicting files"
msgstr ""
-#: lib/libalpm/error.c:133
+#: lib/libalpm/error.c:143
msgid "user aborted the operation"
msgstr ""
-#: lib/libalpm/error.c:135
+#: lib/libalpm/error.c:145
msgid "internal error"
msgstr "erro interno"
-#: lib/libalpm/error.c:137
+#: lib/libalpm/error.c:147
msgid "libarchive error"
msgstr ""
-#: lib/libalpm/error.c:139
-msgid "not enough space on disk"
-msgstr "espaço insuficiente em disco"
-
-#: lib/libalpm/error.c:142
+#: lib/libalpm/error.c:150
msgid "not confirmed"
msgstr ""
-#: lib/libalpm/error.c:145
-msgid "bad configuration section name"
-msgstr ""
-
-#: lib/libalpm/error.c:147
-msgid "'local' is reserved and cannot be used as a repository name"
-msgstr ""
-
-#: lib/libalpm/error.c:149
-msgid "syntax error in config file"
-msgstr ""
-
-#: lib/libalpm/error.c:151
-msgid "all directives must belong to a section"
-msgstr ""
-
-#: lib/libalpm/error.c:153
+#: lib/libalpm/error.c:152
msgid "invalid regular expression"
msgstr "expressão regular inválida"
-#: lib/libalpm/error.c:156
+#: lib/libalpm/error.c:155
msgid "connection to remote host failed"
msgstr ""
-#: lib/libalpm/error.c:159
+#: lib/libalpm/error.c:158
msgid "unexpected error"
msgstr "erro inesperado"
-#: lib/libalpm/handle.c:163
-#, c-format
-msgid "cannot canonicalize specified root path '%s'"
-msgstr ""
-
-#: lib/libalpm/handle.c:175
-#, c-format
-msgid "option 'root' = %s"
-msgstr ""
-
-#: lib/libalpm/handle.c:195
-#, c-format
-msgid "option 'dbpath' = %s"
-msgstr ""
-
-#: lib/libalpm/handle.c:211
-#, c-format
-msgid "option 'cachedir' = %s"
-msgstr ""
-
-#: lib/libalpm/md5driver.c:56
-#, c-format
-msgid "%s can't be opened\n"
-msgstr ""
-
-#: lib/libalpm/md5driver.c:74
-#, c-format
-msgid "md5(%s) = %s"
-msgstr ""
-
-#: lib/libalpm/package.c:147
-#, c-format
-msgid "%s-%s: ignoring package upgrade (%s)"
-msgstr ""
-
-#: lib/libalpm/package.c:158
-#, c-format
-msgid "%s: forcing upgrade to version %s"
-msgstr ""
-
-#: lib/libalpm/package.c:163
-#, c-format
-msgid "%s: local (%s) is newer than %s (%s)"
-msgstr ""
-
-#: lib/libalpm/package.c:171
-#, c-format
-msgid "%s-%s: delaying upgrade of package (%s)"
-msgstr ""
-
-#: lib/libalpm/package.c:222 lib/libalpm/package.c:281
-#, c-format
-msgid "%s: syntax error in description file line %d"
-msgstr ""
+#: lib/libalpm/package.c:124
+#, fuzzy, c-format
+msgid "could not get md5sum for package %s-%s\n"
+msgstr "não foi possível conseguir a soma md5 para o pacote %s-%s"
-#: lib/libalpm/package.c:355
-msgid "could not parse the package description file"
-msgstr ""
+#: lib/libalpm/package.c:133
+#, fuzzy, c-format
+msgid "md5sums do not match for package %s-%s\n"
+msgstr "somas md5 não coincidem para o pacote %s-%s"
-#: lib/libalpm/package.c:359
+#: lib/libalpm/package.c:737
#, c-format
-msgid "missing package name in %s"
+msgid "%s: forcing upgrade to version %s\n"
msgstr ""
-#: lib/libalpm/package.c:363
+#: lib/libalpm/package.c:742
#, c-format
-msgid "missing package version in %s"
+msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr ""
-#: lib/libalpm/package.c:398
+#: lib/libalpm/package.c:750
#, c-format
-msgid "could not remove tempfile %s"
+msgid "%s-%s: delaying upgrade of package (%s)\n"
msgstr ""
-#: lib/libalpm/package.c:411 lib/libalpm/package.c:418
-#, c-format
-msgid "error while reading package: %s"
-msgstr ""
+#: lib/libalpm/package.c:931
+#, fuzzy, c-format
+msgid "could not parse package description file in %s\n"
+msgstr "não foi possível remover o arquivo de lock %s"
-#: lib/libalpm/package.c:424
-msgid "missing package metadata"
-msgstr ""
+#: lib/libalpm/package.c:936
+#, fuzzy, c-format
+msgid "missing package name in %s\n"
+msgstr "o nome do pacote não é valido"
-#: lib/libalpm/package.c:431
+#: lib/libalpm/package.c:940
#, c-format
-msgid "missing package filelist in %s, generating one"
+msgid "missing package version in %s\n"
msgstr ""
-#: lib/libalpm/package.c:570
-#, c-format
-msgid "adding '%s' in requiredby field for '%s'"
-msgstr ""
+#: lib/libalpm/package.c:970
+#, fuzzy, c-format
+msgid "could not remove tempfile %s\n"
+msgstr "não foi possível remover o arquivo de lock %s"
-#: lib/libalpm/package.c:584
+#: lib/libalpm/package.c:985 lib/libalpm/package.c:998
#, c-format
-msgid "adding '%s' in requiredby field for '%s' (provides: %s)"
+msgid "error while reading package %s: %s\n"
msgstr ""
-#: lib/libalpm/remove.c:79
+#: lib/libalpm/package.c:1005
#, c-format
-msgid "could not find %s in database"
+msgid "missing package metadata in %s\n"
msgstr ""
-#: lib/libalpm/remove.c:93
+#: lib/libalpm/package.c:1012
#, c-format
-msgid "adding %s in the targets list"
+msgid "missing package filelist in %s, generating one\n"
msgstr ""
#: lib/libalpm/remove.c:121
-#, c-format
-msgid "pulling %s in the targets list"
-msgstr ""
-
-#: lib/libalpm/remove.c:124
-#, c-format
-msgid "could not find %s in database -- skipping"
-msgstr ""
-
-#: lib/libalpm/remove.c:142
-msgid "finding removable dependencies"
-msgstr ""
-
-#: lib/libalpm/remove.c:175
-#, c-format
-msgid "cannot remove file '%s': %s"
-msgstr ""
-
-#: lib/libalpm/remove.c:213
-#, c-format
-msgid "Skipping removal of '%s' due to NoUpgrade"
-msgstr ""
-
-#: lib/libalpm/remove.c:220
-#, c-format
-msgid "file %s does not exist"
-msgstr "o arquivo %s não existe"
-
-#: lib/libalpm/remove.c:227
-#, c-format
-msgid "keeping directory %s"
-msgstr "mantendo diretório %s"
-
-#: lib/libalpm/remove.c:229
-#, c-format
-msgid "removing directory %s"
-msgstr "removendo diretório %s"
-
-#: lib/libalpm/remove.c:236
-#, c-format
-msgid "%s is in trans->skip_remove, skipping removal"
-msgstr ""
-
-#: lib/libalpm/remove.c:250
-#, c-format
-msgid "transaction is set to NOSAVE, not backing up '%s'"
-msgstr ""
-
-#: lib/libalpm/remove.c:254
-#, c-format
-msgid "unlinking %s"
-msgstr ""
-
-#: lib/libalpm/remove.c:261
-#, c-format
-msgid "cannot remove file %s: %s"
-msgstr ""
-
-#: lib/libalpm/remove.c:294
-#, c-format
-msgid "removing package %s-%s"
-msgstr ""
-
-#: lib/libalpm/remove.c:309
-#, c-format
-msgid "not removing package '%s', can't remove all files"
-msgstr ""
+#, fuzzy, c-format
+msgid "could not find %s in database -- skipping\n"
+msgstr "não foi possível encontrar a base de dados"
-#: lib/libalpm/remove.c:316
+#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:243
#, fuzzy, c-format
-msgid "removing %d files"
-msgstr "removendo diretório %s"
+msgid "cannot remove file '%s': %s\n"
+msgstr "não foi possível abrir o arquivo %s: %s"
#: lib/libalpm/remove.c:337
-#, c-format
-msgid "removing database entry '%s'"
-msgstr ""
-
-#: lib/libalpm/remove.c:339
-#, c-format
-msgid "could not remove database entry %s-%s"
-msgstr ""
-
-#: lib/libalpm/remove.c:344
-#, c-format
-msgid "could not remove entry '%s' from cache"
-msgstr ""
+#, fuzzy, c-format
+msgid "could not remove database entry %s-%s\n"
+msgstr "não foi possível remover a entrada da base de dados %s%s"
-#: lib/libalpm/sha1.c:397
-#, c-format
-msgid "sha1: %s can't be opened\n"
-msgstr ""
+#: lib/libalpm/remove.c:342
+#, fuzzy, c-format
+msgid "could not remove entry '%s' from cache\n"
+msgstr "não foi possível adicionar a entrada '%s' ao cache"
-#: lib/libalpm/sha1.c:412
+#: lib/libalpm/server.c:56
#, c-format
-msgid "sha1(%s) = %s"
+msgid "url '%s' is invalid, ignoring\n"
msgstr ""
-#: lib/libalpm/sync.c:183
-msgid "checking for package upgrades"
+#: lib/libalpm/server.c:60
+msgid "url scheme not specified, assuming http\n"
msgstr ""
-#: lib/libalpm/sync.c:215
-#, c-format
-msgid "%s-%s elected for upgrade (%s => %s)"
+#: lib/libalpm/server.c:241
+msgid "disk"
msgstr ""
-#: lib/libalpm/sync.c:270
+#: lib/libalpm/server.c:245
#, c-format
-msgid "searching for target in repo '%s'"
+msgid "failed retrieving file '%s' from %s : %s\n"
msgstr ""
-#: lib/libalpm/sync.c:278 lib/libalpm/sync.c:301
-#, c-format
-msgid "target '%s' not found -- looking for provisions"
+#: lib/libalpm/server.c:275
+msgid "cannot resume download, starting over\n"
msgstr ""
-#: lib/libalpm/sync.c:283 lib/libalpm/sync.c:306
-#, c-format
-msgid "found '%s' as a provision for '%s'"
-msgstr ""
+#: lib/libalpm/server.c:288
+#, fuzzy, c-format
+msgid "cannot write to file '%s'\n"
+msgstr "não foi possível remover o arquivo de lock %s"
-#: lib/libalpm/sync.c:290
+#: lib/libalpm/server.c:307
#, c-format
-msgid "repository '%s' not found"
+msgid "error downloading '%s': %s\n"
msgstr ""
-#: lib/libalpm/sync.c:331
+#: lib/libalpm/server.c:319
#, c-format
-msgid "%s-%s is up to date -- skipping"
+msgid "error writing to file '%s': %s\n"
msgstr ""
-#: lib/libalpm/sync.c:354
-#, c-format
-msgid "adding target '%s' to the transaction set"
-msgstr ""
-
-#: lib/libalpm/sync.c:402
-msgid "resolving target's dependencies"
-msgstr ""
-
-#: lib/libalpm/sync.c:422
-#, c-format
-msgid "adding package %s-%s to the transaction targets"
-msgstr ""
+#: lib/libalpm/server.c:387
+#, fuzzy, c-format
+msgid "could not chdir to %s\n"
+msgstr "não foi possível extrair %s (%s)"
-#: lib/libalpm/sync.c:463
-msgid "looking for unresolvable dependencies"
+#: lib/libalpm/server.c:394
+msgid "running XferCommand: fork failed!\n"
msgstr ""
-#: lib/libalpm/sync.c:494
-#, c-format
-msgid "package '%s' conflicts with '%s'"
-msgstr "pacote '%s' conflita com '%s'"
-
-#: lib/libalpm/sync.c:516
-#, c-format
-msgid "'%s' not found in transaction set -- skipping"
+#: lib/libalpm/server.c:445
+msgid "URL does not contain a file for download\n"
msgstr ""
-#: lib/libalpm/sync.c:527
+#: lib/libalpm/server.c:458
#, c-format
-msgid "package '%s' provides its own conflict"
+msgid "failed to download %s\n"
msgstr ""
-#: lib/libalpm/sync.c:550 lib/libalpm/sync.c:555
+#: lib/libalpm/sync.c:135
#, c-format
-msgid "'%s' is in the target list -- keeping it"
+msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
msgstr ""
-#: lib/libalpm/sync.c:567 lib/libalpm/sync.c:604
-#, c-format
-msgid "removing '%s' from target list"
-msgstr "removendo '%s' da lista de alvos"
-
-#: lib/libalpm/sync.c:576
+#: lib/libalpm/sync.c:250
#, c-format
-msgid "resolving package '%s' conflict"
+msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr ""
-#: lib/libalpm/sync.c:599
+#: lib/libalpm/sync.c:320
#, c-format
-msgid "electing '%s' for removal"
-msgstr ""
-
-#: lib/libalpm/sync.c:610 lib/libalpm/sync.c:626
-msgid "unresolvable package conflicts detected"
-msgstr ""
-
-#: lib/libalpm/sync.c:678
-msgid "checking dependencies of packages designated for removal"
-msgstr ""
-
-#: lib/libalpm/sync.c:692
-msgid "something has gone horribly wrong"
+msgid "repository '%s' not found\n"
msgstr ""
-#: lib/libalpm/sync.c:712
-#, c-format
-msgid "found '%s' as a provision for '%s' -- conflict aborted"
-msgstr ""
+#: lib/libalpm/sync.c:354
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- skipping\n"
+msgstr "versão atualizada %s-%s está na lista de pacotes -- pulando"
-#: lib/libalpm/sync.c:808
+#: lib/libalpm/sync.c:358
#, c-format
-msgid "%s is already in the cache\n"
+msgid "%s-%s is up to date -- reinstalling\n"
msgstr ""
-#: lib/libalpm/sync.c:819
-#, c-format
-msgid "no %s cache exists, creating...\n"
+#: lib/libalpm/sync.c:613 lib/libalpm/sync.c:618
+msgid "unresolvable package conflicts detected\n"
msgstr ""
-#: lib/libalpm/sync.c:820
+#: lib/libalpm/sync.c:628
#, c-format
-msgid "warning: no %s cache exists, creating..."
+msgid "malloc failure: could not allocate %zd bytes\n"
msgstr ""
#: lib/libalpm/sync.c:825
-msgid "couldn't create package cache, using /tmp instead\n"
-msgstr ""
-
-#: lib/libalpm/sync.c:826
-msgid "warning: couldn't create package cache, using /tmp instead"
-msgstr ""
-
-#: lib/libalpm/sync.c:833
#, c-format
-msgid "failed to retrieve some files from %s\n"
+msgid "command: %s\n"
msgstr ""
-#: lib/libalpm/sync.c:863 lib/libalpm/sync.c:875
-#, c-format
-msgid "can't get md5 or sha1 checksum for package %s\n"
-msgstr ""
+#: lib/libalpm/sync.c:888 lib/libalpm/sync.c:896
+#, fuzzy, c-format
+msgid "can't get md5 checksum for file %s\n"
+msgstr "não foi possível conseguir a soma md5 para o pacote %s-%s"
-#: lib/libalpm/sync.c:894
+#: lib/libalpm/sync.c:910
#, c-format
-msgid "archive %s was corrupted (bad MD5 or SHA1 checksum)\n"
+msgid "file %s was corrupted (bad MD5 checksum)\n"
msgstr ""
-#: lib/libalpm/sync.c:896
+#: lib/libalpm/sync.c:1056
#, c-format
-msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr ""
-
-#: lib/libalpm/sync.c:917
-msgid "could not create removal transaction"
-msgstr ""
-
-#: lib/libalpm/sync.c:923
-msgid "could not initialize the removal transaction"
-msgstr ""
-
-#: lib/libalpm/sync.c:943
-msgid "removing conflicting and to-be-replaced packages"
-msgstr ""
-
-#: lib/libalpm/sync.c:945
-msgid "could not prepare removal transaction"
+msgid "failed to retrieve some files from %s\n"
msgstr ""
-#: lib/libalpm/sync.c:951
-msgid "could not commit removal transaction"
-msgstr ""
+#: lib/libalpm/sync.c:1137
+#, fuzzy
+msgid "could not create removal transaction\n"
+msgstr "não foi possível criar a base de dados"
-#: lib/libalpm/sync.c:958
-msgid "installing packages"
+#: lib/libalpm/sync.c:1143
+msgid "could not initialize the removal transaction\n"
msgstr ""
-#: lib/libalpm/sync.c:961
-msgid "could not create transaction"
-msgstr ""
+#: lib/libalpm/sync.c:1165
+#, fuzzy
+msgid "could not prepare removal transaction\n"
+msgstr "não foi possível criar a base de dados"
-#: lib/libalpm/sync.c:966
-msgid "could not initialize transaction"
+#: lib/libalpm/sync.c:1171
+msgid "could not commit removal transaction\n"
msgstr ""
-#: lib/libalpm/sync.c:989
-msgid "could not prepare transaction"
-msgstr ""
+#: lib/libalpm/sync.c:1182
+#, fuzzy
+msgid "could not create transaction\n"
+msgstr "não foi possível criar a base de dados"
-#: lib/libalpm/sync.c:1001
-msgid "updating database for replaced packages' dependencies"
+#: lib/libalpm/sync.c:1187
+msgid "could not initialize transaction\n"
msgstr ""
-#: lib/libalpm/sync.c:1030
-#, c-format
-msgid "could not update requiredby for database entry %s-%s"
-msgstr ""
+#: lib/libalpm/sync.c:1214
+#, fuzzy
+msgid "could not prepare transaction\n"
+msgstr "não foi possível criar a base de dados"
-#: lib/libalpm/sync.c:1039
-#, c-format
-msgid "could not update new database entry %s-%s"
+#: lib/libalpm/sync.c:1219
+msgid "could not commit transaction\n"
msgstr ""
-#: lib/libalpm/sync.c:1079
+#: lib/libalpm/trans.c:214
#, fuzzy, c-format
-msgid "found package '%s-%s' in sync"
-msgstr "atualizando pacote %s-%s"
-
-#: lib/libalpm/sync.c:1085
-#, c-format
-msgid "package '%s' not found in sync"
-msgstr ""
-
-#: lib/libalpm/trans.c:271
-#, c-format
-msgid "updating dependency packages 'requiredby' fields for %s-%s"
-msgstr ""
-
-#: lib/libalpm/trans.c:274
-msgid "package has no dependencies, no other packages to update"
-msgstr ""
-
-#: lib/libalpm/trans.c:311 lib/libalpm/trans.c:341
-#, c-format
-msgid "updating 'requiredby' field for package '%s'"
-msgstr ""
+msgid "could not remove lock file %s\n"
+msgstr "não foi possível remover o arquivo de lock %s"
-#: lib/libalpm/trans.c:326 lib/libalpm/trans.c:356
+#: lib/libalpm/trans.c:483
#, c-format
-msgid "could not update 'requiredby' database entry %s-%s"
+msgid "No /bin/sh in root dir (%s), aborting scriptlet\n"
msgstr ""
-#: lib/libalpm/trans.c:333
-#, c-format
-msgid "could not find dependency '%s'"
-msgstr "não foi possível encontrar a dependência '%s'"
+#: lib/libalpm/trans.c:494
+#, fuzzy
+msgid "could not create temp directory\n"
+msgstr "não foi possível obter o diretório de trabalho atual"
-#: lib/libalpm/util.c:142
-#, c-format
-msgid "failed to make path '%s' : %s"
-msgstr ""
+#: lib/libalpm/trans.c:536
+#, fuzzy, c-format
+msgid "could not change directory to %s (%s)\n"
+msgstr "não foi possível extrair %s (%s)"
-#: lib/libalpm/util.c:280
-#, c-format
-msgid "could not open %s: %s\n"
-msgstr ""
+#: lib/libalpm/trans.c:554
+#, fuzzy, c-format
+msgid "could not fork a new process (%s)\n"
+msgstr "não foi possível renomear %s (%s)"
-#: lib/libalpm/util.c:293
-#, c-format
-msgid "could not extract %s: %s\n"
-msgstr ""
+#: lib/libalpm/trans.c:564
+#, fuzzy, c-format
+msgid "could not change the root directory (%s)\n"
+msgstr "não foi possível obter o diretório de trabalho atual"
-#: lib/libalpm/util.c:350
-#, c-format
-msgid "logaction called: %s"
-msgstr ""
+#: lib/libalpm/trans.c:569
+#, fuzzy, c-format
+msgid "could not change directory to / (%s)\n"
+msgstr "não foi possível extrair %s (%s)"
-#: lib/libalpm/util.c:445
-msgid "could not create temp directory"
-msgstr ""
+#: lib/libalpm/trans.c:578
+#, fuzzy, c-format
+msgid "call to popen failed (%s)"
+msgstr "não foi possível abrir o arquivo %s: %s"
-#: lib/libalpm/util.c:472
+#: lib/libalpm/trans.c:597
#, c-format
-msgid "could not change directory to %s (%s)"
+msgid "call to waitpid failed (%s)\n"
msgstr ""
-#: lib/libalpm/util.c:476
-#, c-format
-msgid "executing %s script..."
+#: lib/libalpm/trans.c:606
+msgid "scriptlet failed to execute correctly\n"
msgstr ""
-#: lib/libalpm/util.c:489
-#, c-format
-msgid "could not fork a new process (%s)"
-msgstr ""
+#: lib/libalpm/trans.c:615
+#, fuzzy, c-format
+msgid "could not remove tmpdir %s\n"
+msgstr "não foi possível remover o arquivo de lock %s"
-#: lib/libalpm/util.c:496
+#: lib/libalpm/util.c:204
#, c-format
-msgid "chrooting in %s"
+msgid "failed to make path '%s' : %s\n"
msgstr ""
-#: lib/libalpm/util.c:498
+#: lib/libalpm/util.c:389
#, c-format
-msgid "could not change the root directory (%s)"
+msgid "could not open %s: %s\n"
msgstr ""
-#: lib/libalpm/util.c:502
+#: lib/libalpm/util.c:573
#, c-format
-msgid "could not change directory to / (%s)"
+msgid "no %s cache exists, creating...\n"
msgstr ""
-#: lib/libalpm/util.c:506
-#, c-format
-msgid "executing \"%s\""
-msgstr "executando \"%s\""
-
-#: lib/libalpm/util.c:509
-#, c-format
-msgid "call to popen failed (%s)"
+#: lib/libalpm/util.c:593
+msgid "couldn't create package cache, using /tmp instead\n"
msgstr ""
-#: lib/libalpm/util.c:541
+#: lib/libalpm/util.c:643
#, c-format
-msgid "call to waitpid failed (%s)"
+msgid "md5: %s can't be opened\n"
msgstr ""
-#: lib/libalpm/util.c:550
+#: lib/libalpm/util.c:645
#, c-format
-msgid "could not remove tmpdir %s"
+msgid "md5: %s can't be read\n"
msgstr ""
-#: lib/libalpm/util.c:568
-#, c-format
-msgid "cannot read disk space information from %s: %s"
-msgstr ""
+#~ msgid "please remove '%s' first, using -Rd"
+#~ msgstr "por favor, remova '%s' primeiro usando -Rd"
-#: lib/libalpm/util.c:609
-#, c-format
-msgid "check_freespace: total pkg size: %lld, disk space: %lld"
-msgstr ""
+#~ msgid "could not extract %s (%s)"
+#~ msgstr "não foi possível extrair %s (%s)"
-#: lib/libalpm/versioncmp.c:279
-#, c-format
-msgid "depcmp: %s-%s %s %s-%s => %s"
-msgstr ""
+#~ msgid "could not update provision '%s' from '%s'"
+#~ msgstr "não foi possível atualizar a provisão '%s' para '%s'"
-#: lib/libalpm/versioncmp.c:284
-#, c-format
-msgid "depcmp: %s-%s %s %s => %s"
-msgstr ""
+#~ msgid "could not get sha1sum for package %s-%s"
+#~ msgstr "não foi possível conseguir a soma sha1 para o pacote %s-%s"
-#~ msgid "%s saved as %s.pacorig"
-#~ msgstr "%s salvo como %s.pacorig"
+#~ msgid "sha1sums do not match for package %s-%s"
+#~ msgstr "somas sha1 não coincidem para o pacote %s-%s"
diff --git a/lib/libalpm/po/ru_RU.po b/lib/libalpm/po/ru_RU.po
index ec5eb0d7..89fb8f28 100644
--- a/lib/libalpm/po/ru_RU.po
+++ b/lib/libalpm/po/ru_RU.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.0.0\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-09-16 16:55-0500\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
"PO-Revision-Date: 2007-03-16 02:52+1000\n"
"Last-Translator: Vladimir Bayrakovskiy <4rayven@gmail.com>\n"
"MIME-Version: 1.0\n"
@@ -16,1494 +16,692 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: lib/libalpm/add.c:77
+#: lib/libalpm/add.c:88
#, c-format
-msgid "loading target '%s'"
+msgid "replacing older version %s-%s by %s in target list\n"
msgstr ""
-#: lib/libalpm/add.c:122
-#, c-format
-msgid "replacing older version %s-%s by %s in target list"
-msgstr ""
+#: lib/libalpm/add.c:97
+#, fuzzy, c-format
+msgid "newer version %s-%s is in the target list -- skipping\n"
+msgstr "%s-%s не уÑтарел -- пропуÑкаю"
-#: lib/libalpm/add.c:131
-#, c-format
-msgid "newer version %s-%s is in the target list -- skipping"
+#: lib/libalpm/add.c:168
+msgid "conflicting packages were found in the target list\n"
msgstr ""
-#: lib/libalpm/add.c:138
-#, c-format
-msgid "reading '%s' metadata"
-msgstr "читаю метаданные из '%s'"
-
-#: lib/libalpm/add.c:191 lib/libalpm/remove.c:111
-msgid "looking for unsatisfied dependencies"
-msgstr "поиÑк неразрешенных завиÑимоÑтей"
-
-#: lib/libalpm/add.c:203 lib/libalpm/sync.c:483
-msgid "looking for conflicts"
-msgstr "поиÑк конфликтов"
+#: lib/libalpm/add.c:169
+msgid "you cannot install two conflicting packages at the same time\n"
+msgstr ""
-#: lib/libalpm/add.c:208
-msgid "replacing packages with -A and -U is not supported yet"
+#: lib/libalpm/add.c:172
+#, fuzzy
+msgid "replacing packages with -A and -U is not supported yet\n"
msgstr "замещение пакетов Ñ Ð¸Ñпользованием опций -A и -U еще не реализовано"
-#: lib/libalpm/add.c:209
-#, c-format
-msgid "please remove '%s' first, using -Rd"
-msgstr "пожалуйÑта, уделите Ñначала '%s' иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ -Rd"
-
-#: lib/libalpm/add.c:250 lib/libalpm/remove.c:147
-msgid "sorting by dependencies"
-msgstr "Ñортировка по завиÑимоÑÑ‚Ñм"
-
-#: lib/libalpm/add.c:262
-msgid "cleaning up"
-msgstr "прибираем за Ñобой"
-
-#: lib/libalpm/add.c:277
-msgid "looking for file conflicts"
-msgstr "поиÑк конфликтующих файлов"
-
-#: lib/libalpm/add.c:346
-#, c-format
-msgid "upgrading package %s-%s"
-msgstr "обновлÑетÑÑ Ð¿Ð°ÐºÐµÑ‚ %s-%s"
-
-#: lib/libalpm/add.c:370
-#, c-format
-msgid "adding package %s-%s"
-msgstr "добавлÑÑŽ пакет %s-%s"
-
-#: lib/libalpm/add.c:383
-#, c-format
-msgid "removing old package first (%s-%s)"
-msgstr "Ñперва удалÑÑŽ Ñтарый пакет (%s-%s)"
+#: lib/libalpm/add.c:173
+msgid "you can replace packages manually using -Rd and -U\n"
+msgstr ""
-#: lib/libalpm/add.c:411
+#: lib/libalpm/add.c:365
#, c-format
-msgid "adding %s to the NoUpgrade array temporarily"
-msgstr "временно добавлÑÑŽ %s в ÑпиÑок NoUpgrade"
-
-#: lib/libalpm/add.c:429
-msgid "extracting files"
-msgstr "извлекаю файлы из архива"
-
-#: lib/libalpm/add.c:444 lib/libalpm/util.c:465
-msgid "could not get current working directory"
-msgstr "не могу определить текущую рабочую директорию"
+msgid ""
+"directory permissions differ on %s\n"
+"filesystem: %o package: %o\n"
+msgstr ""
-#: lib/libalpm/add.c:500 lib/libalpm/add.c:501
+#: lib/libalpm/add.c:392
#, c-format
-msgid "%s is in NoExtract, skipping extraction"
-msgstr "%s в ÑпиÑке NoExtract, пропуÑкаю при раÑпаковке"
+msgid "extract: symlink %s does not point to dir\n"
+msgstr ""
-#: lib/libalpm/add.c:508
+#: lib/libalpm/add.c:399
#, c-format
-msgid "%s is in trans->skip_add, skipping extraction"
+msgid "extract: not overwriting dir with file %s\n"
msgstr ""
-#: lib/libalpm/add.c:554 lib/libalpm/add.c:555 lib/libalpm/add.c:706
-#, c-format
-msgid "could not extract %s (%s)"
+#: lib/libalpm/add.c:454 lib/libalpm/add.c:598 lib/libalpm/util.c:422
+#, fuzzy, c-format
+msgid "could not extract %s (%s)\n"
msgstr "не могу извлечь %s (%s)"
-#: lib/libalpm/add.c:598
-#, c-format
-msgid "checking md5 hashes for %s"
-msgstr "проверÑÑŽ md5 хеши Ð´Ð»Ñ %s"
-
-#: lib/libalpm/add.c:600
-#, c-format
-msgid "checking sha1 hashes for %s"
-msgstr "проверÑÑŽ sha1 хеши Ð´Ð»Ñ %s"
-
-#: lib/libalpm/add.c:602
-#, c-format
-msgid "current: %s"
-msgstr "текущий: %s"
-
-#: lib/libalpm/add.c:603
-#, c-format
-msgid "new: %s"
-msgstr "новый: %s"
-
-#: lib/libalpm/add.c:604
-#, c-format
-msgid "original: %s"
-msgstr "иÑходный: %s"
-
-#: lib/libalpm/add.c:616
-#, c-format
-msgid "could not rename %s (%s)"
+#: lib/libalpm/add.c:505
+#, fuzzy, c-format
+msgid "could not rename %s (%s)\n"
msgstr "не могу переименовать %s (%s)"
-#: lib/libalpm/add.c:617
-#, c-format
-msgid "error: could not rename %s (%s)"
-msgstr "ошибка: не могу переименовать %s (%s)"
-
-#: lib/libalpm/add.c:623 lib/libalpm/add.c:642
-#, c-format
-msgid "could not copy tempfile to %s (%s)"
+#: lib/libalpm/add.c:512 lib/libalpm/add.c:532 lib/libalpm/trans.c:508
+#, fuzzy, c-format
+msgid "could not copy tempfile to %s (%s)\n"
msgstr "не могу Ñкопировать временный файл в %s (%s)"
-#: lib/libalpm/add.c:624
-#, c-format
-msgid "error: could not copy tempfile to %s (%s)"
-msgstr "ошибка: не могу Ñкопировать временный файл в %s (%s)"
-
-#: lib/libalpm/add.c:628 lib/libalpm/remove.c:247
-#, c-format
-msgid "%s saved as %s"
+#: lib/libalpm/add.c:517 lib/libalpm/remove.c:234
+#, fuzzy, c-format
+msgid "%s saved as %s\n"
msgstr "%s Ñохранен как %s"
-#: lib/libalpm/add.c:629
-#, c-format
-msgid "warning: %s saved as %s"
-msgstr "предупреждение: %s Ñохранен как %s"
-
-#: lib/libalpm/add.c:639
-#, c-format
-msgid "action: installing new file: %s"
-msgstr "дейÑтвие: уÑтанавливаю новый файл: %s"
-
-#: lib/libalpm/add.c:649 lib/libalpm/add.c:655 lib/libalpm/add.c:660
-msgid "action: leaving existing file in place"
-msgstr "дейÑтвие: оÑтавлÑем ÑущеÑтвующий файл на меÑте"
-
-#: lib/libalpm/add.c:663
-msgid "action: keeping current file and installing new one with .pacnew ending"
-msgstr ""
-"дейÑтвие: оÑтавлÑем текущий файл нетронутым и уÑтанавливаем новый Ñ "
-"ÑуффикÑом .pacnew"
-
-#: lib/libalpm/add.c:666
-#, c-format
-msgid "could not install %s as %s: %s"
+#: lib/libalpm/add.c:556
+#, fuzzy, c-format
+msgid "could not install %s as %s: %s\n"
msgstr "не могу уÑтановить %s как %s: %s"
-#: lib/libalpm/add.c:667
-#, c-format
-msgid "error: could not install %s as %s: %s"
-msgstr "ошибка: не могу уÑтановить %s как %s: %s"
-
-#: lib/libalpm/add.c:669
-#, c-format
-msgid "%s installed as %s"
+#: lib/libalpm/add.c:559
+#, fuzzy, c-format
+msgid "%s installed as %s\n"
msgstr "%s уÑтановлен как %s"
-#: lib/libalpm/add.c:670
-#, c-format
-msgid "warning: %s installed as %s"
-msgstr "предупреждение: %s уÑтановлен как %s"
-
-#: lib/libalpm/add.c:684
-#, c-format
-msgid "%s is in NoUpgrade -- skipping"
-msgstr "%s еÑÑ‚ÑŒ в ÑпиÑке NoUpgrade -- пропуÑкаю"
-
-#: lib/libalpm/add.c:685
-#, c-format
-msgid "extracting %s as %s.pacnew"
+#: lib/libalpm/add.c:576
+#, fuzzy, c-format
+msgid "extracting %s as %s.pacnew\n"
msgstr "извлекаю %s как %s.pacnew"
-#: lib/libalpm/add.c:686
-#, c-format
-msgid "warning: extracting %s as %s.pacnew"
-msgstr "предупреждение: извлекаю %s как %s.pacnew"
-
-#: lib/libalpm/add.c:689
-#, c-format
-msgid "extracting %s"
-msgstr "извлекаю %s"
-
-#: lib/libalpm/add.c:707
-#, c-format
-msgid "error: could not extract %s (%s)"
-msgstr "ошибка: не могу извлечь %s (%s)"
-
-#: lib/libalpm/add.c:719
-#, c-format
-msgid "appending backup entry for %s"
-msgstr "добавлÑÑŽ запиÑÑŒ Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ°Ñ‚Ð° Ð´Ð»Ñ %s"
+#: lib/libalpm/add.c:711 lib/libalpm/trans.c:529
+#, fuzzy
+msgid "could not get current working directory\n"
+msgstr "не могу определить текущую рабочую директорию"
-#: lib/libalpm/add.c:751 lib/libalpm/add.c:753
-#, c-format
-msgid "errors occurred while %s %s"
+#: lib/libalpm/add.c:765
+#, fuzzy, c-format
+msgid "problem occurred while upgrading %s\n"
msgstr "во Ð²Ñ€ÐµÐ¼Ñ %s %s произошли ошибки"
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "upgrading"
-msgstr "обновлÑÑŽ"
-
-#: lib/libalpm/add.c:752 lib/libalpm/add.c:754
-msgid "installing"
-msgstr "уÑтанавливаю"
-
-#: lib/libalpm/add.c:771
+#: lib/libalpm/add.c:770
#, fuzzy, c-format
-msgid "provision '%s' has been removed from package %s (%s => %s)"
-msgstr "'%s' был удален из пакета %s (%s => %s)"
-
-#: lib/libalpm/add.c:783
-#, c-format
-msgid "updating '%s' due to provision change (%s)"
-msgstr "обновлÑÑŽ '%s' в ÑвÑзи Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñми в (%s)"
-
-#: lib/libalpm/add.c:787 lib/libalpm/add.c:788
-#, c-format
-msgid "could not update provision '%s' from '%s'"
-msgstr "не могу обновить '%s' из '%s'"
-
-#: lib/libalpm/add.c:801 lib/libalpm/remove.c:336
-msgid "updating database"
-msgstr "обновлÑÑŽ базу данных"
-
-#: lib/libalpm/add.c:802
-#, c-format
-msgid "adding database entry '%s'"
-msgstr "добавлÑÑŽ в базу данных запиÑÑŒ '%s'"
+msgid "problem occurred while installing %s\n"
+msgstr "во Ð²Ñ€ÐµÐ¼Ñ %s %s произошли ошибки"
-#: lib/libalpm/add.c:805 lib/libalpm/add.c:807
-#, c-format
-msgid "could not update database entry %s-%s"
+#: lib/libalpm/add.c:785
+#, fuzzy, c-format
+msgid "could not update database entry %s-%s\n"
msgstr "не могу обновить в базе данных запиÑÑŒ %s-%s"
-#: lib/libalpm/add.c:813
-#, c-format
-msgid "could not add entry '%s' in cache"
-msgstr "не могу добавить запиÑÑŒ '%s' в кÑш"
-
-#: lib/libalpm/add.c:843 lib/libalpm/remove.c:363 lib/libalpm/sync.c:1055
-#, c-format
-msgid "running \"ldconfig -r %s\""
-msgstr "запуÑкаю \"ldconfig -r %s\""
-
-#: lib/libalpm/alpm.c:116
-#, c-format
-msgid "removing DB %s, %d remaining..."
-msgstr "удалÑÑŽ БД %s, %d оÑталоÑÑŒ..."
-
-#: lib/libalpm/alpm.c:181
+#: lib/libalpm/add.c:793
#, fuzzy, c-format
-msgid "unregistering database '%s'"
-msgstr "дерегеÑтрирую базу данных '%s'"
-
-#: lib/libalpm/alpm.c:186
-#, c-format
-msgid "closing database '%s'"
-msgstr "закрываю базу данных '%s'"
-
-#: lib/libalpm/alpm.c:232
-#, c-format
-msgid ""
-"adding new server to database '%s': protocol '%s', server '%s', path '%s'"
-msgstr ""
-"добавлÑÑŽ новый Ñервер в базу данных '%s': протокол '%s', Ñервер '%s', путь '%"
-"s'"
+msgid "could not add entry '%s' in cache\n"
+msgstr "не могу добавить запиÑÑŒ '%s' в кÑш"
-#: lib/libalpm/alpm.c:236
+#: lib/libalpm/be_files.c:223
#, fuzzy, c-format
-msgid "serverlist flushed for '%s'"
-msgstr "ÑпиÑок Ñерверов пополнен Ð´Ð»Ñ '%s'"
-
-#: lib/libalpm/alpm.c:279
-#, c-format
-msgid "failed to get lastupdate time for %s (no big deal)"
-msgstr ""
-"не удалоÑÑŒ узнать Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ %s (ни чего Ñтрашного)"
-
-#: lib/libalpm/alpm.c:298
-#, c-format
-msgid "failed to sync db: %s [%d]"
-msgstr "не удалоÑÑŒ Ñинхронизировать базу данных: %s [%d]"
-
-#: lib/libalpm/alpm.c:302
-#, c-format
-msgid "sync: new mtime for %s: %s"
-msgstr "ÑинхронизациÑ: обновлен mtime Ð´Ð»Ñ %s: %s"
-
-#: lib/libalpm/alpm.c:308
-#, c-format
-msgid "flushing database %s%s"
-msgstr "обновлÑÑŽ базу данных %s%s"
-
-#: lib/libalpm/alpm.c:312
-#, c-format
-msgid "could not remove database entry %s%s"
+msgid "invalid name for database entry '%s'\n"
msgstr "не могу удалить из базы данных запиÑÑŒ %s%s"
-#: lib/libalpm/alpm.c:481
-#, c-format
-msgid "could not get sha1sum for package %s-%s"
-msgstr "не могу получить контрольную Ñумму sha1sum Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s-%s"
-
-#: lib/libalpm/alpm.c:487
-#, c-format
-msgid "sha1sums for package %s-%s match"
-msgstr "контрольные Ñуммы sha1sum Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s-%s Ñовпали"
-
-#: lib/libalpm/alpm.c:490
-#, c-format
-msgid "sha1sums do not match for package %s-%s"
-msgstr "контрольные Ñуммы sha1sum Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s-%s не Ñовпали"
-
-#: lib/libalpm/alpm.c:525
-#, c-format
-msgid "could not get md5sum for package %s-%s"
-msgstr "не могу получить контрольную Ñумму md5sum Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s-%s"
-
-#: lib/libalpm/alpm.c:531
-#, c-format
-msgid "md5sums for package %s-%s match"
-msgstr "контрольные Ñуммы md5sum Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s-%s Ñовпали"
-
-#: lib/libalpm/alpm.c:534
-#, c-format
-msgid "md5sums do not match for package %s-%s"
-msgstr "контрольные Ñуммы md5sum Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s-%s не Ñовпали"
-
-#: lib/libalpm/alpm.c:783
-#, c-format
-msgid "could not remove lock file %s"
-msgstr "не могу удалить lock-файл %s"
-
-#: lib/libalpm/alpm.c:784
-#, c-format
-msgid "warning: could not remove lock file %s"
-msgstr "предупреждение: не могу удалить lock-файл %s"
-
-#: lib/libalpm/alpm.c:920
-#, c-format
-msgid "config: new section '%s'"
-msgstr "config: Ð½Ð¾Ð²Ð°Ñ ÑÐµÐºÑ†Ð¸Ñ '%s'"
-
-#: lib/libalpm/alpm.c:951
-msgid "config: nopassiveftp"
-msgstr ""
-
-#: lib/libalpm/alpm.c:954
-msgid "config: usesyslog"
-msgstr ""
-
-#: lib/libalpm/alpm.c:957
-msgid "config: chomp"
-msgstr ""
-
-#: lib/libalpm/alpm.c:960
-msgid "config: usecolor"
-msgstr ""
-
-#: lib/libalpm/alpm.c:969
-#, c-format
-msgid "config: including %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:979 lib/libalpm/alpm.c:984
-#, c-format
-msgid "config: noupgrade: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:992 lib/libalpm/alpm.c:997
-#, c-format
-msgid "config: noextract: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1005 lib/libalpm/alpm.c:1010
-#, c-format
-msgid "config: ignorepkg: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1018 lib/libalpm/alpm.c:1023
-#, c-format
-msgid "config: holdpkg: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1030
-#, c-format
-msgid "config: dbpath: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1037
-#, c-format
-msgid "config: cachedir: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1044
+#: lib/libalpm/be_files.c:275
#, fuzzy, c-format
-msgid "config: rootdir: %s"
-msgstr "config: Ð½Ð¾Ð²Ð°Ñ ÑÐµÐºÑ†Ð¸Ñ '%s'"
-
-#: lib/libalpm/alpm.c:1047
-#, c-format
-msgid "config: logfile: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1050
-#, c-format
-msgid "config: xfercommand: %s"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1055
-#, c-format
-msgid "config: upgradedelay: %d"
-msgstr ""
-
-#: lib/libalpm/alpm.c:1093 lib/libalpm/sync.c:107
-msgid "checking for package replacements"
-msgstr "проверÑÑŽ замены Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð¾Ð²"
-
-#: lib/libalpm/alpm.c:1104 lib/libalpm/sync.c:123
-#, c-format
-msgid "checking replacement '%s' for package '%s'"
-msgstr "проверÑÑŽ замену '%s' Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° '%s'"
-
-#: lib/libalpm/alpm.c:1107 lib/libalpm/sync.c:125
-#, c-format
-msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)"
-msgstr "%s-%s: игнорирую обновление Ñтого пакета (он будет заменен на %s-%s)"
-
-#: lib/libalpm/alpm.c:1137 lib/libalpm/sync.c:160
-#, c-format
-msgid "%s-%s elected for upgrade (to be replaced by %s-%s)"
-msgstr "%s-%s выбран Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ (будет заменен на %s-%s)"
-
-#: lib/libalpm/alpm.c:1159 lib/libalpm/sync.c:194
-#, c-format
-msgid "'%s' not found in sync db -- skipping"
-msgstr "'%s' не найден в базе данных -- пропуÑкаю"
-
-#: lib/libalpm/alpm.c:1173 lib/libalpm/sync.c:208 lib/libalpm/sync.c:509
-#, c-format
-msgid "'%s' is already elected for removal -- skipping"
-msgstr "'%s' уже выбран Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ -- пропуÑкаю"
-
-#: lib/libalpm/alpm.c:1179
-#, c-format
-msgid "%s elected for upgrade (%s => %s)"
-msgstr "%s выбран Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ (%s => %s)"
-
-#: lib/libalpm/be_files.c:61
-#, c-format
-msgid "unpacking database '%s'"
-msgstr "раÑпаковываю базу данных '%s'"
-
-#: lib/libalpm/be_files.c:78
-#, c-format
-msgid "opening database from path '%s'"
-msgstr "открываю базу данных раÑположенную в '%s'"
-
-#: lib/libalpm/be_files.c:182
-#, c-format
-msgid "db scan could not find package: %s"
-msgstr "в БД не удалоÑÑŒ найти пакет: %s"
-
-#: lib/libalpm/be_files.c:186
-#, c-format
-msgid "invalid name for database entry '%s'"
-msgstr ""
-
-#: lib/libalpm/be_files.c:221
-msgid "invalid package entry provided to _alpm_db_read, skipping"
-msgstr ""
-
-#: lib/libalpm/be_files.c:226
-#, c-format
-msgid ""
-"request to read database info for a file-based package '%s', skipping..."
-msgstr ""
-
-#: lib/libalpm/be_files.c:239
-#, c-format
-msgid "loading package data for %s : level=%d"
+msgid "loading package data for %s : level=%d\n"
msgstr "загружаю данные пакета %s : уровень=%d"
-#: lib/libalpm/be_files.c:247
-#, c-format
-msgid "cannot find '%s-%s' in db '%s'"
-msgstr ""
-
-#: lib/libalpm/be_files.c:255 lib/libalpm/be_files.c:401
-#: lib/libalpm/be_files.c:424 lib/libalpm/be_files.c:515
-#: lib/libalpm/be_files.c:605 lib/libalpm/be_files.c:632
-#: lib/libalpm/package.c:208
-#, c-format
-msgid "could not open file %s: %s"
-msgstr ""
-
-#: lib/libalpm/be_files.c:512
-#, c-format
-msgid "writing %s-%s DESC information back to db"
-msgstr ""
-
-#: lib/libalpm/be_files.c:602
-#, c-format
-msgid "writing %s-%s FILES information back to db"
-msgstr ""
-
-#: lib/libalpm/be_files.c:629
-#, c-format
-msgid "writing %s-%s DEPENDS information back to db"
-msgstr ""
-
-#: lib/libalpm/cache.c:59
-#, c-format
-msgid "loading package cache for repository '%s'"
-msgstr ""
-
-#: lib/libalpm/cache.c:64
-#, c-format
-msgid "adding '%s' to package cache for db '%s'"
-msgstr ""
-
-#: lib/libalpm/cache.c:85
-#, c-format
-msgid "freeing package cache for repository '%s'"
-msgstr ""
-
-#: lib/libalpm/cache.c:109
-#, c-format
-msgid "error: pkgcache is NULL for db '%s'"
-msgstr ""
-
-#: lib/libalpm/cache.c:129
-#, c-format
-msgid "adding entry '%s' in '%s' cache"
-msgstr ""
-
-#: lib/libalpm/cache.c:149
-#, c-format
-msgid "removing entry '%s' from '%s' cache"
-msgstr ""
-
-#: lib/libalpm/cache.c:156
-#, c-format
-msgid "cannot remove entry '%s' from '%s' cache: not found"
-msgstr ""
-
-#: lib/libalpm/cache.c:178
-#, c-format
-msgid "error: failed to get '%s' from NULL pkgcache"
-msgstr ""
-
-#: lib/libalpm/cache.c:201
-#, c-format
-msgid "loading group cache for repository '%s'"
-msgstr ""
-
-#: lib/libalpm/conflict.c:69
-#, c-format
-msgid " found conflict '%s' : package '%s'"
-msgstr ""
-
-#: lib/libalpm/conflict.c:78
-#, c-format
-msgid " found conflict '%s' : package '%s' provides '%s'"
-msgstr ""
-
-#: lib/libalpm/conflict.c:101 lib/libalpm/conflict.c:143
-#, c-format
-msgid "package '%s' conflicts with itself - packaging error"
-msgstr ""
-
-#: lib/libalpm/conflict.c:107
-#, c-format
-msgid "checkconflicts: target '%s' vs db"
-msgstr ""
-
-#: lib/libalpm/conflict.c:149
-#, c-format
-msgid "checkconflicts: target '%s' vs all targets"
-msgstr ""
-
-#: lib/libalpm/conflict.c:181
-#, c-format
-msgid "checkconflicts: db vs target '%s'"
-msgstr ""
-
-#: lib/libalpm/conflict.c:201
-#, c-format
-msgid "target '%s' is also in target list, using NEW conflicts"
-msgstr ""
-
-#: lib/libalpm/conflict.c:257
-#, c-format
-msgid "\tCONFLICTS:: %s conflicts with %s"
-msgstr ""
-
-#: lib/libalpm/conflict.c:349 lib/libalpm/deps.c:60 lib/libalpm/deps.c:438
-#: lib/libalpm/deps.c:634 lib/libalpm/deps.c:674 lib/libalpm/group.c:45
-#: lib/libalpm/handle.c:51 lib/libalpm/package.c:82 lib/libalpm/sync.c:67
-#: lib/libalpm/sync.c:614 lib/libalpm/sync.c:630 lib/libalpm/sync.c:727
-#: lib/libalpm/trans.c:55 lib/libalpm/util.c:614 lib/libalpm/util.c:621
-#, c-format
-msgid "malloc failure: could not allocate %d bytes"
-msgstr ""
-
-#: lib/libalpm/db.c:64 lib/libalpm/db.c:71
-#, c-format
-msgid "malloc failed: could not allocate %d bytes"
-msgstr ""
-
-#: lib/libalpm/db.c:167
-msgid "attempt to re-register the 'local' DB"
-msgstr ""
-
-#: lib/libalpm/db.c:175
-#, c-format
-msgid "attempt to re-register the '%s' database, using existing"
-msgstr ""
-
-#: lib/libalpm/db.c:181
-#, c-format
-msgid "registering database '%s'"
-msgstr ""
-
-#: lib/libalpm/db.c:186
-#, c-format
-msgid "database directory '%s' does not exist, creating it"
-msgstr ""
-
-#: lib/libalpm/db.c:197
-#, c-format
-msgid "opening database '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:131
-msgid "started sorting dependencies"
-msgstr ""
-
-#: lib/libalpm/deps.c:136
-msgid "possible dependency cycle detected"
-msgstr ""
-
-#: lib/libalpm/deps.c:183
-msgid "sorting dependencies finished"
-msgstr ""
-
-#: lib/libalpm/deps.c:225 lib/libalpm/deps.c:310
-msgid "null package found in package list"
-msgstr ""
-
-#: lib/libalpm/deps.c:230
-#, c-format
-msgid "cannot find package installed '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:261
-#, c-format
-msgid "checkdeps: dependency '%s' has moved from '%s' to '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:280
-#, c-format
-msgid "checkdeps: dependency '%s' satisfied by installed package '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:289
-#, c-format
-msgid "checkdeps: updated '%s' won't satisfy a dependency of '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:359
-#, c-format
-msgid "missing dependency '%s' for package '%s'"
-msgstr ""
-
-#: lib/libalpm/deps.c:409
-#, c-format
-msgid "checkdeps: found %s as required by %s"
-msgstr ""
-
-#: lib/libalpm/deps.c:485
-#, c-format
-msgid "excluding %s -- explicitly installed"
-msgstr ""
+#: lib/libalpm/be_files.c:292 lib/libalpm/be_files.c:429
+#: lib/libalpm/be_files.c:452 lib/libalpm/be_files.c:563
+#: lib/libalpm/be_files.c:641 lib/libalpm/be_files.c:669
+#: lib/libalpm/package.c:787
+#, fuzzy, c-format
+msgid "could not open file %s: %s\n"
+msgstr "не могу Ñкопировать временный файл в %s (%s)"
-#: lib/libalpm/deps.c:532
+#: lib/libalpm/cache.c:62
#, c-format
-msgid "cannot find package \"%s\" or anything that provides it!"
+msgid "adding '%s' to package cache for db '%s'\n"
msgstr ""
-#: lib/libalpm/deps.c:540 lib/libalpm/deps.c:551
-#, c-format
-msgid "adding '%s' to the targets"
-msgstr ""
+#: lib/libalpm/db.c:285
+#, fuzzy, c-format
+msgid "could not remove database entry %s%s\n"
+msgstr "не могу удалить из базы данных запиÑÑŒ %s%s"
-#: lib/libalpm/deps.c:583
-msgid "started resolving dependencies"
+#: lib/libalpm/db.c:553
+msgid "attempt to re-register the 'local' DB\n"
msgstr ""
-#: lib/libalpm/deps.c:601
-#, c-format
-msgid "%s provides dependency %s -- skipping"
-msgstr ""
+#: lib/libalpm/db.c:562 lib/libalpm/db.c:613
+#, fuzzy
+msgid "database path is undefined\n"
+msgstr "база данных не инициализирована"
-#: lib/libalpm/deps.c:630
-#, c-format
-msgid ""
-"cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
-msgstr ""
+#: lib/libalpm/deps.c:173
+#, fuzzy
+msgid "dependency cycle detected:\n"
+msgstr "обнаружена цикличеÑÐºÐ°Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑ‚ÑŒ: %s"
-#: lib/libalpm/deps.c:647
+#: lib/libalpm/deps.c:175
#, c-format
-msgid "dependency %s is already in the target list -- skipping"
+msgid "%s will be removed after its %s dependency\n"
msgstr ""
-#: lib/libalpm/deps.c:667
+#: lib/libalpm/deps.c:177
#, c-format
-msgid "pulling dependency %s (needed by %s)"
+msgid "%s will be installed before its %s dependency\n"
msgstr ""
-#: lib/libalpm/deps.c:671
-#, c-format
-msgid "cannot resolve dependencies for \"%s\""
+#: lib/libalpm/deps.c:573
+#, fuzzy, c-format
+msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "не удаетÑÑ ÑƒÐ´Ð¾Ð²Ð»ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚ÑŒ завиÑимоÑти Ð´Ð»Ñ \"%s\""
-#: lib/libalpm/deps.c:687
-#, c-format
-msgid "dependency cycle detected: %s"
-msgstr "обнаружена цикличеÑÐºÐ°Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑ‚ÑŒ: %s"
-
-#: lib/libalpm/deps.c:691
-msgid "finished resolving dependencies"
-msgstr ""
-
-#: lib/libalpm/error.c:40
+#: lib/libalpm/error.c:43
msgid "out of memory!"
msgstr ""
-#: lib/libalpm/error.c:42
+#: lib/libalpm/error.c:45
msgid "unexpected system error"
msgstr ""
-#: lib/libalpm/error.c:44
+#: lib/libalpm/error.c:47
msgid "insufficient privileges"
msgstr ""
-#: lib/libalpm/error.c:46
+#: lib/libalpm/error.c:49
msgid "could not find or read file"
msgstr ""
-#: lib/libalpm/error.c:48
+#: lib/libalpm/error.c:51
+#, fuzzy
+msgid "could not find or read directory"
+msgstr "не удаетÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ или прочитать пакет"
+
+#: lib/libalpm/error.c:53
msgid "wrong or NULL argument passed"
msgstr ""
-#: lib/libalpm/error.c:51
+#: lib/libalpm/error.c:56
msgid "library not initialized"
msgstr ""
-#: lib/libalpm/error.c:53
+#: lib/libalpm/error.c:58
msgid "library already initialized"
msgstr ""
-#: lib/libalpm/error.c:55
+#: lib/libalpm/error.c:60
msgid "unable to lock database"
msgstr "не удаетÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ базу данных"
-#: lib/libalpm/error.c:58
+#: lib/libalpm/error.c:63
msgid "could not open database"
msgstr "не удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ базу данных"
-#: lib/libalpm/error.c:60
+#: lib/libalpm/error.c:65
msgid "could not create database"
msgstr "не удаетÑÑ Ñоздать базу данных"
-#: lib/libalpm/error.c:62
+#: lib/libalpm/error.c:67
msgid "database not initialized"
msgstr "база данных не инициализирована"
-#: lib/libalpm/error.c:64
+#: lib/libalpm/error.c:69
msgid "database already registered"
msgstr "база данных уже зарегиÑтрирована"
-#: lib/libalpm/error.c:66
+#: lib/libalpm/error.c:71
msgid "could not find database"
msgstr "не удаетÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ базу данных"
-#: lib/libalpm/error.c:68
+#: lib/libalpm/error.c:73
msgid "could not update database"
msgstr "не удаетÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ базу данных"
-#: lib/libalpm/error.c:70
+#: lib/libalpm/error.c:75
msgid "could not remove database entry"
msgstr "не удаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ запиÑÑŒ в базе данных"
-#: lib/libalpm/error.c:73
+#: lib/libalpm/error.c:78
msgid "invalid url for server"
msgstr "неверный url"
-#: lib/libalpm/error.c:80
+#: lib/libalpm/error.c:85
msgid "could not set parameter"
msgstr "ну могу уÑтановить параметр"
-#: lib/libalpm/error.c:83
+#: lib/libalpm/error.c:88
msgid "transaction already initialized"
msgstr ""
-#: lib/libalpm/error.c:85 lib/libalpm/error.c:89
+#: lib/libalpm/error.c:90 lib/libalpm/error.c:94
msgid "transaction not initialized"
msgstr ""
-#: lib/libalpm/error.c:87
+#: lib/libalpm/error.c:92
msgid "duplicate target"
msgstr ""
-#: lib/libalpm/error.c:91
+#: lib/libalpm/error.c:96
msgid "transaction not prepared"
msgstr ""
-#: lib/libalpm/error.c:93
+#: lib/libalpm/error.c:98
msgid "transaction aborted"
msgstr ""
-#: lib/libalpm/error.c:95
+#: lib/libalpm/error.c:100
msgid "operation not compatible with the transaction type"
msgstr ""
-#: lib/libalpm/error.c:97 lib/libalpm/sync.c:994
+#: lib/libalpm/error.c:102
msgid "could not commit transaction"
msgstr ""
-#: lib/libalpm/error.c:99
+#: lib/libalpm/error.c:104
msgid "could not download all files"
msgstr "не могу загрузить вÑе файлы"
-#: lib/libalpm/error.c:102
+#: lib/libalpm/error.c:107
msgid "could not find or read package"
msgstr "не удаетÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ или прочитать пакет"
-#: lib/libalpm/error.c:104
+#: lib/libalpm/error.c:109
msgid "invalid or corrupted package"
msgstr "пакет неправильный или поврежден"
-#: lib/libalpm/error.c:106
+#: lib/libalpm/error.c:111
msgid "cannot open package file"
msgstr "не удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файл пакета"
-#: lib/libalpm/error.c:108
+#: lib/libalpm/error.c:113
msgid "cannot load package data"
msgstr "не удаетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ данные пакета"
-#: lib/libalpm/error.c:110
+#: lib/libalpm/error.c:115
msgid "package already installed"
msgstr "пакет уже уÑтановлен"
-#: lib/libalpm/error.c:112
+#: lib/libalpm/error.c:117
msgid "package not installed or lesser version"
msgstr ""
-#: lib/libalpm/error.c:114
+#: lib/libalpm/error.c:119
msgid "cannot remove all files for package"
msgstr "не могу удалить вÑе файлы пакета"
-#: lib/libalpm/error.c:116
+#: lib/libalpm/error.c:121
msgid "package name is not valid"
msgstr "неверное Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°"
-#: lib/libalpm/error.c:118
+#: lib/libalpm/error.c:123
msgid "corrupted package"
msgstr "пакет поврежден"
-#: lib/libalpm/error.c:120
+#: lib/libalpm/error.c:125
msgid "no such repository"
msgstr "нет такого репозиториÑ"
-#: lib/libalpm/error.c:123
+#: lib/libalpm/error.c:128
+#, fuzzy
+msgid "corrupted delta"
+msgstr "пакет поврежден"
+
+#: lib/libalpm/error.c:130
+msgid "delta patch failed"
+msgstr ""
+
+#: lib/libalpm/error.c:133
msgid "group not found"
msgstr "группа не найдена"
-#: lib/libalpm/error.c:126
+#: lib/libalpm/error.c:136
msgid "could not satisfy dependencies"
msgstr "не удаетÑÑ ÑƒÐ´Ð¾Ð²Ð»ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚ÑŒ завиÑимоÑти"
-#: lib/libalpm/error.c:128
+#: lib/libalpm/error.c:138
msgid "conflicting dependencies"
msgstr ""
-#: lib/libalpm/error.c:130
+#: lib/libalpm/error.c:140
msgid "conflicting files"
msgstr ""
-#: lib/libalpm/error.c:133
+#: lib/libalpm/error.c:143
msgid "user aborted the operation"
msgstr "пользователь прервал операцию"
-#: lib/libalpm/error.c:135
+#: lib/libalpm/error.c:145
msgid "internal error"
msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
-#: lib/libalpm/error.c:137
+#: lib/libalpm/error.c:147
msgid "libarchive error"
msgstr "ошибка в libarchive"
-#: lib/libalpm/error.c:139
-msgid "not enough space on disk"
-msgstr "недоÑтаточно меÑта на диÑке"
-
-#: lib/libalpm/error.c:142
+#: lib/libalpm/error.c:150
msgid "not confirmed"
msgstr ""
-#: lib/libalpm/error.c:145
-msgid "bad configuration section name"
-msgstr "неверное название Ñекции в конфигурационном файле"
-
-#: lib/libalpm/error.c:147
-msgid "'local' is reserved and cannot be used as a repository name"
-msgstr ""
-"название 'local' зарезервировано и не может иÑпользоватьÑÑ ÐºÐ°Ðº название "
-"репозиториÑ"
-
-#: lib/libalpm/error.c:149
-msgid "syntax error in config file"
-msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в конфигурационном файле"
-
-#: lib/libalpm/error.c:151
-msgid "all directives must belong to a section"
-msgstr "вÑе директивы должны находитьÑÑ Ð² ÑоответÑтвующих ÑекциÑÑ…"
-
-#: lib/libalpm/error.c:153
+#: lib/libalpm/error.c:152
msgid "invalid regular expression"
msgstr "неверное регулÑрное выражение"
-#: lib/libalpm/error.c:156
+#: lib/libalpm/error.c:155
msgid "connection to remote host failed"
msgstr "не удалоÑÑŒ подключитьÑÑ Ðº удаленному хоÑту"
-#: lib/libalpm/error.c:159
+#: lib/libalpm/error.c:158
msgid "unexpected error"
msgstr "Ð½ÐµÐ¿Ñ€ÐµÐ´Ð²Ð¸Ð´ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
-#: lib/libalpm/handle.c:163
-#, c-format
-msgid "cannot canonicalize specified root path '%s'"
-msgstr ""
-
-#: lib/libalpm/handle.c:175
-#, c-format
-msgid "option 'root' = %s"
-msgstr ""
-
-#: lib/libalpm/handle.c:195
-#, c-format
-msgid "option 'dbpath' = %s"
-msgstr ""
-
-#: lib/libalpm/handle.c:211
-#, c-format
-msgid "option 'cachedir' = %s"
-msgstr ""
-
-#: lib/libalpm/md5driver.c:56
-#, c-format
-msgid "%s can't be opened\n"
-msgstr ""
-
-#: lib/libalpm/md5driver.c:74
-#, c-format
-msgid "md5(%s) = %s"
-msgstr ""
+#: lib/libalpm/package.c:124
+#, fuzzy, c-format
+msgid "could not get md5sum for package %s-%s\n"
+msgstr "не могу получить контрольную Ñумму md5sum Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s-%s"
-#: lib/libalpm/package.c:147
-#, c-format
-msgid "%s-%s: ignoring package upgrade (%s)"
-msgstr ""
+#: lib/libalpm/package.c:133
+#, fuzzy, c-format
+msgid "md5sums do not match for package %s-%s\n"
+msgstr "контрольные Ñуммы md5sum Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s-%s не Ñовпали"
-#: lib/libalpm/package.c:158
-#, c-format
-msgid "%s: forcing upgrade to version %s"
+#: lib/libalpm/package.c:737
+#, fuzzy, c-format
+msgid "%s: forcing upgrade to version %s\n"
msgstr "%s: принудительно обновлÑÑŽ до верÑии %s"
-#: lib/libalpm/package.c:163
-#, c-format
-msgid "%s: local (%s) is newer than %s (%s)"
+#: lib/libalpm/package.c:742
+#, fuzzy, c-format
+msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ (%s) новее, чем в %s (%s)"
-#: lib/libalpm/package.c:171
-#, c-format
-msgid "%s-%s: delaying upgrade of package (%s)"
-msgstr ""
-
-#: lib/libalpm/package.c:222 lib/libalpm/package.c:281
-#, c-format
-msgid "%s: syntax error in description file line %d"
-msgstr ""
+#: lib/libalpm/package.c:750
+#, fuzzy, c-format
+msgid "%s-%s: delaying upgrade of package (%s)\n"
+msgstr "%s: принудительно обновлÑÑŽ до верÑии %s"
-#: lib/libalpm/package.c:355
-msgid "could not parse the package description file"
-msgstr ""
+#: lib/libalpm/package.c:931
+#, fuzzy, c-format
+msgid "could not parse package description file in %s\n"
+msgstr "не могу удалить временный файл %s"
-#: lib/libalpm/package.c:359
-#, c-format
-msgid "missing package name in %s"
-msgstr ""
+#: lib/libalpm/package.c:936
+#, fuzzy, c-format
+msgid "missing package name in %s\n"
+msgstr "отÑутÑтвует ÑпиÑок файлов пакета в %s, генерирую его"
-#: lib/libalpm/package.c:363
-#, c-format
-msgid "missing package version in %s"
-msgstr ""
+#: lib/libalpm/package.c:940
+#, fuzzy, c-format
+msgid "missing package version in %s\n"
+msgstr "отÑутÑтвует ÑпиÑок файлов пакета в %s, генерирую его"
-#: lib/libalpm/package.c:398
-#, c-format
-msgid "could not remove tempfile %s"
+#: lib/libalpm/package.c:970
+#, fuzzy, c-format
+msgid "could not remove tempfile %s\n"
msgstr "не могу удалить временный файл %s"
-#: lib/libalpm/package.c:411 lib/libalpm/package.c:418
-#, c-format
-msgid "error while reading package: %s"
+#: lib/libalpm/package.c:985 lib/libalpm/package.c:998
+#, fuzzy, c-format
+msgid "error while reading package %s: %s\n"
msgstr "ошибка при чтении пакета: %s"
-#: lib/libalpm/package.c:424
-msgid "missing package metadata"
-msgstr ""
-
-#: lib/libalpm/package.c:431
-#, c-format
-msgid "missing package filelist in %s, generating one"
+#: lib/libalpm/package.c:1005
+#, fuzzy, c-format
+msgid "missing package metadata in %s\n"
msgstr "отÑутÑтвует ÑпиÑок файлов пакета в %s, генерирую его"
-#: lib/libalpm/package.c:570
-#, c-format
-msgid "adding '%s' in requiredby field for '%s'"
-msgstr "добавлÑÑŽ '%s' в поле requiredby Ð´Ð»Ñ '%s'"
-
-#: lib/libalpm/package.c:584
-#, c-format
-msgid "adding '%s' in requiredby field for '%s' (provides: %s)"
-msgstr "добавлÑÑŽ '%s' в поле requiredby Ð´Ð»Ñ '%s' (обеÑпечивает :%s)"
-
-#: lib/libalpm/remove.c:79
-#, c-format
-msgid "could not find %s in database"
-msgstr "не могу найти %s в базе данных"
-
-#: lib/libalpm/remove.c:93
-#, c-format
-msgid "adding %s in the targets list"
-msgstr ""
+#: lib/libalpm/package.c:1012
+#, fuzzy, c-format
+msgid "missing package filelist in %s, generating one\n"
+msgstr "отÑутÑтвует ÑпиÑок файлов пакета в %s, генерирую его"
#: lib/libalpm/remove.c:121
-#, c-format
-msgid "pulling %s in the targets list"
-msgstr ""
-
-#: lib/libalpm/remove.c:124
-#, c-format
-msgid "could not find %s in database -- skipping"
+#, fuzzy, c-format
+msgid "could not find %s in database -- skipping\n"
msgstr "не могу найти %s в базе данных -- пропуÑкаю"
-#: lib/libalpm/remove.c:142
-msgid "finding removable dependencies"
-msgstr "ищу уÑтранимые завиÑимоÑти"
-
-#: lib/libalpm/remove.c:175
-#, c-format
-msgid "cannot remove file '%s': %s"
+#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:243
+#, fuzzy, c-format
+msgid "cannot remove file '%s': %s\n"
msgstr "не могу удалить файл '%s': %s"
-#: lib/libalpm/remove.c:213
-#, c-format
-msgid "Skipping removal of '%s' due to NoUpgrade"
-msgstr "Пакет '%s' не будет удален, так как он входит в ÑпиÑок NoUpgrade"
-
-#: lib/libalpm/remove.c:220
-#, c-format
-msgid "file %s does not exist"
-msgstr "файл %s не ÑущеÑтвует"
-
-#: lib/libalpm/remove.c:227
-#, c-format
-msgid "keeping directory %s"
-msgstr "ÑохранÑÑŽ директорию %s"
-
-#: lib/libalpm/remove.c:229
-#, c-format
-msgid "removing directory %s"
-msgstr "удалÑÑŽ директорию %s"
-
-#: lib/libalpm/remove.c:236
-#, c-format
-msgid "%s is in trans->skip_remove, skipping removal"
-msgstr ""
-
-#: lib/libalpm/remove.c:250
-#, c-format
-msgid "transaction is set to NOSAVE, not backing up '%s'"
-msgstr ""
-
-#: lib/libalpm/remove.c:254
-#, c-format
-msgid "unlinking %s"
-msgstr ""
-
-#: lib/libalpm/remove.c:261
-#, c-format
-msgid "cannot remove file %s: %s"
-msgstr "не могу удалить файл %s: %s"
-
-#: lib/libalpm/remove.c:294
-#, c-format
-msgid "removing package %s-%s"
-msgstr "удалÑÑŽ пакет %s-%s"
-
-#: lib/libalpm/remove.c:309
-#, c-format
-msgid "not removing package '%s', can't remove all files"
-msgstr "пакет '%s' не удален, так как не удаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ вÑе файлы"
-
-#: lib/libalpm/remove.c:316
-#, c-format
-msgid "removing %d files"
-msgstr "удалÑÑŽ %d файлов"
-
#: lib/libalpm/remove.c:337
-#, c-format
-msgid "removing database entry '%s'"
-msgstr "удалÑÑŽ запиÑÑŒ '%s' в базе данных"
+#, fuzzy, c-format
+msgid "could not remove database entry %s-%s\n"
+msgstr "не могу удалить из базы данных запиÑÑŒ %s%s"
-#: lib/libalpm/remove.c:339
-#, c-format
-msgid "could not remove database entry %s-%s"
-msgstr ""
+#: lib/libalpm/remove.c:342
+#, fuzzy, c-format
+msgid "could not remove entry '%s' from cache\n"
+msgstr "не могу добавить запиÑÑŒ '%s' в кÑш"
-#: lib/libalpm/remove.c:344
+#: lib/libalpm/server.c:56
#, c-format
-msgid "could not remove entry '%s' from cache"
+msgid "url '%s' is invalid, ignoring\n"
msgstr ""
-#: lib/libalpm/sha1.c:397
-#, c-format
-msgid "sha1: %s can't be opened\n"
+#: lib/libalpm/server.c:60
+msgid "url scheme not specified, assuming http\n"
msgstr ""
-#: lib/libalpm/sha1.c:412
-#, c-format
-msgid "sha1(%s) = %s"
+#: lib/libalpm/server.c:241
+msgid "disk"
msgstr ""
-#: lib/libalpm/sync.c:183
-msgid "checking for package upgrades"
-msgstr "проверÑÑŽ наличие обновлений"
-
-#: lib/libalpm/sync.c:215
-#, c-format
-msgid "%s-%s elected for upgrade (%s => %s)"
-msgstr "%s-%s выбран Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ (%s => %s)"
+#: lib/libalpm/server.c:245
+#, fuzzy, c-format
+msgid "failed retrieving file '%s' from %s : %s\n"
+msgstr "не удалоÑÑŒ получить некоторые файлы Ñ %s\n"
-#: lib/libalpm/sync.c:270
-#, c-format
-msgid "searching for target in repo '%s'"
+#: lib/libalpm/server.c:275
+msgid "cannot resume download, starting over\n"
msgstr ""
-#: lib/libalpm/sync.c:278 lib/libalpm/sync.c:301
-#, c-format
-msgid "target '%s' not found -- looking for provisions"
-msgstr ""
+#: lib/libalpm/server.c:288
+#, fuzzy, c-format
+msgid "cannot write to file '%s'\n"
+msgstr "не могу удалить файл '%s': %s"
-#: lib/libalpm/sync.c:283 lib/libalpm/sync.c:306
-#, c-format
-msgid "found '%s' as a provision for '%s'"
-msgstr ""
+#: lib/libalpm/server.c:307
+#, fuzzy, c-format
+msgid "error downloading '%s': %s\n"
+msgstr "ошибка при чтении пакета: %s"
-#: lib/libalpm/sync.c:290
-#, c-format
-msgid "repository '%s' not found"
-msgstr "репозиторий '%s' не найден"
+#: lib/libalpm/server.c:319
+#, fuzzy, c-format
+msgid "error writing to file '%s': %s\n"
+msgstr "не могу удалить файл '%s': %s"
-#: lib/libalpm/sync.c:331
-#, c-format
-msgid "%s-%s is up to date -- skipping"
-msgstr "%s-%s не уÑтарел -- пропуÑкаю"
+#: lib/libalpm/server.c:387
+#, fuzzy, c-format
+msgid "could not chdir to %s\n"
+msgstr "не могу извлечь %s (%s)"
-#: lib/libalpm/sync.c:354
-#, c-format
-msgid "adding target '%s' to the transaction set"
+#: lib/libalpm/server.c:394
+msgid "running XferCommand: fork failed!\n"
msgstr ""
-#: lib/libalpm/sync.c:402
-msgid "resolving target's dependencies"
-msgstr "разрешаю завиÑимоÑти пакетов"
-
-#: lib/libalpm/sync.c:422
-#, c-format
-msgid "adding package %s-%s to the transaction targets"
+#: lib/libalpm/server.c:445
+msgid "URL does not contain a file for download\n"
msgstr ""
-#: lib/libalpm/sync.c:463
-msgid "looking for unresolvable dependencies"
-msgstr "ищу неразрешимые завиÑимоÑти"
-
-#: lib/libalpm/sync.c:494
-#, c-format
-msgid "package '%s' conflicts with '%s'"
-msgstr "пакет '%s' конфликтует Ñ '%s'"
-
-#: lib/libalpm/sync.c:516
-#, c-format
-msgid "'%s' not found in transaction set -- skipping"
-msgstr ""
+#: lib/libalpm/server.c:458
+#, fuzzy, c-format
+msgid "failed to download %s\n"
+msgstr "не могу загрузить вÑе файлы"
-#: lib/libalpm/sync.c:527
-#, c-format
-msgid "package '%s' provides its own conflict"
-msgstr ""
+#: lib/libalpm/sync.c:135
+#, fuzzy, c-format
+msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
+msgstr "%s-%s: игнорирую обновление Ñтого пакета (он будет заменен на %s-%s)"
-#: lib/libalpm/sync.c:550 lib/libalpm/sync.c:555
-#, c-format
-msgid "'%s' is in the target list -- keeping it"
-msgstr ""
+#: lib/libalpm/sync.c:250
+#, fuzzy, c-format
+msgid "%s: ignoring package upgrade (%s => %s)\n"
+msgstr "%s-%s: игнорирую обновление Ñтого пакета (он будет заменен на %s-%s)"
-#: lib/libalpm/sync.c:567 lib/libalpm/sync.c:604
-#, c-format
-msgid "removing '%s' from target list"
-msgstr ""
+#: lib/libalpm/sync.c:320
+#, fuzzy, c-format
+msgid "repository '%s' not found\n"
+msgstr "репозиторий '%s' не найден"
-#: lib/libalpm/sync.c:576
-#, c-format
-msgid "resolving package '%s' conflict"
-msgstr "разрешаю конфликт пакета '%s'"
+#: lib/libalpm/sync.c:354
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- skipping\n"
+msgstr "%s-%s не уÑтарел -- пропуÑкаю"
-#: lib/libalpm/sync.c:599
-#, c-format
-msgid "electing '%s' for removal"
-msgstr "помечаю '%s' Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ"
+#: lib/libalpm/sync.c:358
+#, fuzzy, c-format
+msgid "%s-%s is up to date -- reinstalling\n"
+msgstr "%s-%s не уÑтарел -- пропуÑкаю"
-#: lib/libalpm/sync.c:610 lib/libalpm/sync.c:626
-msgid "unresolvable package conflicts detected"
+#: lib/libalpm/sync.c:613 lib/libalpm/sync.c:618
+#, fuzzy
+msgid "unresolvable package conflicts detected\n"
msgstr "обнаружен неразрешимый конфликт пакетов"
-#: lib/libalpm/sync.c:678
-msgid "checking dependencies of packages designated for removal"
-msgstr "проверÑÑŽ завиÑимоÑти пакетов отмеченных Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ"
-
-#: lib/libalpm/sync.c:692
-msgid "something has gone horribly wrong"
-msgstr "произошло что-то ужаÑное и непонÑтное"
-
-#: lib/libalpm/sync.c:712
+#: lib/libalpm/sync.c:628
#, c-format
-msgid "found '%s' as a provision for '%s' -- conflict aborted"
+msgid "malloc failure: could not allocate %zd bytes\n"
msgstr ""
-#: lib/libalpm/sync.c:808
-#, c-format
-msgid "%s is already in the cache\n"
-msgstr "%s уже еÑÑ‚ÑŒ в кÑше\n"
-
-#: lib/libalpm/sync.c:819
-#, c-format
-msgid "no %s cache exists, creating...\n"
-msgstr "кÑш %s не ÑущеÑтвует, Ñоздаю...\n"
-
-#: lib/libalpm/sync.c:820
-#, c-format
-msgid "warning: no %s cache exists, creating..."
-msgstr "предупреждение: кÑш %s не ÑущеÑтвует, Ñоздаю..."
-
#: lib/libalpm/sync.c:825
-msgid "couldn't create package cache, using /tmp instead\n"
-msgstr "не могу Ñоздать кÑш пакета, будет иÑпользован /tmp\n"
-
-#: lib/libalpm/sync.c:826
-msgid "warning: couldn't create package cache, using /tmp instead"
-msgstr "предупреждение: не могу Ñоздать кÑш пакета, будет иÑпользован /tmp"
-
-#: lib/libalpm/sync.c:833
#, c-format
-msgid "failed to retrieve some files from %s\n"
-msgstr "не удалоÑÑŒ получить некоторые файлы Ñ %s\n"
+msgid "command: %s\n"
+msgstr ""
-#: lib/libalpm/sync.c:863 lib/libalpm/sync.c:875
-#, c-format
-msgid "can't get md5 or sha1 checksum for package %s\n"
+#: lib/libalpm/sync.c:888 lib/libalpm/sync.c:896
+#, fuzzy, c-format
+msgid "can't get md5 checksum for file %s\n"
msgstr "не удалоÑÑŒ получить md5 или sha1 контрольную Ñумму Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s\n"
-#: lib/libalpm/sync.c:894
-#, c-format
-msgid "archive %s was corrupted (bad MD5 or SHA1 checksum)\n"
+#: lib/libalpm/sync.c:910
+#, fuzzy, c-format
+msgid "file %s was corrupted (bad MD5 checksum)\n"
msgstr "архив %s был поврежден (не ÑходитÑÑ MD5 или SHA1 ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма)\n"
-#: lib/libalpm/sync.c:896
+#: lib/libalpm/sync.c:1056
#, c-format
-msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
-msgstr "архив %s поврежден (не ÑходитÑÑ MD5 или SHA1 ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма)\n"
-
-#: lib/libalpm/sync.c:917
-msgid "could not create removal transaction"
-msgstr ""
-
-#: lib/libalpm/sync.c:923
-msgid "could not initialize the removal transaction"
-msgstr ""
-
-#: lib/libalpm/sync.c:943
-msgid "removing conflicting and to-be-replaced packages"
-msgstr ""
+msgid "failed to retrieve some files from %s\n"
+msgstr "не удалоÑÑŒ получить некоторые файлы Ñ %s\n"
-#: lib/libalpm/sync.c:945
-msgid "could not prepare removal transaction"
-msgstr ""
+#: lib/libalpm/sync.c:1137
+#, fuzzy
+msgid "could not create removal transaction\n"
+msgstr "не удаетÑÑ Ñоздать базу данных"
-#: lib/libalpm/sync.c:951
-msgid "could not commit removal transaction"
+#: lib/libalpm/sync.c:1143
+msgid "could not initialize the removal transaction\n"
msgstr ""
-#: lib/libalpm/sync.c:958
-msgid "installing packages"
-msgstr "уÑтанавливаю пакеты"
-
-#: lib/libalpm/sync.c:961
-msgid "could not create transaction"
-msgstr ""
+#: lib/libalpm/sync.c:1165
+#, fuzzy
+msgid "could not prepare removal transaction\n"
+msgstr "не удаетÑÑ Ñоздать базу данных"
-#: lib/libalpm/sync.c:966
-msgid "could not initialize transaction"
+#: lib/libalpm/sync.c:1171
+msgid "could not commit removal transaction\n"
msgstr ""
-#: lib/libalpm/sync.c:989
-msgid "could not prepare transaction"
-msgstr ""
+#: lib/libalpm/sync.c:1182
+#, fuzzy
+msgid "could not create transaction\n"
+msgstr "не удаетÑÑ Ñоздать базу данных"
-#: lib/libalpm/sync.c:1001
-msgid "updating database for replaced packages' dependencies"
+#: lib/libalpm/sync.c:1187
+msgid "could not initialize transaction\n"
msgstr ""
-#: lib/libalpm/sync.c:1030
-#, c-format
-msgid "could not update requiredby for database entry %s-%s"
-msgstr ""
-
-#: lib/libalpm/sync.c:1039
-#, c-format
-msgid "could not update new database entry %s-%s"
-msgstr ""
+#: lib/libalpm/sync.c:1214
+#, fuzzy
+msgid "could not prepare transaction\n"
+msgstr "не удаетÑÑ Ñоздать базу данных"
-#: lib/libalpm/sync.c:1079
-#, c-format
-msgid "found package '%s-%s' in sync"
+#: lib/libalpm/sync.c:1219
+msgid "could not commit transaction\n"
msgstr ""
-#: lib/libalpm/sync.c:1085
-#, c-format
-msgid "package '%s' not found in sync"
-msgstr "пакет '%s' не найден в базе данных"
+#: lib/libalpm/trans.c:214
+#, fuzzy, c-format
+msgid "could not remove lock file %s\n"
+msgstr "не могу удалить lock-файл %s"
-#: lib/libalpm/trans.c:271
+#: lib/libalpm/trans.c:483
#, c-format
-msgid "updating dependency packages 'requiredby' fields for %s-%s"
-msgstr ""
-
-#: lib/libalpm/trans.c:274
-msgid "package has no dependencies, no other packages to update"
+msgid "No /bin/sh in root dir (%s), aborting scriptlet\n"
msgstr ""
-#: lib/libalpm/trans.c:311 lib/libalpm/trans.c:341
-#, c-format
-msgid "updating 'requiredby' field for package '%s'"
-msgstr ""
+#: lib/libalpm/trans.c:494
+#, fuzzy
+msgid "could not create temp directory\n"
+msgstr "не могу определить текущую рабочую директорию"
-#: lib/libalpm/trans.c:326 lib/libalpm/trans.c:356
-#, c-format
-msgid "could not update 'requiredby' database entry %s-%s"
-msgstr ""
+#: lib/libalpm/trans.c:536
+#, fuzzy, c-format
+msgid "could not change directory to %s (%s)\n"
+msgstr "не могу извлечь %s (%s)"
-#: lib/libalpm/trans.c:333
-#, c-format
-msgid "could not find dependency '%s'"
-msgstr ""
+#: lib/libalpm/trans.c:554
+#, fuzzy, c-format
+msgid "could not fork a new process (%s)\n"
+msgstr "не могу переименовать %s (%s)"
-#: lib/libalpm/util.c:142
-#, c-format
-msgid "failed to make path '%s' : %s"
-msgstr ""
+#: lib/libalpm/trans.c:564
+#, fuzzy, c-format
+msgid "could not change the root directory (%s)\n"
+msgstr "не могу определить текущую рабочую директорию"
-#: lib/libalpm/util.c:280
-#, c-format
-msgid "could not open %s: %s\n"
-msgstr ""
+#: lib/libalpm/trans.c:569
+#, fuzzy, c-format
+msgid "could not change directory to / (%s)\n"
+msgstr "не могу извлечь %s (%s)"
-#: lib/libalpm/util.c:293
+#: lib/libalpm/trans.c:578
#, c-format
-msgid "could not extract %s: %s\n"
+msgid "call to popen failed (%s)"
msgstr ""
-#: lib/libalpm/util.c:350
+#: lib/libalpm/trans.c:597
#, c-format
-msgid "logaction called: %s"
+msgid "call to waitpid failed (%s)\n"
msgstr ""
-#: lib/libalpm/util.c:445
-msgid "could not create temp directory"
+#: lib/libalpm/trans.c:606
+msgid "scriptlet failed to execute correctly\n"
msgstr ""
-#: lib/libalpm/util.c:472
-#, c-format
-msgid "could not change directory to %s (%s)"
-msgstr ""
+#: lib/libalpm/trans.c:615
+#, fuzzy, c-format
+msgid "could not remove tmpdir %s\n"
+msgstr "не могу удалить временный файл %s"
-#: lib/libalpm/util.c:476
+#: lib/libalpm/util.c:204
#, c-format
-msgid "executing %s script..."
+msgid "failed to make path '%s' : %s\n"
msgstr ""
-#: lib/libalpm/util.c:489
+#: lib/libalpm/util.c:389
#, c-format
-msgid "could not fork a new process (%s)"
+msgid "could not open %s: %s\n"
msgstr ""
-#: lib/libalpm/util.c:496
+#: lib/libalpm/util.c:573
#, c-format
-msgid "chrooting in %s"
-msgstr ""
+msgid "no %s cache exists, creating...\n"
+msgstr "кÑш %s не ÑущеÑтвует, Ñоздаю...\n"
-#: lib/libalpm/util.c:498
-#, c-format
-msgid "could not change the root directory (%s)"
-msgstr ""
+#: lib/libalpm/util.c:593
+#, fuzzy
+msgid "couldn't create package cache, using /tmp instead\n"
+msgstr "не могу Ñоздать кÑш пакета, будет иÑпользован /tmp\n"
-#: lib/libalpm/util.c:502
+#: lib/libalpm/util.c:643
#, c-format
-msgid "could not change directory to / (%s)"
+msgid "md5: %s can't be opened\n"
msgstr ""
-#: lib/libalpm/util.c:506
+#: lib/libalpm/util.c:645
#, c-format
-msgid "executing \"%s\""
+msgid "md5: %s can't be read\n"
msgstr ""
-#: lib/libalpm/util.c:509
-#, c-format
-msgid "call to popen failed (%s)"
-msgstr ""
+#~ msgid "please remove '%s' first, using -Rd"
+#~ msgstr "пожалуйÑта, уделите Ñначала '%s' иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ -Rd"
-#: lib/libalpm/util.c:541
-#, c-format
-msgid "call to waitpid failed (%s)"
-msgstr ""
+#~ msgid "could not extract %s (%s)"
+#~ msgstr "не могу извлечь %s (%s)"
-#: lib/libalpm/util.c:550
-#, c-format
-msgid "could not remove tmpdir %s"
-msgstr ""
+#~ msgid "could not update provision '%s' from '%s'"
+#~ msgstr "не могу обновить '%s' из '%s'"
-#: lib/libalpm/util.c:568
-#, c-format
-msgid "cannot read disk space information from %s: %s"
-msgstr ""
+#~ msgid "could not get sha1sum for package %s-%s"
+#~ msgstr "не могу получить контрольную Ñумму sha1sum Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s-%s"
-#: lib/libalpm/util.c:609
-#, c-format
-msgid "check_freespace: total pkg size: %lld, disk space: %lld"
-msgstr ""
+#~ msgid "sha1sums do not match for package %s-%s"
+#~ msgstr "контрольные Ñуммы sha1sum Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s-%s не Ñовпали"
-#: lib/libalpm/versioncmp.c:279
-#, c-format
-msgid "depcmp: %s-%s %s %s-%s => %s"
-msgstr ""
+#~ msgid "cannot remove file %s: %s"
+#~ msgstr "не могу удалить файл %s: %s"
-#: lib/libalpm/versioncmp.c:284
-#, c-format
-msgid "depcmp: %s-%s %s %s => %s"
-msgstr ""
+#~ msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
+#~ msgstr "архив %s поврежден (не ÑходитÑÑ MD5 или SHA1 ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма)\n"
diff --git a/lib/libalpm/provide.c b/lib/libalpm/provide.c
deleted file mode 100644
index df600be7..00000000
--- a/lib/libalpm/provide.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * provide.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-/* libalpm */
-#include "provide.h"
-#include "alpm_list.h"
-#include "cache.h"
-#include "db.h"
-#include "log.h"
-
-/* return a alpm_list_t of packages in "db" that provide "package"
- */
-alpm_list_t *_alpm_db_whatprovides(pmdb_t *db, const char *package)
-{
- alpm_list_t *pkgs = NULL;
- alpm_list_t *lp;
-
- ALPM_LOG_FUNC;
-
- if(db == NULL || package == NULL || strlen(package) == 0) {
- return(NULL);
- }
-
- for(lp = _alpm_db_get_pkgcache(db); lp; lp = lp->next) {
- pmpkg_t *info = lp->data;
-
- if(alpm_list_find_str(alpm_pkg_get_provides(info), package)) {
- pkgs = alpm_list_add(pkgs, info);
- }
- }
-
- return(pkgs);
-}
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/provide.h b/lib/libalpm/provide.h
deleted file mode 100644
index b5c55db3..00000000
--- a/lib/libalpm/provide.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * provide.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-#ifndef _ALPM_PROVIDE_H
-#define _ALPM_PROVIDE_H
-
-#include "db.h"
-#include "alpm_list.h"
-#include "config.h"
-
-alpm_list_t *_alpm_db_whatprovides(pmdb_t *db, const char *package);
-
-#endif /* _ALPM_PROVIDE_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c
index 291eb7a0..349ff10c 100644
--- a/lib/libalpm/remove.c
+++ b/lib/libalpm/remove.c
@@ -1,12 +1,12 @@
/*
* remove.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -19,7 +19,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -31,15 +31,8 @@
#include <fcntl.h>
#include <string.h>
#include <limits.h>
-#if defined(__APPLE__) || defined(__OpenBSD__)
-#include <sys/syslimits.h>
-#endif
-#if defined(__APPLE__) || defined(__OpenBSD__) || defined(__sun__)
-#include <sys/stat.h>
-#endif
#include <unistd.h>
-#include <errno.h>
-#include <libintl.h>
+#include <sys/stat.h>
/* libalpm */
#include "remove.h"
@@ -47,16 +40,12 @@
#include "trans.h"
#include "util.h"
#include "error.h"
-#include "versioncmp.h"
-#include "md5.h"
-#include "sha1.h"
#include "log.h"
#include "backup.h"
#include "package.h"
#include "db.h"
#include "cache.h"
#include "deps.h"
-#include "provide.h"
#include "handle.h"
#include "alpm.h"
@@ -76,7 +65,7 @@ int _alpm_remove_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
if((info = _alpm_db_scan(db, name)) == NULL) {
/* Unimportant - just ignore it if we can't find it */
- _alpm_log(PM_LOG_DEBUG, _("could not find %s in database"), name);
+ _alpm_log(PM_LOG_DEBUG, "could not find %s in database\n", name);
RET_ERR(PM_ERR_PKG_NOT_FOUND, -1);
}
@@ -90,7 +79,7 @@ int _alpm_remove_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
}
}
- _alpm_log(PM_LOG_DEBUG, _("adding %s in the targets list"), info->name);
+ _alpm_log(PM_LOG_DEBUG, "adding %s in the targets list\n", info->name);
trans->packages = alpm_list_add(trans->packages, info);
return(0);
@@ -105,28 +94,36 @@ int _alpm_remove_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
- if(!(trans->flags & (PM_TRANS_FLAG_NODEPS)) && (trans->type != PM_TRANS_TYPE_UPGRADE)) {
- EVENT(trans, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL);
+ /* skip all checks if we are doing this removal as part of an upgrade */
+ if(trans->type == PM_TRANS_TYPE_REMOVEUPGRADE) {
+ return(0);
+ }
+
+ EVENT(trans, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL);
- _alpm_log(PM_LOG_DEBUG, _("looking for unsatisfied dependencies"));
- lp = _alpm_checkdeps(trans, db, trans->type, trans->packages);
+ if(!(trans->flags & PM_TRANS_FLAG_NODEPS)) {
+ _alpm_log(PM_LOG_DEBUG, "looking for unsatisfied dependencies\n");
+ lp = alpm_checkdeps(db, 1, trans->packages, NULL);
if(lp != NULL) {
if(trans->flags & PM_TRANS_FLAG_CASCADE) {
while(lp) {
alpm_list_t *i;
for(i = lp; i; i = i->next) {
pmdepmissing_t *miss = (pmdepmissing_t *)i->data;
- pmpkg_t *info = _alpm_db_scan(db, miss->depend.name);
+ pmpkg_t *info = _alpm_db_scan(db, miss->target);
if(info) {
- _alpm_log(PM_LOG_DEBUG, _("pulling %s in the targets list"), alpm_pkg_get_name(info));
- trans->packages = alpm_list_add(trans->packages, info);
+ if(!_alpm_pkg_find(alpm_pkg_get_name(info), trans->packages)) {
+ _alpm_log(PM_LOG_DEBUG, "pulling %s in the targets list\n",
+ alpm_pkg_get_name(info));
+ trans->packages = alpm_list_add(trans->packages, info);
+ }
} else {
- _alpm_log(PM_LOG_ERROR, _("could not find %s in database -- skipping"),
- miss->depend.name);
+ _alpm_log(PM_LOG_ERROR, _("could not find %s in database -- skipping\n"),
+ miss->target);
}
}
FREELIST(lp);
- lp = _alpm_checkdeps(trans, db, trans->type, trans->packages);
+ lp = alpm_checkdeps(db, 1, trans->packages, NULL);
}
} else {
if(data) {
@@ -137,22 +134,22 @@ int _alpm_remove_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
RET_ERR(PM_ERR_UNSATISFIED_DEPS, -1);
}
}
+ }
- if(trans->flags & PM_TRANS_FLAG_RECURSE) {
- _alpm_log(PM_LOG_DEBUG, _("finding removable dependencies"));
- trans->packages = _alpm_removedeps(db, trans->packages);
- }
-
- /* re-order w.r.t. dependencies */
- _alpm_log(PM_LOG_DEBUG, _("sorting by dependencies"));
- lp = _alpm_sortbydeps(trans->packages, PM_TRANS_TYPE_REMOVE);
- /* free the old alltargs */
- FREELISTPTR(trans->packages);
- trans->packages = lp;
+ /* re-order w.r.t. dependencies */
+ _alpm_log(PM_LOG_DEBUG, "sorting by dependencies\n");
+ lp = _alpm_sortbydeps(trans->packages, PM_TRANS_TYPE_REMOVE);
+ /* free the old alltargs */
+ alpm_list_free(trans->packages);
+ trans->packages = lp;
- EVENT(trans, PM_TRANS_EVT_CHECKDEPS_DONE, NULL, NULL);
+ if(trans->flags & PM_TRANS_FLAG_RECURSE) {
+ _alpm_log(PM_LOG_DEBUG, "finding removable dependencies\n");
+ _alpm_recursedeps(db, trans->packages, 0);
}
+ EVENT(trans, PM_TRANS_EVT_CHECKDEPS_DONE, NULL, NULL);
+
return(0);
}
@@ -169,10 +166,10 @@ static int can_remove_file(pmtrans_t *trans, const char *path)
/* If we fail write permissions due to a read-only filesystem, abort.
* Assume all other possible failures are covered somewhere else */
if(access(file, W_OK) == -1) {
- if(errno != EACCES && access(file, F_OK) == 0) {
+ if(errno != EACCES && errno != ETXTBSY && access(file, F_OK) == 0) {
/* only return failure if the file ACTUALLY exists and we can't write to
* it - ignore "chmod -w" simple permission failures */
- _alpm_log(PM_LOG_ERROR, _("cannot remove file '%s': %s"),
+ _alpm_log(PM_LOG_ERROR, _("cannot remove file '%s': %s\n"),
file, strerror(errno));
return(0);
}
@@ -182,97 +179,86 @@ static int can_remove_file(pmtrans_t *trans, const char *path)
}
/* Helper function for iterating through a package's file and deleting them
- * Used by _alpm_remove_commit
- *
- * TODO the parameters are a bit out of control here. This function doesn't
- * need to report PROGRESS, do it in the parent function.
-*/
-static void unlink_file(pmpkg_t *info, alpm_list_t *lp, alpm_list_t *targ,
- pmtrans_t *trans, int filenum, int *position)
+ * Used by _alpm_remove_commit. */
+static void unlink_file(pmpkg_t *info, alpm_list_t *lp, pmtrans_t *trans)
{
struct stat buf;
int needbackup = 0;
- double percent = 0.0;
char file[PATH_MAX+1];
ALPM_LOG_FUNC;
- if(*position != 0) {
- percent = (double)*position / filenum;
- }
-
char *hash = _alpm_needbackup(lp->data, alpm_pkg_get_backup(info));
if(hash) {
needbackup = 1;
FREE(hash);
}
-
- if(trans->type == PM_TRANS_TYPE_UPGRADE) {
+
+ snprintf(file, PATH_MAX, "%s%s", handle->root, (char *)lp->data);
+
+ if(trans->type == PM_TRANS_TYPE_REMOVEUPGRADE) {
/* check noupgrade */
if(alpm_list_find_str(handle->noupgrade, lp->data)) {
- _alpm_log(PM_LOG_DEBUG, _("Skipping removal of '%s' due to NoUpgrade"), file);
+ _alpm_log(PM_LOG_DEBUG, "Skipping removal of '%s' due to NoUpgrade\n",
+ file);
return;
}
}
- snprintf(file, PATH_MAX, "%s%s", handle->root, (char *)lp->data);
- if(lstat(file, &buf)) {
- _alpm_log(PM_LOG_DEBUG, _("file %s does not exist"), file);
+ if(_alpm_lstat(file, &buf)) {
+ _alpm_log(PM_LOG_DEBUG, "file %s does not exist\n", file);
return;
}
-
+
if(S_ISDIR(buf.st_mode)) {
if(rmdir(file)) {
- /* this is okay, other pakcages are probably using it (like /usr) */
- _alpm_log(PM_LOG_DEBUG, _("keeping directory %s"), file);
+ /* this is okay, other packages are probably using it (like /usr) */
+ _alpm_log(PM_LOG_DEBUG, "keeping directory %s\n", file);
} else {
- _alpm_log(PM_LOG_DEBUG, _("removing directory %s"), file);
+ _alpm_log(PM_LOG_DEBUG, "removing directory %s\n", file);
}
} else {
/* check the remove skip list before removing the file.
- * see the big comment block in db_find_conflicts() for an
+ * see the big comment block in db_find_fileconflicts() for an
* explanation. */
if(alpm_list_find_str(trans->skip_remove, file)) {
- _alpm_log(PM_LOG_DEBUG, _("%s is in trans->skip_remove, skipping removal"), file);
+ _alpm_log(PM_LOG_DEBUG, "%s is in trans->skip_remove, skipping removal\n",
+ file);
return;
} else if(needbackup) {
/* if the file is flagged, back it up to .pacsave */
- if(!(trans->type == PM_TRANS_TYPE_UPGRADE)) {
- /* if it was an upgrade, the file would be left alone because
- * pacman_add() would handle it */
- if(!(trans->flags & PM_TRANS_FLAG_NOSAVE)) {
- char newpath[PATH_MAX];
- snprintf(newpath, PATH_MAX, "%s.pacsave", file);
- rename(file, newpath);
- _alpm_log(PM_LOG_WARNING, _("%s saved as %s"), file, newpath);
- return;
- } else {
- _alpm_log(PM_LOG_DEBUG, _("transaction is set to NOSAVE, not backing up '%s'"), file);
- }
+ if(!(trans->flags & PM_TRANS_FLAG_NOSAVE)) {
+ char newpath[PATH_MAX];
+ snprintf(newpath, PATH_MAX, "%s.pacsave", file);
+ rename(file, newpath);
+ _alpm_log(PM_LOG_WARNING, _("%s saved as %s\n"), file, newpath);
+ return;
+ } else {
+ _alpm_log(PM_LOG_DEBUG, "transaction is set to NOSAVE, not backing up '%s'\n", file);
}
}
- _alpm_log(PM_LOG_DEBUG, _("unlinking %s"), file);
- int list_count = alpm_list_count(trans->packages); /* this way we don't have to call alpm_list_count twice during PROGRESS */
-
- PROGRESS(trans, PM_TRANS_PROGRESS_REMOVE_START, info->name, (double)(percent * 100), list_count, (list_count - alpm_list_count(targ) + 1));
- ++(*position);
+ _alpm_log(PM_LOG_DEBUG, "unlinking %s\n", file);
if(unlink(file) == -1) {
- _alpm_log(PM_LOG_ERROR, _("cannot remove file %s: %s"), lp->data, strerror(errno));
+ _alpm_log(PM_LOG_ERROR, _("cannot remove file '%s': %s\n"),
+ (char *)lp->data, strerror(errno));
}
}
}
int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
{
- pmpkg_t *info, *infodup;
+ pmpkg_t *info;
alpm_list_t *targ, *lp;
+ int pkg_count;
ALPM_LOG_FUNC;
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+ pkg_count = alpm_list_count(trans->packages);
+
for(targ = trans->packages; targ; targ = targ->next) {
int position = 0;
char scriptlet[PATH_MAX];
@@ -281,7 +267,7 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
const char *pkgname = NULL;
if(handle->trans->state == STATE_INTERRUPTED) {
- break;
+ return(0);
}
/* get the name now so we can use it after package is removed */
@@ -289,9 +275,9 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
snprintf(scriptlet, PATH_MAX, "%s%s-%s/install", db->path,
pkgname, alpm_pkg_get_version(info));
- if(trans->type != PM_TRANS_TYPE_UPGRADE) {
+ if(trans->type != PM_TRANS_TYPE_REMOVEUPGRADE) {
EVENT(trans, PM_TRANS_EVT_REMOVE_START, info, NULL);
- _alpm_log(PM_LOG_DEBUG, _("removing package %s-%s"),
+ _alpm_log(PM_LOG_DEBUG, "removing package %s-%s\n",
pkgname, alpm_pkg_get_version(info));
/* run the pre-remove scriptlet if it exists */
@@ -306,22 +292,37 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
if(!(trans->flags & PM_TRANS_FLAG_DBONLY)) {
for(lp = files; lp; lp = lp->next) {
if(!can_remove_file(trans, lp->data)) {
- _alpm_log(PM_LOG_DEBUG, _("not removing package '%s', can't remove all files"),
+ _alpm_log(PM_LOG_DEBUG, "not removing package '%s', can't remove all files\n",
pkgname);
RET_ERR(PM_ERR_PKG_CANT_REMOVE, -1);
}
}
int filenum = alpm_list_count(files);
- _alpm_log(PM_LOG_DEBUG, _("removing %d files"), filenum);
+ double percent = 0.0;
+ alpm_list_t *newfiles;
+ _alpm_log(PM_LOG_DEBUG, "removing %d files\n", filenum);
/* iterate through the list backwards, unlinking files */
- for(lp = alpm_list_last(files); lp; lp = lp->prev) {
- unlink_file(info, lp, targ, trans, filenum, &position);
+ newfiles = alpm_list_reverse(files);
+ for(lp = newfiles; lp; lp = alpm_list_next(lp)) {
+ unlink_file(info, lp, trans);
+
+ /* update progress bar after each file */
+ percent = (double)position / (double)filenum;
+ PROGRESS(trans, PM_TRANS_PROGRESS_REMOVE_START, info->name,
+ (double)(percent * 100), pkg_count,
+ (pkg_count - alpm_list_count(targ) + 1));
+ position++;
}
+ alpm_list_free(newfiles);
}
- if(trans->type != PM_TRANS_TYPE_UPGRADE) {
+ /* set progress to 100% after we finish unlinking files */
+ PROGRESS(trans, PM_TRANS_PROGRESS_REMOVE_START, pkgname, 100,
+ pkg_count, (pkg_count - alpm_list_count(targ) + 1));
+
+ if(trans->type != PM_TRANS_TYPE_REMOVEUPGRADE) {
/* run the post-remove script if it exists */
if(alpm_pkg_has_scriptlet(info) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
_alpm_runscriptlet(handle->root, scriptlet, "post_remove",
@@ -329,38 +330,28 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
}
}
- /* duplicate the package so we can remove the requiredby fields later */
- infodup = _alpm_pkg_dup(info);
-
/* remove the package from the database */
- _alpm_log(PM_LOG_DEBUG, _("updating database"));
- _alpm_log(PM_LOG_DEBUG, _("removing database entry '%s'"), pkgname);
+ _alpm_log(PM_LOG_DEBUG, "updating database\n");
+ _alpm_log(PM_LOG_DEBUG, "removing database entry '%s'\n", pkgname);
if(_alpm_db_remove(db, info) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not remove database entry %s-%s"),
+ _alpm_log(PM_LOG_ERROR, _("could not remove database entry %s-%s\n"),
pkgname, alpm_pkg_get_version(info));
}
/* remove the package from the cache */
if(_alpm_db_remove_pkgfromcache(db, info) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not remove entry '%s' from cache"),
+ _alpm_log(PM_LOG_ERROR, _("could not remove entry '%s' from cache\n"),
pkgname);
}
-
- /* update dependency packages' REQUIREDBY fields */
- _alpm_trans_update_depends(trans, infodup);
- _alpm_pkg_free(infodup);
-
- PROGRESS(trans, PM_TRANS_PROGRESS_REMOVE_START, pkgname, 100,
- alpm_list_count(trans->packages),
- (alpm_list_count(trans->packages) - alpm_list_count(targ) +1));
- if(trans->type != PM_TRANS_TYPE_UPGRADE) {
+ /* call a done event if this isn't an upgrade */
+ if(trans->type != PM_TRANS_TYPE_REMOVEUPGRADE) {
EVENT(trans, PM_TRANS_EVT_REMOVE_DONE, info, NULL);
}
}
/* run ldconfig if it exists */
- if((trans->type != PM_TRANS_TYPE_UPGRADE) && (handle->trans->state != STATE_INTERRUPTED)) {
- _alpm_log(PM_LOG_DEBUG, _("running \"ldconfig -r %s\""), handle->root);
+ if(trans->type != PM_TRANS_TYPE_REMOVEUPGRADE) {
+ _alpm_log(PM_LOG_DEBUG, "running \"ldconfig -r %s\"\n", handle->root);
_alpm_ldconfig(handle->root);
}
diff --git a/lib/libalpm/remove.h b/lib/libalpm/remove.h
index 5ceba3b2..f1bc58eb 100644
--- a/lib/libalpm/remove.h
+++ b/lib/libalpm/remove.h
@@ -1,8 +1,8 @@
/*
* remove.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_REMOVE_H
diff --git a/lib/libalpm/server.c b/lib/libalpm/server.c
index b8635629..8aa5a45b 100644
--- a/lib/libalpm/server.c
+++ b/lib/libalpm/server.c
@@ -1,8 +1,8 @@
/*
* server.c
- *
+ *
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,21 +15,21 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#include "config.h"
#include <stdlib.h>
+#include <errno.h>
+#include <time.h>
#include <string.h>
+#include <limits.h>
#include <stdio.h>
-#include <libintl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
-#include <time.h>
-#include <errno.h>
#include <download.h>
/* libalpm */
@@ -40,7 +40,6 @@
#include "alpm.h"
#include "util.h"
#include "handle.h"
-#include "log.h"
#include "package.h"
pmserver_t *_alpm_server_new(const char *url)
@@ -50,20 +49,15 @@ pmserver_t *_alpm_server_new(const char *url)
ALPM_LOG_FUNC;
- server = (pmserver_t *)malloc(sizeof(pmserver_t));
- if(server == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(pmserver_t));
- RET_ERR(PM_ERR_MEMORY, NULL);
- }
+ CALLOC(server, 1, sizeof(pmserver_t), RET_ERR(PM_ERR_MEMORY, NULL));
- memset(server, 0, sizeof(pmserver_t));
u = downloadParseURL(url);
if(!u) {
- _alpm_log(PM_LOG_ERROR, _("url '%s' is invalid, ignoring"), url);
+ _alpm_log(PM_LOG_ERROR, _("url '%s' is invalid, ignoring\n"), url);
RET_ERR(PM_ERR_SERVER_BAD_URL, NULL);
}
if(strlen(u->scheme) == 0) {
- _alpm_log(PM_LOG_WARNING, _("url scheme not specified, assuming http"));
+ _alpm_log(PM_LOG_WARNING, _("url scheme not specified, assuming http\n"));
strcpy(u->scheme, "http");
}
@@ -81,10 +75,8 @@ pmserver_t *_alpm_server_new(const char *url)
return server;
}
-void _alpm_server_free(void *data)
+void _alpm_server_free(pmserver_t *server)
{
- pmserver_t *server = data;
-
ALPM_LOG_FUNC;
if(server == NULL) {
@@ -107,7 +99,8 @@ static char *strip_filename(pmserver_t *server)
p = strrchr(server->s_url->doc, '/');
if(p && *(++p)) {
fname = strdup(p);
- _alpm_log(PM_LOG_DEBUG, _("stripping '%s' from '%s'"), fname, server->s_url->doc);
+ _alpm_log(PM_LOG_DEBUG, "stripping '%s' from '%s'\n",
+ fname, server->s_url->doc);
*p = 0;
}
@@ -124,52 +117,59 @@ static struct url *url_for_file(pmserver_t *server, const char *filename)
int doclen = 0;
doclen = strlen(server->s_url->doc) + strlen(filename) + 2;
- doc = calloc(doclen, sizeof(char));
- if(!doc) {
- RET_ERR(PM_ERR_MEMORY, NULL);
- }
+ CALLOC(doc, doclen, sizeof(char), RET_ERR(PM_ERR_MEMORY, NULL));
snprintf(doc, doclen, "%s/%s", server->s_url->doc, filename);
- _alpm_log(PM_LOG_DEBUG, "file path: '%s'", doc);
ret = downloadMakeURL(server->s_url->scheme,
server->s_url->host,
server->s_url->port,
doc,
server->s_url->user,
server->s_url->pwd);
- free(doc);
+ FREE(doc);
return(ret);
}
/*
* Download a list of files from a list of servers
* - if one server fails, we try the next one in the list
+ * - if *dl_total is non-NULL, then it will be used as the starting
+ * download amount when TotalDownload is set. It will also be
+ * set to the final download amount for the calling function to use.
+ * - totalsize is the total download size for use when TotalDownload
+ * is set. Use 0 if the total download size is not known.
*
* RETURN: 0 for successful download, 1 on error
*/
-int _alpm_downloadfiles(alpm_list_t *servers, const char *localpath, alpm_list_t *files)
+int _alpm_downloadfiles(alpm_list_t *servers, const char *localpath,
+ alpm_list_t *files, int *dl_total, unsigned long totalsize)
{
- ALPM_LOG_FUNC;
- return(_alpm_downloadfiles_forreal(servers, localpath, files, NULL, NULL));
+ return(_alpm_downloadfiles_forreal(servers, localpath, files, 0, NULL,
+ dl_total, totalsize));
}
/*
* This is the real downloadfiles, used directly by sync_synctree() to check
* modtimes on remote files.
- * - if *mtime1 is non-NULL, then only download files
- * if they are different than *mtime1. String should be in the form
- * "YYYYMMDDHHMMSS" to match the form of ftplib's FtpModDate() function.
- * - if *mtime2 is non-NULL, then it will be filled with the mtime
- * of the remote file (from MDTM FTP cmd or Last-Modified HTTP header).
- *
+ * - if mtime1 is non-NULL, then only download files if they are different
+ * than mtime1.
+ * - if *mtime2 is non-NULL, it will be filled with the mtime of the remote
+ * file.
+ * - if *dl_total is non-NULL, then it will be used as the starting
+ * download amount when TotalDownload is set. It will also be
+ * set to the final download amount for the calling function to use.
+ * - totalsize is the total download size for use when TotalDownload
+ * is set. Use 0 if the total download size is not known.
+ *
* RETURN: 0 for successful download
* 1 if the mtimes are identical
* -1 on error
*/
int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
- alpm_list_t *files, const char *mtime1, char *mtime2)
+ alpm_list_t *files, time_t mtime1, time_t *mtime2, int *dl_total,
+ unsigned long totalsize)
{
- int dltotal_bytes = 0;
+ int dl_thisfile = 0;
alpm_list_t *lp;
int done = 0;
alpm_list_t *complete = NULL;
@@ -191,23 +191,15 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
char output[PATH_MAX];
char *fn = (char *)lp->data;
char pkgname[PKG_NAME_LEN];
- char *p;
fileurl = url_for_file(server, fn);
if(!fileurl) {
return(-1);
}
- /* Try to get JUST the name of the package from the filename */
- memset(pkgname, 0, PKG_NAME_LEN);
- if((p = strstr(fn, PM_EXT_PKG))) {
- _alpm_pkg_splitname(fn, pkgname, NULL, 1);
- }
- if(!strlen(pkgname)) {
- /* just use the raw filename if we can't find crap */
- STRNCPY(pkgname, fn, PKG_NAME_LEN+1);
- }
- _alpm_log(PM_LOG_DEBUG, _("using '%s' for download progress"), pkgname);
+ /* pass the raw filename for passing to the callback function */
+ strncpy(pkgname, fn, PKG_NAME_LEN);
+ _alpm_log(PM_LOG_DEBUG, "using '%s' for download progress\n", pkgname);
snprintf(realfile, PATH_MAX, "%s%s", localpath, fn);
snprintf(output, PATH_MAX, "%s%s.part", localpath, fn);
@@ -223,66 +215,64 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
int chk_resume = 0;
if(stat(output, &st) == 0 && st.st_size > 0) {
- _alpm_log(PM_LOG_DEBUG, _("existing file found, using it"));
+ _alpm_log(PM_LOG_DEBUG, "existing file found, using it\n");
fileurl->offset = (off_t)st.st_size;
- dltotal_bytes = st.st_size;
+ dl_thisfile = st.st_size;
+ if (dl_total != NULL) {
+ *dl_total += st.st_size;
+ }
localf = fopen(output, "a");
chk_resume = 1;
} else {
fileurl->offset = (off_t)0;
- dltotal_bytes = 0;
+ dl_thisfile = 0;
}
-
- /* libdownload does not reset the error code, reset it in the case of previous errors */
+
+ /* libdownload does not reset the error code, reset it in
+ * the case of previous errors */
downloadLastErrCode = 0;
/* 10s timeout - TODO make a config option */
downloadTimeout = 10000;
- /* Make libdownload super verbose... worthwhile for testing */
- if(alpm_option_get_logmask() & PM_LOG_DOWNLOAD) {
- downloadDebug = 1;
- }
- if(alpm_option_get_logmask() & PM_LOG_DEBUG) {
- dlf = downloadXGet(fileurl, &ust, (handle->nopassiveftp ? "v" : "vp"));
- } else {
- dlf = downloadXGet(fileurl, &ust, (handle->nopassiveftp ? "" : "p"));
- }
+ dlf = downloadXGet(fileurl, &ust, (handle->nopassiveftp ? "" : "p"));
if(downloadLastErrCode != 0 || dlf == NULL) {
- _alpm_log(PM_LOG_ERROR, _("failed retrieving file '%s' from %s : %s"),
- fn, fileurl->host, downloadLastErrString);
+ const char *host = _("disk");
+ if(strcmp(SCHEME_FILE, fileurl->scheme) != 0) {
+ host = fileurl->host;
+ }
+ _alpm_log(PM_LOG_ERROR, _("failed retrieving file '%s' from %s : %s\n"),
+ fn, host, downloadLastErrString);
if(localf != NULL) {
fclose(localf);
}
/* try the next server */
+ downloadFreeURL(fileurl);
continue;
} else {
- _alpm_log(PM_LOG_DEBUG, _("connected to %s successfully"), fileurl->host);
+ _alpm_log(PM_LOG_DEBUG, "connected to %s successfully\n", fileurl->host);
}
-
- if(ust.mtime && mtime1) {
- char strtime[15];
- _alpm_time2string(ust.mtime, strtime);
- if(strcmp(mtime1, strtime) == 0) {
- _alpm_log(PM_LOG_DEBUG, _("mtimes are identical, skipping %s"), fn);
- complete = alpm_list_add(complete, fn);
- if(localf != NULL) {
- fclose(localf);
- }
- if(dlf != NULL) {
- fclose(dlf);
- }
- return(1);
+
+ if(ust.mtime && mtime1 && ust.mtime == mtime1) {
+ _alpm_log(PM_LOG_DEBUG, "mtimes are identical, skipping %s\n", fn);
+ complete = alpm_list_add(complete, fn);
+ if(localf != NULL) {
+ fclose(localf);
}
+ if(dlf != NULL) {
+ fclose(dlf);
+ }
+ downloadFreeURL(fileurl);
+ return(1);
}
-
+
if(ust.mtime && mtime2) {
- _alpm_time2string(ust.mtime, mtime2);
+ *mtime2 = ust.mtime;
}
if(chk_resume && fileurl->offset == 0) {
- _alpm_log(PM_LOG_WARNING, _("cannot resume download, starting over"));
+ _alpm_log(PM_LOG_WARNING, _("cannot resume download, starting over\n"));
if(localf != NULL) {
fclose(localf);
localf = NULL;
@@ -292,51 +282,64 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
if(localf == NULL) {
_alpm_rmrf(output);
fileurl->offset = (off_t)0;
- dltotal_bytes = 0;
+ dl_thisfile = 0;
localf = fopen(output, "w");
if(localf == NULL) { /* still null? */
- _alpm_log(PM_LOG_ERROR, _("cannot write to file '%s'"), output);
+ _alpm_log(PM_LOG_ERROR, _("cannot write to file '%s'\n"), output);
if(dlf != NULL) {
fclose(dlf);
}
- return -1;
+ downloadFreeURL(fileurl);
+ return(-1);
}
}
/* Progress 0 - initialize */
- if(handle->dlcb) handle->dlcb(pkgname, 0, ust.size);
+ if(handle->dlcb) {
+ handle->dlcb(pkgname, 0, ust.size, dl_total ? *dl_total : 0,
+ totalsize);
+ }
int nread = 0;
char buffer[PM_DLBUF_LEN];
while((nread = fread(buffer, 1, PM_DLBUF_LEN, dlf)) > 0) {
if(ferror(dlf)) {
- _alpm_log(PM_LOG_ERROR, _("error downloading '%s': %s"),
+ _alpm_log(PM_LOG_ERROR, _("error downloading '%s': %s\n"),
fn, downloadLastErrString);
fclose(localf);
fclose(dlf);
+ downloadFreeURL(fileurl);
return(-1);
}
-
+
int nwritten = 0;
while(nwritten < nread) {
nwritten += fwrite(buffer, 1, (nread - nwritten), localf);
if(ferror(localf)) {
- _alpm_log(PM_LOG_ERROR, _("error writing to file '%s': %s"),
+ _alpm_log(PM_LOG_ERROR, _("error writing to file '%s': %s\n"),
realfile, strerror(errno));
fclose(localf);
fclose(dlf);
+ downloadFreeURL(fileurl);
return(-1);
}
}
if(nwritten != nread) {
-
+
+ }
+ dl_thisfile += nread;
+ if (dl_total != NULL) {
+ *dl_total += nread;
}
- dltotal_bytes += nread;
- if(handle->dlcb) handle->dlcb(pkgname, dltotal_bytes, ust.size);
+ if(handle->dlcb) {
+ handle->dlcb(pkgname, dl_thisfile, ust.size,
+ dl_total ? *dl_total : 0, totalsize);
+ }
}
+ downloadFreeURL(fileurl);
fclose(localf);
fclose(dlf);
rename(output, realfile);
@@ -351,7 +354,10 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
char cwd[PATH_MAX];
/* build the full download url */
- snprintf(url, PATH_MAX, "%s://%s%s", fileurl->scheme, fileurl->host, fileurl->doc);
+ snprintf(url, PATH_MAX, "%s://%s%s", fileurl->scheme,
+ fileurl->host, fileurl->doc);
+ /* we don't need this anymore */
+ downloadFreeURL(fileurl);
/* replace all occurrences of %o with fn.part */
strncpy(origCmd, handle->xfercommand, sizeof(origCmd));
@@ -378,18 +384,18 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
/* cwd to the download directory */
getcwd(cwd, PATH_MAX);
if(chdir(localpath)) {
- _alpm_log(PM_LOG_WARNING, _("could not chdir to %s"), localpath);
+ _alpm_log(PM_LOG_WARNING, _("could not chdir to %s\n"), localpath);
return(PM_ERR_CONNECT_FAILED);
}
/* execute the parsed command via /bin/sh -c */
- _alpm_log(PM_LOG_DEBUG, _("running command: %s"), parsedCmd);
+ _alpm_log(PM_LOG_DEBUG, "running command: %s\n", parsedCmd);
ret = system(parsedCmd);
if(ret == -1) {
- _alpm_log(PM_LOG_WARNING, _("running XferCommand: fork failed!"));
+ _alpm_log(PM_LOG_WARNING, _("running XferCommand: fork failed!\n"));
return(PM_ERR_FORK_FAILED);
} else if(ret != 0) {
/* download failed */
- _alpm_log(PM_LOG_DEBUG, _("XferCommand command returned non-zero status code (%d)"), ret);
+ _alpm_log(PM_LOG_DEBUG, "XferCommand command returned non-zero status code (%d)\n", ret);
} else {
/* download was successful */
complete = alpm_list_add(complete, fn);
@@ -399,26 +405,36 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
}
chdir(cwd);
}
- downloadFreeURL(fileurl);
}
if(alpm_list_count(complete) == alpm_list_count(files)) {
done = 1;
}
+ alpm_list_free(complete);
}
return(done ? 0 : -1);
}
-char *_alpm_fetch_pkgurl(char *target)
+/** Fetch a remote pkg.
+ * @param url URL of the package to download
+ * @return the downloaded filepath on success, NULL on error
+ * @addtogroup alpm_misc
+ */
+char SYMEXPORT *alpm_fetch_pkgurl(const char *url)
{
pmserver_t *server;
- char *filename;
- struct stat st;
+ char *filename, *filepath;
+ const char *cachedir;
ALPM_LOG_FUNC;
- server = _alpm_server_new(target);
+ if(strstr(url, "://") == NULL) {
+ _alpm_log(PM_LOG_DEBUG, "Invalid URL passed to alpm_fetch_pkgurl\n");
+ return(NULL);
+ }
+
+ server = _alpm_server_new(url);
if(!server) {
return(NULL);
}
@@ -426,30 +442,30 @@ char *_alpm_fetch_pkgurl(char *target)
/* strip path information from the filename */
filename = strip_filename(server);
if(!filename) {
- _alpm_log(PM_LOG_ERROR, _("URL does not contain a file for download"));
+ _alpm_log(PM_LOG_ERROR, _("URL does not contain a file for download\n"));
return(NULL);
}
- /* do not download the file if it exists in the current dir */
- if(stat(filename, &st) == 0) {
- _alpm_log(PM_LOG_DEBUG, _("%s has already been downloaded"), filename);
- } else {
- alpm_list_t *servers = alpm_list_add(NULL, server);
- alpm_list_t *files = alpm_list_add(NULL, filename);
+ /* find a valid cache dir to download to */
+ cachedir = _alpm_filecache_setup();
- if(_alpm_downloadfiles(servers, "./", files)) {
- _alpm_log(PM_LOG_WARNING, _("failed to download %s"), target);
- return(NULL);
- }
- _alpm_log(PM_LOG_DEBUG, _("successfully downloaded %s"), filename);
- alpm_list_free(files);
- alpm_list_free(servers);
- }
+ /* TODO this seems like needless complexity just to download one file */
+ alpm_list_t *servers = alpm_list_add(NULL, server);
+ alpm_list_t *files = alpm_list_add(NULL, filename);
+ /* download the file */
+ if(_alpm_downloadfiles(servers, cachedir, files, NULL, 0)) {
+ _alpm_log(PM_LOG_WARNING, _("failed to download %s\n"), url);
+ return(NULL);
+ }
+ _alpm_log(PM_LOG_DEBUG, "successfully downloaded %s\n", filename);
+ alpm_list_free(files);
+ alpm_list_free(servers);
_alpm_server_free(server);
- /* return the target with the raw filename, no URL */
- return(filename);
+ /* we should be able to find the file the second time around */
+ filepath = _alpm_filecache_find(filename);
+ return(filepath);
}
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/server.h b/lib/libalpm/server.h
index 8c357ab2..08194d58 100644
--- a/lib/libalpm/server.h
+++ b/lib/libalpm/server.h
@@ -1,8 +1,8 @@
/*
* server.h
- *
+ *
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_SERVER_H
@@ -27,8 +27,6 @@
#include <time.h>
#include <download.h>
-#define FREESERVER(p) do { if(p){_alpm_server_free(p); p = NULL;}} while(0)
-
/* Servers */
struct __pmserver_t {
/* useless abstraction now? */
@@ -38,12 +36,12 @@ struct __pmserver_t {
#define PM_DLBUF_LEN (1024 * 10)
pmserver_t *_alpm_server_new(const char *url);
-void _alpm_server_free(void *data);
-int _alpm_downloadfiles(alpm_list_t *servers, const char *localpath, alpm_list_t *files);
+void _alpm_server_free(pmserver_t *server);
+int _alpm_downloadfiles(alpm_list_t *servers, const char *localpath,
+ alpm_list_t *files, int *dl_total, unsigned long totalsize);
int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
- alpm_list_t *files, const char *mtime1, char *mtime2);
-
-char *_alpm_fetch_pkgurl(char *target);
+ alpm_list_t *files, time_t mtime1, time_t *mtime2, int *dl_total,
+ unsigned long totalsize);
#endif /* _ALPM_SERVER_H */
diff --git a/lib/libalpm/sha1.c b/lib/libalpm/sha1.c
deleted file mode 100644
index fd5f1e4a..00000000
--- a/lib/libalpm/sha1.c
+++ /dev/null
@@ -1,419 +0,0 @@
-/* sha.c - Functions to compute SHA1 message digest of files or
- memory blocks according to the NIST specification FIPS-180-1.
-
- Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-/* Written by Scott G. Miller
- Credits:
- Robert Klep <robert@ilse.nl> -- Expansion function fix
-*/
-
-#include "config.h"
-
-#include <sys/types.h>
-#include <stdlib.h>
-#include <string.h>
-#include <libintl.h>
-
-/* libalpm */
-#include "sha1.h"
-#include "alpm.h"
-#include "log.h"
-#include "util.h"
-
-/*
- Not-swap is a macro that does an endian swap on architectures that are
- big-endian, as SHA needs some data in a little-endian format
-*/
-
-#ifdef WORDS_BIGENDIAN
-# define NOTSWAP(n) (n)
-# define SWAP(n) \
- (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
-#else
-# define NOTSWAP(n) \
- (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
-# define SWAP(n) (n)
-#endif
-
-#define BLOCKSIZE 4096
-/* Ensure that BLOCKSIZE is a multiple of 64. */
-#if BLOCKSIZE % 64 != 0
-/* FIXME-someday (soon?): use #error instead of this kludge. */
-"invalid BLOCKSIZE"
-#endif
-
-/* This array contains the bytes used to pad the buffer to the next
- 64-byte boundary. (RFC 1321, 3.1: Step 1) */
-static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
-
-
-/* Starting with the result of former calls of this function (or the
- initialization function update the context for the next LEN bytes
- starting at BUFFER.
- It is necessary that LEN is a multiple of 64!!! */
-static void sha_process_block (const void *buffer, size_t len,
- struct sha_ctx *ctx);
-
-/* Starting with the result of former calls of this function (or the
- initialization function update the context for the next LEN bytes
- starting at BUFFER.
- It is NOT required that LEN is a multiple of 64. */
-static void sha_process_bytes (const void *buffer, size_t len,
- struct sha_ctx *ctx);
-
-/* Put result from CTX in first 20 bytes following RESBUF. The result is
- always in little endian byte order, so that a byte-wise output yields
- to the wanted ASCII representation of the message digest.
-
- IMPORTANT: On some systems it is required that RESBUF is correctly
- aligned for a 32 bits value. */
-static void *sha_read_ctx (const struct sha_ctx *ctx, void *resbuf);
-
-/*
- Takes a pointer to a 160 bit block of data (five 32 bit ints) and
- intializes it to the start constants of the SHA1 algorithm. This
- must be called before using hash in the call to sha_hash
-*/
-static void
-sha_init_ctx (struct sha_ctx *ctx)
-{
- ctx->A = 0x67452301;
- ctx->B = 0xefcdab89;
- ctx->C = 0x98badcfe;
- ctx->D = 0x10325476;
- ctx->E = 0xc3d2e1f0;
-
- ctx->total[0] = ctx->total[1] = 0;
- ctx->buflen = 0;
-}
-
-/* Put result from CTX in first 20 bytes following RESBUF. The result
- must be in little endian byte order.
-
- IMPORTANT: On some systems it is required that RESBUF is correctly
- aligned for a 32 bits value. */
-static void *
-sha_read_ctx (const struct sha_ctx *ctx, void *resbuf)
-{
- ((sha_uint32 *) resbuf)[0] = NOTSWAP (ctx->A);
- ((sha_uint32 *) resbuf)[1] = NOTSWAP (ctx->B);
- ((sha_uint32 *) resbuf)[2] = NOTSWAP (ctx->C);
- ((sha_uint32 *) resbuf)[3] = NOTSWAP (ctx->D);
- ((sha_uint32 *) resbuf)[4] = NOTSWAP (ctx->E);
-
- return resbuf;
-}
-
-/* Process the remaining bytes in the internal buffer and the usual
- prolog according to the standard and write the result to RESBUF.
-
- IMPORTANT: On some systems it is required that RESBUF is correctly
- aligned for a 32 bits value. */
-static void *
-sha_finish_ctx (struct sha_ctx *ctx, void *resbuf)
-{
- /* Take yet unprocessed bytes into account. */
- sha_uint32 bytes = ctx->buflen;
- size_t pad;
-
- /* Now count remaining bytes. */
- ctx->total[0] += bytes;
- if (ctx->total[0] < bytes)
- ++ctx->total[1];
-
- pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes;
- memcpy (&ctx->buffer[bytes], fillbuf, pad);
-
- /* Put the 64-bit file length in *bits* at the end of the buffer. */
- *(sha_uint32 *) &ctx->buffer[bytes + pad + 4] = NOTSWAP (ctx->total[0] << 3);
- *(sha_uint32 *) &ctx->buffer[bytes + pad] = NOTSWAP ((ctx->total[1] << 3) |
- (ctx->total[0] >> 29));
-
- /* Process last bytes. */
- sha_process_block (ctx->buffer, bytes + pad + 8, ctx);
-
- return sha_read_ctx (ctx, resbuf);
-}
-
-static void
-sha_process_bytes (const void *buffer, size_t len, struct sha_ctx *ctx)
-{
- /* When we already have some bits in our internal buffer concatenate
- both inputs first. */
- if (ctx->buflen != 0)
- {
- size_t left_over = ctx->buflen;
- size_t add = 128 - left_over > len ? len : 128 - left_over;
-
- memcpy (&ctx->buffer[left_over], buffer, add);
- ctx->buflen += add;
-
- if (ctx->buflen > 64)
- {
- sha_process_block (ctx->buffer, ctx->buflen & ~63, ctx);
-
- ctx->buflen &= 63;
- /* The regions in the following copy operation cannot overlap. */
- memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63],
- ctx->buflen);
- }
-
- buffer = (const char *) buffer + add;
- len -= add;
- }
-
- /* Process available complete blocks. */
- if (len >= 64)
- {
-#if !_STRING_ARCH_unaligned
-/* To check alignment gcc has an appropriate operator. Other
- compilers don't. */
-# if __GNUC__ >= 2
-# define UNALIGNED_P(p) (((sha_uintptr) p) % __alignof__ (sha_uint32) != 0)
-# else
-# define UNALIGNED_P(p) (((sha_uintptr) p) % sizeof (sha_uint32) != 0)
-# endif
- if (UNALIGNED_P (buffer))
- while (len > 64)
- {
- sha_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
- buffer = (const char *) buffer + 64;
- len -= 64;
- }
- else
-#endif
- {
- sha_process_block (buffer, len & ~63, ctx);
- buffer = (const char *) buffer + (len & ~63);
- len &= 63;
- }
- }
-
- /* Move remaining bytes in internal buffer. */
- if (len > 0)
- {
- size_t left_over = ctx->buflen;
-
- memcpy (&ctx->buffer[left_over], buffer, len);
- left_over += len;
- if (left_over >= 64)
- {
- sha_process_block (ctx->buffer, 64, ctx);
- left_over -= 64;
- memcpy (ctx->buffer, &ctx->buffer[64], left_over);
- }
- ctx->buflen = left_over;
- }
-}
-
-/* --- Code below is the primary difference between md5.c and sha.c --- */
-
-/* SHA1 round constants */
-#define K1 0x5a827999L
-#define K2 0x6ed9eba1L
-#define K3 0x8f1bbcdcL
-#define K4 0xca62c1d6L
-
-/* Round functions. Note that F2 is the same as F4. */
-#define F1(B,C,D) ( D ^ ( B & ( C ^ D ) ) )
-#define F2(B,C,D) (B ^ C ^ D)
-#define F3(B,C,D) ( ( B & C ) | ( D & ( B | C ) ) )
-#define F4(B,C,D) (B ^ C ^ D)
-
-/* Process LEN bytes of BUFFER, accumulating context into CTX.
- It is assumed that LEN % 64 == 0.
- Most of this code comes from GnuPG's cipher/sha1.c. */
-
-static void
-sha_process_block (const void *buffer, size_t len, struct sha_ctx *ctx)
-{
- const sha_uint32 *words = buffer;
- size_t nwords = len / sizeof (sha_uint32);
- const sha_uint32 *endp = words + nwords;
- sha_uint32 x[16];
- sha_uint32 a = ctx->A;
- sha_uint32 b = ctx->B;
- sha_uint32 c = ctx->C;
- sha_uint32 d = ctx->D;
- sha_uint32 e = ctx->E;
-
- /* First increment the byte count. RFC 1321 specifies the possible
- length of the file up to 2^64 bits. Here we only compute the
- number of bytes. Do a double word increment. */
- ctx->total[0] += len;
- if (ctx->total[0] < len)
- ++ctx->total[1];
-
-#define M(I) ( tm = x[I&0x0f] ^ x[(I-14)&0x0f] \
- ^ x[(I-8)&0x0f] ^ x[(I-3)&0x0f] \
- , (x[I&0x0f] = rol(tm, 1)) )
-
-#define R(A,B,C,D,E,F,K,M) do { E += rol( A, 5 ) \
- + F( B, C, D ) \
- + K \
- + M; \
- B = rol( B, 30 ); \
- } while(0)
-
- while (words < endp)
- {
- sha_uint32 tm;
- int t;
- /* FIXME: see sha1.c for a better implementation. */
- for (t = 0; t < 16; t++)
- {
- x[t] = NOTSWAP (*words);
- words++;
- }
-
- R( a, b, c, d, e, F1, K1, x[ 0] );
- R( e, a, b, c, d, F1, K1, x[ 1] );
- R( d, e, a, b, c, F1, K1, x[ 2] );
- R( c, d, e, a, b, F1, K1, x[ 3] );
- R( b, c, d, e, a, F1, K1, x[ 4] );
- R( a, b, c, d, e, F1, K1, x[ 5] );
- R( e, a, b, c, d, F1, K1, x[ 6] );
- R( d, e, a, b, c, F1, K1, x[ 7] );
- R( c, d, e, a, b, F1, K1, x[ 8] );
- R( b, c, d, e, a, F1, K1, x[ 9] );
- R( a, b, c, d, e, F1, K1, x[10] );
- R( e, a, b, c, d, F1, K1, x[11] );
- R( d, e, a, b, c, F1, K1, x[12] );
- R( c, d, e, a, b, F1, K1, x[13] );
- R( b, c, d, e, a, F1, K1, x[14] );
- R( a, b, c, d, e, F1, K1, x[15] );
- R( e, a, b, c, d, F1, K1, M(16) );
- R( d, e, a, b, c, F1, K1, M(17) );
- R( c, d, e, a, b, F1, K1, M(18) );
- R( b, c, d, e, a, F1, K1, M(19) );
- R( a, b, c, d, e, F2, K2, M(20) );
- R( e, a, b, c, d, F2, K2, M(21) );
- R( d, e, a, b, c, F2, K2, M(22) );
- R( c, d, e, a, b, F2, K2, M(23) );
- R( b, c, d, e, a, F2, K2, M(24) );
- R( a, b, c, d, e, F2, K2, M(25) );
- R( e, a, b, c, d, F2, K2, M(26) );
- R( d, e, a, b, c, F2, K2, M(27) );
- R( c, d, e, a, b, F2, K2, M(28) );
- R( b, c, d, e, a, F2, K2, M(29) );
- R( a, b, c, d, e, F2, K2, M(30) );
- R( e, a, b, c, d, F2, K2, M(31) );
- R( d, e, a, b, c, F2, K2, M(32) );
- R( c, d, e, a, b, F2, K2, M(33) );
- R( b, c, d, e, a, F2, K2, M(34) );
- R( a, b, c, d, e, F2, K2, M(35) );
- R( e, a, b, c, d, F2, K2, M(36) );
- R( d, e, a, b, c, F2, K2, M(37) );
- R( c, d, e, a, b, F2, K2, M(38) );
- R( b, c, d, e, a, F2, K2, M(39) );
- R( a, b, c, d, e, F3, K3, M(40) );
- R( e, a, b, c, d, F3, K3, M(41) );
- R( d, e, a, b, c, F3, K3, M(42) );
- R( c, d, e, a, b, F3, K3, M(43) );
- R( b, c, d, e, a, F3, K3, M(44) );
- R( a, b, c, d, e, F3, K3, M(45) );
- R( e, a, b, c, d, F3, K3, M(46) );
- R( d, e, a, b, c, F3, K3, M(47) );
- R( c, d, e, a, b, F3, K3, M(48) );
- R( b, c, d, e, a, F3, K3, M(49) );
- R( a, b, c, d, e, F3, K3, M(50) );
- R( e, a, b, c, d, F3, K3, M(51) );
- R( d, e, a, b, c, F3, K3, M(52) );
- R( c, d, e, a, b, F3, K3, M(53) );
- R( b, c, d, e, a, F3, K3, M(54) );
- R( a, b, c, d, e, F3, K3, M(55) );
- R( e, a, b, c, d, F3, K3, M(56) );
- R( d, e, a, b, c, F3, K3, M(57) );
- R( c, d, e, a, b, F3, K3, M(58) );
- R( b, c, d, e, a, F3, K3, M(59) );
- R( a, b, c, d, e, F4, K4, M(60) );
- R( e, a, b, c, d, F4, K4, M(61) );
- R( d, e, a, b, c, F4, K4, M(62) );
- R( c, d, e, a, b, F4, K4, M(63) );
- R( b, c, d, e, a, F4, K4, M(64) );
- R( a, b, c, d, e, F4, K4, M(65) );
- R( e, a, b, c, d, F4, K4, M(66) );
- R( d, e, a, b, c, F4, K4, M(67) );
- R( c, d, e, a, b, F4, K4, M(68) );
- R( b, c, d, e, a, F4, K4, M(69) );
- R( a, b, c, d, e, F4, K4, M(70) );
- R( e, a, b, c, d, F4, K4, M(71) );
- R( d, e, a, b, c, F4, K4, M(72) );
- R( c, d, e, a, b, F4, K4, M(73) );
- R( b, c, d, e, a, F4, K4, M(74) );
- R( a, b, c, d, e, F4, K4, M(75) );
- R( e, a, b, c, d, F4, K4, M(76) );
- R( d, e, a, b, c, F4, K4, M(77) );
- R( c, d, e, a, b, F4, K4, M(78) );
- R( b, c, d, e, a, F4, K4, M(79) );
-
- a = ctx->A += a;
- b = ctx->B += b;
- c = ctx->C += c;
- d = ctx->D += d;
- e = ctx->E += e;
- }
-}
-
-/* Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All
-rights reserved.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
- */
-
-
-char* _alpm_SHAFile(char *filename) {
- FILE *file;
- struct sha_ctx context;
- int len, i;
- char hex[3];
- unsigned char buffer[1024], digest[20];
- char *ret;
-
- ALPM_LOG_FUNC;
-
- if((file = fopen(filename, "rb")) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("sha1: %s can't be opened\n"), filename);
- } else {
- sha_init_ctx(&context);
- while((len = fread(buffer, 1, 1024, file))) {
- sha_process_bytes(buffer, len, &context);
- }
- sha_finish_ctx(&context, digest);
- fclose(file);
-
- ret = (char*)malloc(41);
- ret[0] = '\0';
- for(i = 0; i < 20; i++) {
- snprintf(hex, 3, "%02x", digest[i]);
- strncat(ret, hex, 2);
- }
- _alpm_log(PM_LOG_DEBUG, _("sha1(%s) = %s"), filename, ret);
- return(ret);
- }
-
- return(NULL);
-}
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/sha1.h b/lib/libalpm/sha1.h
deleted file mode 100644
index fc0aa230..00000000
--- a/lib/libalpm/sha1.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Declarations of functions and data types used for SHA1 sum
- library functions.
- Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#ifndef _ALPM_SHA1_H
-#define _ALPM_SHA1_H
-
-#include <stdio.h>
-#include <limits.h>
-
-#define rol(x,n) ( ((x) << (n)) | ((x) >> (32 -(n))) )
-/* TODO check this comment */
-/* The code below is from md5.h (from coreutils), little modifications */
-#define UINT_MAX_32_BITS 4294967295U
-
-/* This new ifdef allows splint to not fail on its static code check */
-#ifdef S_SPLINT_S
- typedef unsigned int sha_uint32;
-#else
-#if UINT_MAX == UINT_MAX_32_BITS
- typedef unsigned int sha_uint32;
-#else
-#if USHRT_MAX == UINT_MAX_32_BITS
- typedef unsigned short sha_uint32;
-#else
-#if ULONG_MAX == UINT_MAX_32_BITS
- typedef unsigned long sha_uint32;
-#else
- /* The following line is intended to evoke an error. Using #error is not portable enough. */
-#error "Cannot determine unsigned 32-bit data type"
-#endif /* ULONG_MAX */
-#endif /* USHRT_MAX */
-#endif /* UINT_MAX */
-#endif /* S_SPLINT_S */
-/* We have to make a guess about the integer type equivalent in size
- to pointers which should always be correct. */
-typedef unsigned long int sha_uintptr;
-
-/* Structure to save state of computation between the single steps. */
-struct sha_ctx
-{
- sha_uint32 A;
- sha_uint32 B;
- sha_uint32 C;
- sha_uint32 D;
- sha_uint32 E;
-
- sha_uint32 total[2];
- sha_uint32 buflen;
- char buffer[128];
-};
-
-
-/* Needed for pacman */
-char *_alpm_SHAFile (char *);
-
-#endif /* _ALPM_SHA1_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index 8405bbfb..065340c9 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -1,11 +1,11 @@
/*
* sync.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -18,7 +18,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -28,12 +28,9 @@
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
+#include <unistd.h>
#include <time.h>
-#ifdef CYGWIN
-#include <limits.h> /* PATH_MAX */
-#endif
#include <dirent.h>
-#include <libintl.h>
/* libalpm */
#include "sync.h"
@@ -45,17 +42,12 @@
#include "cache.h"
#include "deps.h"
#include "conflict.h"
-#include "provide.h"
#include "trans.h"
#include "util.h"
-#include "versioncmp.h"
#include "handle.h"
-#include "util.h"
#include "alpm.h"
-#include "md5.h"
-#include "sha1.h"
-#include "handle.h"
#include "server.h"
+#include "delta.h"
pmsyncpkg_t *_alpm_sync_new(int type, pmpkg_t *spkg, void *data)
{
@@ -63,48 +55,64 @@ pmsyncpkg_t *_alpm_sync_new(int type, pmpkg_t *spkg, void *data)
ALPM_LOG_FUNC;
- if((sync = (pmsyncpkg_t *)malloc(sizeof(pmsyncpkg_t))) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(pmsyncpkg_t));
- return(NULL);
- }
+ CALLOC(sync, 1, sizeof(pmsyncpkg_t), RET_ERR(PM_ERR_MEMORY, NULL));
sync->type = type;
sync->pkg = spkg;
sync->data = data;
-
+
return(sync);
}
-void _alpm_sync_free(void *data)
+void _alpm_sync_free(pmsyncpkg_t *sync)
{
- pmsyncpkg_t *sync = data;
-
ALPM_LOG_FUNC;
if(sync == NULL) {
return;
}
+ /* TODO wow this is ugly */
if(sync->type == PM_SYNC_TYPE_REPLACE) {
- FREELISTPKGS(sync->data);
+ alpm_list_free_inner(sync->data, (alpm_list_fn_free)_alpm_pkg_free);
+ alpm_list_free(sync->data);
+ sync->data = NULL;
} else {
- FREEPKG(sync->data);
+ _alpm_pkg_free(sync->data);
+ sync->data = NULL;
}
FREE(sync);
}
+static void synclist_free(alpm_list_t *syncpkgs)
+{
+ if(syncpkgs) {
+ alpm_list_t *tmp;
+ for(tmp = syncpkgs; tmp; tmp = alpm_list_next(tmp)) {
+ if(tmp->data) {
+ _alpm_sync_free(tmp->data);
+ }
+ }
+ alpm_list_free(syncpkgs);
+ }
+
+}
+
/* Find recommended replacements for packages during a sync.
- * (refactored from _alpm_sync_prepare)
*/
static int find_replacements(pmtrans_t *trans, pmdb_t *db_local,
- alpm_list_t *dbs_sync)
+ alpm_list_t *dbs_sync, alpm_list_t **syncpkgs)
{
alpm_list_t *i, *j, *k; /* wow */
ALPM_LOG_FUNC;
+ if(syncpkgs == NULL) {
+ return(-1);
+ }
+
/* check for "recommended" package replacements */
- _alpm_log(PM_LOG_DEBUG, _("checking for package replacements"));
+ _alpm_log(PM_LOG_DEBUG, "checking for package replacements\n");
for(i = dbs_sync; i; i = i->next) {
pmdb_t *db = i->data;
@@ -114,136 +122,156 @@ static int find_replacements(pmtrans_t *trans, pmdb_t *db_local,
for(k = alpm_pkg_get_replaces(spkg); k; k = k->next) {
const char *replacement = k->data;
-
+
pmpkg_t *lpkg = _alpm_db_get_pkgfromcache(db_local, replacement);
if(!lpkg) {
continue;
}
- _alpm_log(PM_LOG_DEBUG, _("checking replacement '%s' for package '%s'"), replacement, spkg->name);
- if(alpm_list_find_str(handle->ignorepkg, lpkg->name)) {
- _alpm_log(PM_LOG_WARNING, _("%s-%s: ignoring package upgrade (to be replaced by %s-%s)"),
+ _alpm_log(PM_LOG_DEBUG, "checking replacement '%s' for package '%s'\n",
+ replacement, spkg->name);
+ /* ignore if EITHER the local or replacement package are to be ignored */
+ if(_alpm_pkg_should_ignore(spkg) || _alpm_pkg_should_ignore(lpkg)) {
+ _alpm_log(PM_LOG_WARNING, _("%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"),
alpm_pkg_get_name(lpkg), alpm_pkg_get_version(lpkg),
alpm_pkg_get_name(spkg), alpm_pkg_get_version(spkg));
} else {
/* get confirmation for the replacement */
- int doreplace = 0;
- QUESTION(trans, PM_TRANS_CONV_REPLACE_PKG, lpkg, spkg, db->treename, &doreplace);
+ if(trans) {
+ int doreplace = 0;
+ QUESTION(trans, PM_TRANS_CONV_REPLACE_PKG, lpkg, spkg, db->treename, &doreplace);
+ if(!doreplace) {
+ continue;
+ }
+ }
- if(doreplace) {
- /* if confirmed, add this to the 'final' list, designating 'lpkg' as
- * the package to replace.
- */
- pmsyncpkg_t *sync;
- pmpkg_t *dummy = _alpm_pkg_new(alpm_pkg_get_name(lpkg), NULL);
- if(dummy == NULL) {
+ /* if confirmed, add this to the 'final' list, designating 'lpkg' as
+ * the package to replace.
+ */
+ pmsyncpkg_t *sync;
+ pmpkg_t *dummy = _alpm_pkg_new(alpm_pkg_get_name(lpkg), NULL);
+ if(dummy == NULL) {
+ pm_errno = PM_ERR_MEMORY;
+ synclist_free(*syncpkgs);
+ return(-1);
+ }
+ /* check if spkg->name is already in the packages list. */
+ sync = _alpm_sync_find(*syncpkgs, alpm_pkg_get_name(spkg));
+ if(sync) {
+ /* found it -- just append to the replaces list */
+ sync->data = alpm_list_add(sync->data, dummy);
+ } else {
+ /* none found -- enter pkg into the final sync list */
+ sync = _alpm_sync_new(PM_SYNC_TYPE_REPLACE, spkg, NULL);
+ if(sync == NULL) {
+ _alpm_pkg_free(dummy);
pm_errno = PM_ERR_MEMORY;
- goto error;
+ synclist_free(*syncpkgs);
+ return(-1);
}
- dummy->requiredby = alpm_list_strdup(alpm_pkg_get_requiredby(lpkg));
- /* check if spkg->name is already in the packages list. */
- sync = _alpm_sync_find(trans->packages, alpm_pkg_get_name(spkg));
- if(sync) {
- /* found it -- just append to the replaces list */
- sync->data = alpm_list_add(sync->data, dummy);
- } else {
- /* none found -- enter pkg into the final sync list */
- sync = _alpm_sync_new(PM_SYNC_TYPE_REPLACE, spkg, NULL);
- if(sync == NULL) {
- FREEPKG(dummy);
- pm_errno = PM_ERR_MEMORY;
- goto error;
- }
- sync->data = alpm_list_add(NULL, dummy);
- trans->packages = alpm_list_add(trans->packages, sync);
- }
- _alpm_log(PM_LOG_DEBUG, _("%s-%s elected for upgrade (to be replaced by %s-%s)"),
- alpm_pkg_get_name(lpkg), alpm_pkg_get_version(lpkg),
- alpm_pkg_get_name(spkg), alpm_pkg_get_version(spkg));
+ sync->data = alpm_list_add(NULL, dummy);
+ *syncpkgs = alpm_list_add(*syncpkgs, sync);
}
+ _alpm_log(PM_LOG_DEBUG, "%s-%s elected for upgrade (to be replaced by %s-%s)\n",
+ alpm_pkg_get_name(lpkg), alpm_pkg_get_version(lpkg),
+ alpm_pkg_get_name(spkg), alpm_pkg_get_version(spkg));
}
}
}
}
return(0);
-error:
- return(-1);
}
-/* TODO reimplement this in terms of alpm_get_upgrades */
-int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync)
+/** Get a list of upgradable packages on the current system
+ * Adds out of date packages to *list.
+ * @arg list pointer to a list of pmsyncpkg_t.
+ */
+int SYMEXPORT alpm_sync_sysupgrade(pmdb_t *db_local,
+ alpm_list_t *dbs_sync, alpm_list_t **syncpkgs)
+{
+ return(_alpm_sync_sysupgrade(NULL, db_local, dbs_sync, syncpkgs));
+}
+
+int _alpm_sync_sysupgrade(pmtrans_t *trans,
+ pmdb_t *db_local, alpm_list_t *dbs_sync, alpm_list_t **syncpkgs)
{
alpm_list_t *i, *j;
ALPM_LOG_FUNC;
+ if(syncpkgs == NULL) {
+ return(-1);
+ }
/* check for "recommended" package replacements */
- if(find_replacements(trans, db_local, dbs_sync) == 0) {
- /* match installed packages with the sync dbs and compare versions */
- _alpm_log(PM_LOG_DEBUG, _("checking for package upgrades"));
- for(i = _alpm_db_get_pkgcache(db_local); i; i = i->next) {
- int replace=0;
- pmpkg_t *local = i->data;
- pmpkg_t *spkg = NULL;
- pmsyncpkg_t *sync;
-
- for(j = dbs_sync; !spkg && j; j = j->next) {
- spkg = _alpm_db_get_pkgfromcache(j->data, alpm_pkg_get_name(local));
- }
- if(spkg == NULL) {
- _alpm_log(PM_LOG_DEBUG, _("'%s' not found in sync db -- skipping"), alpm_pkg_get_name(local));
- continue;
- }
+ if(find_replacements(trans, db_local, dbs_sync, syncpkgs)) {
+ return(-1);
+ }
- /* we don't care about a to-be-replaced package's newer version */
- for(j = trans->packages; j && !replace; j=j->next) {
- sync = j->data;
- if(sync->type == PM_SYNC_TYPE_REPLACE) {
- if(_alpm_pkg_find(alpm_pkg_get_name(spkg), sync->data)) {
- replace=1;
- }
+ /* match installed packages with the sync dbs and compare versions */
+ _alpm_log(PM_LOG_DEBUG, "checking for package upgrades\n");
+ for(i = _alpm_db_get_pkgcache(db_local); i; i = i->next) {
+ int replace = 0;
+ pmpkg_t *local = i->data;
+ pmpkg_t *spkg = NULL;
+ pmsyncpkg_t *sync;
+
+ for(j = dbs_sync; !spkg && j; j = j->next) {
+ spkg = _alpm_db_get_pkgfromcache(j->data, alpm_pkg_get_name(local));
+ }
+ if(spkg == NULL) {
+ _alpm_log(PM_LOG_DEBUG, "'%s' not found in sync db -- skipping\n",
+ alpm_pkg_get_name(local));
+ continue;
+ }
+
+ /* we don't care about a to-be-replaced package's newer version */
+ for(j = *syncpkgs; j && !replace; j=j->next) {
+ sync = j->data;
+ if(sync->type == PM_SYNC_TYPE_REPLACE) {
+ if(_alpm_pkg_find(alpm_pkg_get_name(spkg), sync->data)) {
+ replace = 1;
}
}
- if(replace) {
- _alpm_log(PM_LOG_DEBUG, _("'%s' is already elected for removal -- skipping"),
- alpm_pkg_get_name(local));
- continue;
- }
+ }
+ if(replace) {
+ _alpm_log(PM_LOG_DEBUG, "'%s' is already elected for removal -- skipping\n",
+ alpm_pkg_get_name(local));
+ continue;
+ }
- /* compare versions and see if we need to upgrade */
- if(alpm_pkg_compare_versions(local, spkg)) {
- _alpm_log(PM_LOG_DEBUG, _("%s-%s elected for upgrade (%s => %s)"),
- alpm_pkg_get_name(local), alpm_pkg_get_version(local),
- alpm_pkg_get_name(spkg), alpm_pkg_get_version(spkg));
- if(!_alpm_sync_find(trans->packages, alpm_pkg_get_name(spkg))) {
- /* If package is in the ignorepkg list, ask before we add it to
- * the transaction */
- if(alpm_list_find_str(handle->ignorepkg, alpm_pkg_get_name(local))) {
- int resp = 0;
- QUESTION(trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, local, NULL, NULL, &resp);
- if(!resp) {
- continue;
- }
- }
- pmpkg_t *tmp = _alpm_pkg_dup(local);
- if(tmp == NULL) {
- goto error;
- }
- sync = _alpm_sync_new(PM_SYNC_TYPE_UPGRADE, spkg, tmp);
- if(sync == NULL) {
- FREEPKG(tmp);
- goto error;
- }
- trans->packages = alpm_list_add(trans->packages, sync);
+ /* compare versions and see if we need to upgrade */
+ if(alpm_pkg_compare_versions(local, spkg)) {
+ _alpm_log(PM_LOG_DEBUG, "%s elected for upgrade (%s => %s)\n",
+ alpm_pkg_get_name(local), alpm_pkg_get_version(local),
+ alpm_pkg_get_version(spkg));
+ if(!_alpm_sync_find(*syncpkgs, alpm_pkg_get_name(spkg))) {
+ /* If package is in the ignorepkg list, skip it */
+ if(_alpm_pkg_should_ignore(spkg)) {
+ _alpm_log(PM_LOG_WARNING, _("%s: ignoring package upgrade (%s => %s)\n"),
+ alpm_pkg_get_name(local), alpm_pkg_get_version(local),
+ alpm_pkg_get_version(spkg));
+ continue;
+ }
+
+ pmpkg_t *tmp = _alpm_pkg_dup(local);
+ if(tmp == NULL) {
+ pm_errno = PM_ERR_MEMORY;
+ synclist_free(*syncpkgs);
+ return(-1);
+ }
+ sync = _alpm_sync_new(PM_SYNC_TYPE_UPGRADE, spkg, tmp);
+ if(sync == NULL) {
+ _alpm_pkg_free(tmp);
+ pm_errno = PM_ERR_MEMORY;
+ synclist_free(*syncpkgs);
+ return(-1);
}
+ *syncpkgs = alpm_list_add(*syncpkgs, sync);
}
}
-
- return(0);
}
-error:
- /* if we're here, it's an error */
- return(-1);
+
+ return(0);
}
int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, char *name)
@@ -262,12 +290,13 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(name != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
- STRNCPY(targline, name, PKG_FULLNAME_LEN);
+ strncpy(targline, name, PKG_FULLNAME_LEN);
targ = strchr(targline, '/');
if(targ) {
+ /* we are looking for a package in a specific database */
*targ = '\0';
targ++;
- _alpm_log(PM_LOG_DEBUG, _("searching for target in repo '%s'"), targ);
+ _alpm_log(PM_LOG_DEBUG, "searching for target '%s' in repo\n", targ);
for(j = dbs_sync; j && !spkg; j = j->next) {
pmdb_t *db = j->data;
if(strcmp(db->treename, targline) == 0) {
@@ -275,19 +304,20 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy
spkg = _alpm_db_get_pkgfromcache(db, targ);
if(spkg == NULL) {
/* Search provides */
- _alpm_log(PM_LOG_DEBUG, _("target '%s' not found -- looking for provisions"), targ);
+ _alpm_log(PM_LOG_DEBUG, "target '%s' not found in db '%s' -- looking for provisions\n", targ, db->treename);
alpm_list_t *p = _alpm_db_whatprovides(db, targ);
if(!p) {
RET_ERR(PM_ERR_PKG_NOT_FOUND, -1);
}
- _alpm_log(PM_LOG_DEBUG, _("found '%s' as a provision for '%s'"), p->data, targ);
- spkg = _alpm_db_get_pkgfromcache(db, p->data);
- FREELISTPTR(p);
+ spkg = (pmpkg_t *) p->data;
+ _alpm_log(PM_LOG_DEBUG, "found '%s' as a provision for '%s'\n",
+ alpm_pkg_get_name(spkg), targ);
+ alpm_list_free(p);
}
}
}
if(!repo_found) {
- _alpm_log(PM_LOG_ERROR, _("repository '%s' not found"), targline);
+ _alpm_log(PM_LOG_ERROR, _("repository '%s' not found\n"), targline);
RET_ERR(PM_ERR_PKG_REPO_NOT_FOUND, -1);
}
} else {
@@ -298,14 +328,15 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy
}
if(spkg == NULL) {
/* Search provides */
- _alpm_log(PM_LOG_DEBUG, _("target '%s' not found -- looking for provisions"), targ);
+ _alpm_log(PM_LOG_DEBUG, "target '%s' not found -- looking for provisions\n", targ);
for(j = dbs_sync; j && !spkg; j = j->next) {
pmdb_t *db = j->data;
alpm_list_t *p = _alpm_db_whatprovides(db, targ);
if(p) {
- _alpm_log(PM_LOG_DEBUG, _("found '%s' as a provision for '%s'"), p->data, targ);
- spkg = _alpm_db_get_pkgfromcache(db, p->data);
- FREELISTPTR(p);
+ spkg = (pmpkg_t *) p->data;
+ _alpm_log(PM_LOG_DEBUG, "found '%s' as a provision for '%s' in db '%s'\n",
+ alpm_pkg_get_name(spkg), targ, db->treename);
+ alpm_list_free(p);
}
}
}
@@ -318,20 +349,14 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy
local = _alpm_db_get_pkgfromcache(db_local, alpm_pkg_get_name(spkg));
if(local) {
if(alpm_pkg_compare_versions(local, spkg) == 0) {
- /* spkg is NOT an upgrade, get confirmation before adding */
- int resp = 0;
- if(alpm_list_find_str(handle->ignorepkg, alpm_pkg_get_name(local))) {
- QUESTION(trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, local, NULL, NULL, &resp);
- if(!resp) {
- return(0);
- }
- } else if(!(trans->flags & PM_TRANS_FLAG_PRINTURIS)) {
- QUESTION(trans, PM_TRANS_CONV_LOCAL_UPTODATE, local, NULL, NULL, &resp);
- if(!resp) {
- _alpm_log(PM_LOG_WARNING, _("%s-%s is up to date -- skipping"),
- alpm_pkg_get_name(local), alpm_pkg_get_version(local));
- return(0);
- }
+ /* spkg is NOT an upgrade */
+ if(trans->flags & PM_TRANS_FLAG_NEEDED) {
+ _alpm_log(PM_LOG_WARNING, _("%s-%s is up to date -- skipping\n"),
+ alpm_pkg_get_name(local), alpm_pkg_get_version(local));
+ return(0);
+ } else {
+ _alpm_log(PM_LOG_WARNING, _("%s-%s is up to date -- reinstalling\n"),
+ alpm_pkg_get_name(local), alpm_pkg_get_version(local));
}
}
}
@@ -348,10 +373,10 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy
}
sync = _alpm_sync_new(PM_SYNC_TYPE_UPGRADE, spkg, dummy);
if(sync == NULL) {
- FREEPKG(dummy);
+ _alpm_pkg_free(dummy);
RET_ERR(PM_ERR_MEMORY, -1);
}
- _alpm_log(PM_LOG_DEBUG, _("adding target '%s' to the transaction set"),
+ _alpm_log(PM_LOG_DEBUG, "adding target '%s' to the transaction set\n",
alpm_pkg_get_name(spkg));
trans->packages = alpm_list_add(trans->packages, sync);
}
@@ -363,8 +388,8 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy
*/
static int syncpkg_cmp(const void *s1, const void *s2)
{
- pmsyncpkg_t *sp1 = (pmsyncpkg_t *)s1;
- pmsyncpkg_t *sp2 = (pmsyncpkg_t *)s2;
+ const pmsyncpkg_t *sp1 = s1;
+ const pmsyncpkg_t *sp2 = s2;
pmpkg_t *p1, *p2;
p1 = alpm_sync_get_pkg(sp1);
@@ -376,10 +401,8 @@ static int syncpkg_cmp(const void *s1, const void *s2)
int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, alpm_list_t **data)
{
alpm_list_t *deps = NULL;
- alpm_list_t *list = NULL; /* list allowing checkdeps usage with data from trans->packages */
- alpm_list_t *trail = NULL; /* breadcrumb list to avoid running into circles */
- alpm_list_t *asked = NULL;
- alpm_list_t *i, *j, *k, *l;
+ alpm_list_t *list = NULL, *remove = NULL; /* allow checkdeps usage with trans->packages */
+ alpm_list_t *i, *j;
int ret = 0;
ALPM_LOG_FUNC;
@@ -391,24 +414,42 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
*data = NULL;
}
- for(i = trans->packages; i; i = i->next) {
- pmsyncpkg_t *sync = i->data;
- list = alpm_list_add(list, sync->pkg);
+ if(!(trans->flags & PM_TRANS_FLAG_DEPENDSONLY)) {
+ for(i = trans->packages; i; i = i->next) {
+ pmsyncpkg_t *sync = i->data;
+ list = alpm_list_add(list, sync->pkg);
+ }
}
if(!(trans->flags & PM_TRANS_FLAG_NODEPS)) {
/* Resolve targets dependencies */
EVENT(trans, PM_TRANS_EVT_RESOLVEDEPS_START, NULL, NULL);
- _alpm_log(PM_LOG_DEBUG, _("resolving target's dependencies"));
+ _alpm_log(PM_LOG_DEBUG, "resolving target's dependencies\n");
+
+ /* build remove list for resolvedeps */
+ for(i = trans->packages; i; i = i->next) {
+ pmsyncpkg_t *sync = i->data;
+ if(sync->type == PM_SYNC_TYPE_REPLACE) {
+ for(j = sync->data; j; j = j->next) {
+ remove = alpm_list_add(remove, j->data);
+ }
+ }
+ }
+
for(i = trans->packages; i; i = i->next) {
pmpkg_t *spkg = ((pmsyncpkg_t *)i->data)->pkg;
- if(_alpm_resolvedeps(db_local, dbs_sync, spkg, list, trail, trans, data) == -1) {
+ if(_alpm_resolvedeps(db_local, dbs_sync, spkg, &list,
+ remove, trans, data) == -1) {
/* pm_errno is set by resolvedeps */
ret = -1;
goto cleanup;
}
}
+ if((trans->flags & PM_TRANS_FLAG_DEPENDSONLY)) {
+ FREELIST(trans->packages);
+ }
+
for(i = list; i; i = i->next) {
/* add the dependencies found by resolvedeps to the transaction set */
pmpkg_t *spkg = i->data;
@@ -419,60 +460,27 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
goto cleanup;
}
trans->packages = alpm_list_add(trans->packages, sync);
- _alpm_log(PM_LOG_DEBUG, _("adding package %s-%s to the transaction targets"),
+ _alpm_log(PM_LOG_DEBUG, "adding package %s-%s to the transaction targets\n",
alpm_pkg_get_name(spkg), alpm_pkg_get_version(spkg));
- } else {
- /* remove the original targets from the list if requested */
- if((trans->flags & PM_TRANS_FLAG_DEPENDSONLY)) {
- void *vpkg;
- pmsyncpkg_t *sync;
- const char *pkgname;
-
- pkgname = alpm_pkg_get_name(spkg);
- _alpm_log(PM_LOG_DEBUG, "removing package %s-%s from the transaction targets",
- pkgname, alpm_pkg_get_version(spkg));
-
- sync = _alpm_sync_find(trans->packages, pkgname);
- trans->packages = alpm_list_remove(trans->packages, sync, syncpkg_cmp, &vpkg);
- FREESYNC(vpkg);
- }
}
}
/* re-order w.r.t. dependencies */
- k = l = NULL;
- for(i=trans->packages; i; i=i->next) {
- pmsyncpkg_t *s = (pmsyncpkg_t*)i->data;
- k = alpm_list_add(k, s->pkg);
- }
- k = _alpm_sortbydeps(k, PM_TRANS_TYPE_ADD);
- for(i=k; i; i=i->next) {
- for(j=trans->packages; j; j=j->next) {
- pmsyncpkg_t *s = (pmsyncpkg_t*)j->data;
- if(s->pkg==i->data) {
- l = alpm_list_add(l, s);
+ alpm_list_t *sortlist = _alpm_sortbydeps(list, PM_TRANS_TYPE_ADD);
+ alpm_list_t *newpkgs = NULL;
+ for(i = sortlist; i; i = i->next) {
+ for(j = trans->packages; j; j = j->next) {
+ pmsyncpkg_t *s = j->data;
+ if(s->pkg == i->data) {
+ newpkgs = alpm_list_add(newpkgs, s);
}
}
}
- FREELISTPTR(k);
- FREELISTPTR(trans->packages);
- trans->packages = l;
+ alpm_list_free(sortlist);
+ alpm_list_free(trans->packages);
+ trans->packages = newpkgs;
EVENT(trans, PM_TRANS_EVT_RESOLVEDEPS_DONE, NULL, NULL);
-
- _alpm_log(PM_LOG_DEBUG, _("looking for unresolvable dependencies"));
- deps = _alpm_checkdeps(trans, db_local, PM_TRANS_TYPE_UPGRADE, list);
- if(deps) {
- if(data) {
- *data = deps;
- deps = NULL;
- }
- pm_errno = PM_ERR_UNSATISFIED_DEPS;
- ret = -1;
- goto cleanup;
- }
-
- FREELISTPTR(trail);
}
/* We don't care about conflicts if we're just printing uris */
@@ -480,58 +488,52 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
/* check for inter-conflicts and whatnot */
EVENT(trans, PM_TRANS_EVT_INTERCONFLICTS_START, NULL, NULL);
- _alpm_log(PM_LOG_DEBUG, _("looking for conflicts"));
+ _alpm_log(PM_LOG_DEBUG, "looking for conflicts\n");
deps = _alpm_checkconflicts(db_local, list);
if(deps) {
int errorout = 0;
+ alpm_list_t *asked = NULL;
+ pmconflict_t *conflict = NULL;
for(i = deps; i && !errorout; i = i->next) {
- pmdepmissing_t *miss = i->data;
- int found = 0;
pmsyncpkg_t *sync;
- pmpkg_t *local;
+ pmpkg_t *found = NULL;
- _alpm_log(PM_LOG_DEBUG, _("package '%s' conflicts with '%s'"),
- miss->target, miss->depend.name);
-
- /* check if the conflicting package is one that's about to be removed/replaced.
- * if so, then just ignore it
- */
+ conflict = i->data;
+ _alpm_log(PM_LOG_DEBUG, "package '%s' conflicts with '%s'\n",
+ conflict->package1, conflict->package2);
+ /* check if the conflicting package is about to be removed/replaced.
+ * if so, then just ignore it. */
for(j = trans->packages; j && !found; j = j->next) {
sync = j->data;
if(sync->type == PM_SYNC_TYPE_REPLACE) {
- if(_alpm_pkg_find(miss->depend.name, sync->data)) {
- found = 1;
- }
+ found = _alpm_pkg_find(conflict->package2, sync->data);
}
}
if(found) {
- _alpm_log(PM_LOG_DEBUG, _("'%s' is already elected for removal -- skipping"),
- miss->depend.name);
+ _alpm_log(PM_LOG_DEBUG, "'%s' is already elected for removal -- skipping\n",
+ alpm_pkg_get_name(found));
continue;
}
- sync = _alpm_sync_find(trans->packages, miss->target);
+ sync = _alpm_sync_find(trans->packages, conflict->package1);
if(sync == NULL) {
- _alpm_log(PM_LOG_DEBUG, _("'%s' not found in transaction set -- skipping"),
- miss->target);
+ _alpm_log(PM_LOG_DEBUG, "'%s' not found in transaction set -- skipping\n",
+ conflict->package1);
continue;
}
- local = _alpm_db_get_pkgfromcache(db_local, miss->depend.name);
- /* check if this package also "provides" the package it's conflicting with
- */
- if(alpm_list_find_str(alpm_pkg_get_provides(sync->pkg), miss->depend.name)) {
- /* so just treat it like a "replaces" item so the REQUIREDBY
- * fields are inherited properly.
- */
- _alpm_log(PM_LOG_DEBUG, _("package '%s' provides its own conflict"), miss->target);
- if(local) {
- /* nothing to do for now: it will be handled later
- * (not the same behavior as in pacman 2.x) */
- } else {
+ pmpkg_t *local = _alpm_db_get_pkgfromcache(db_local, conflict->package2);
+ /* check if this package provides the package it's conflicting with */
+ if(alpm_list_find(alpm_pkg_get_provides(sync->pkg),
+ conflict->package2, _alpm_prov_cmp)) {
+ /* treat like a replaces item so requiredby fields are
+ * inherited properly. */
+ _alpm_log(PM_LOG_DEBUG, "package '%s' provides its own conflict\n",
+ conflict->package1);
+ if(!local) {
char *rmpkg = NULL;
- int target, depend;
- /* hmmm, depend.name isn't installed, so it must be conflicting
+ void *target, *depend;
+ /* hmmm, package2 isn't installed, so it must be conflicting
* with another package in our final list. For example:
*
* pacman -S blackbox xfree86
@@ -542,226 +544,422 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
* opting for xfree86 instead.
*/
- /* figure out which one was requested in targets. If they both were,
- * then it's still an unresolvable conflict. */
- target = alpm_list_find_str(trans->targets, miss->target);
- depend = alpm_list_find_str(trans->targets, miss->depend.name);
+ /* figure out which one was requested in targets. If they both
+ * were, then it's still an unresolvable conflict. */
+ target = alpm_list_find_str(trans->targets, conflict->package1);
+ depend = alpm_list_find_str(trans->targets, conflict->package2);
if(depend && !target) {
- _alpm_log(PM_LOG_DEBUG, _("'%s' is in the target list -- keeping it"),
- miss->depend.name);
- /* remove miss->target */
- rmpkg = miss->target;
+ _alpm_log(PM_LOG_DEBUG, "'%s' is in the target list -- keeping it\n",
+ conflict->package2);
+ /* remove conflict->package1 */
+ rmpkg = conflict->package1;
} else if(target && !depend) {
- _alpm_log(PM_LOG_DEBUG, _("'%s' is in the target list -- keeping it"),
- miss->target);
- /* remove miss->depend.name */
- rmpkg = miss->depend.name;
+ _alpm_log(PM_LOG_DEBUG, "'%s' is in the target list -- keeping it\n",
+ conflict->package1);
+ /* remove conflict->package2 */
+ rmpkg = conflict->package2;
} else {
- /* miss->depend.name is not needed, miss->target already provides
+ /* miss->target2 is not needed, miss->target already provides
* it, let's resolve the conflict */
- rmpkg = miss->depend.name;
+ rmpkg = conflict->package2;
}
if(rmpkg) {
pmsyncpkg_t *rsync = _alpm_sync_find(trans->packages, rmpkg);
void *vpkg;
- _alpm_log(PM_LOG_DEBUG, _("removing '%s' from target list"), rsync->pkg->name);
- trans->packages = alpm_list_remove(trans->packages, rsync, syncpkg_cmp, &vpkg);
- FREESYNC(vpkg);
+ _alpm_log(PM_LOG_DEBUG, "removing '%s' from target list\n",
+ rsync->pkg->name);
+ trans->packages = alpm_list_remove(trans->packages, rsync,
+ syncpkg_cmp, &vpkg);
+ _alpm_sync_free(vpkg);
continue;
}
}
}
- /* It's a conflict -- see if they want to remove it
- */
- _alpm_log(PM_LOG_DEBUG, _("resolving package '%s' conflict"), miss->target);
+ /* It's a conflict -- see if they want to remove it */
+ _alpm_log(PM_LOG_DEBUG, "resolving package '%s' conflict\n",
+ conflict->package1);
if(local) {
int doremove = 0;
- if(!alpm_list_find_str(asked, miss->depend.name)) {
- QUESTION(trans, PM_TRANS_CONV_CONFLICT_PKG, miss->target, miss->depend.name, NULL, &doremove);
- asked = alpm_list_add(asked, strdup(miss->depend.name));
+ if(!alpm_list_find_str(asked, conflict->package2)) {
+ QUESTION(trans, PM_TRANS_CONV_CONFLICT_PKG, conflict->package1,
+ conflict->package2, NULL, &doremove);
+ asked = alpm_list_add(asked, strdup(conflict->package2));
if(doremove) {
- pmsyncpkg_t *rsync = _alpm_sync_find(trans->packages, miss->depend.name);
- pmpkg_t *q = _alpm_pkg_new(miss->depend.name, NULL);
- if(q == NULL) {
- if(data) {
- FREELIST(*data);
- }
- ret = -1;
- goto cleanup;
- }
- q->requiredby = alpm_list_strdup(alpm_pkg_get_requiredby(local));
+ pmpkg_t *q = _alpm_pkg_dup(local);
if(sync->type != PM_SYNC_TYPE_REPLACE) {
/* switch this sync type to REPLACE */
sync->type = PM_SYNC_TYPE_REPLACE;
- FREEPKG(sync->data);
+ _alpm_pkg_free(sync->data);
+ sync->data = NULL;
}
/* append to the replaces list */
- _alpm_log(PM_LOG_DEBUG, _("electing '%s' for removal"), miss->depend.name);
+ _alpm_log(PM_LOG_DEBUG, "electing '%s' for removal\n",
+ conflict->package2);
sync->data = alpm_list_add(sync->data, q);
+ /* see if the package is in the current target list */
+ pmsyncpkg_t *rsync = _alpm_sync_find(trans->packages,
+ conflict->package2);
if(rsync) {
/* remove it from the target list */
void *vpkg;
- _alpm_log(PM_LOG_DEBUG, _("removing '%s' from target list"), miss->depend.name);
- trans->packages = alpm_list_remove(trans->packages, rsync, syncpkg_cmp, &vpkg);
- FREESYNC(vpkg);
+ _alpm_log(PM_LOG_DEBUG, "removing '%s' from target list\n",
+ conflict->package2);
+ trans->packages = alpm_list_remove(trans->packages, rsync,
+ syncpkg_cmp, &vpkg);
+ _alpm_sync_free(vpkg);
}
} else {
/* abort */
- _alpm_log(PM_LOG_ERROR, _("unresolvable package conflicts detected"));
+ _alpm_log(PM_LOG_ERROR, _("unresolvable package conflicts detected\n"));
errorout = 1;
- if(data) {
- if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(pmdepmissing_t));
- FREELIST(*data);
- pm_errno = PM_ERR_MEMORY;
- ret = -1;
- goto cleanup;
- }
- *miss = *(pmdepmissing_t *)i->data;
- *data = alpm_list_add(*data, miss);
- }
}
}
} else {
- _alpm_log(PM_LOG_ERROR, _("unresolvable package conflicts detected"));
+ _alpm_log(PM_LOG_ERROR, _("unresolvable package conflicts detected\n"));
errorout = 1;
- if(data) {
- if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(pmdepmissing_t));
- FREELIST(*data);
- pm_errno = PM_ERR_MEMORY;
- ret = -1;
- goto cleanup;
- }
- *miss = *(pmdepmissing_t *)i->data;
- *data = alpm_list_add(*data, miss);
- }
}
}
if(errorout) {
+ /* The last conflict was unresolvable, so we duplicate it and add it to *data */
pm_errno = PM_ERR_CONFLICTING_DEPS;
+ if(data) {
+ pmconflict_t *lastconflict = conflict;
+ if((conflict = malloc(sizeof(pmconflict_t))) == NULL) {
+ _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %zd bytes\n"),
+ sizeof(pmconflict_t));
+ FREELIST(*data);
+ pm_errno = PM_ERR_MEMORY;
+ } else {
+ *conflict = *lastconflict;
+ *data = alpm_list_add(*data, conflict);
+ }
+ }
+ FREELIST(asked);
+ FREELIST(deps);
ret = -1;
goto cleanup;
}
- FREELIST(deps);
FREELIST(asked);
+ FREELIST(deps);
}
EVENT(trans, PM_TRANS_EVT_INTERCONFLICTS_DONE, NULL, NULL);
}
- FREELISTPTR(list);
-
- /* XXX: this fails for cases where a requested package wants
- * a dependency that conflicts with an older version of
- * the package. It will be removed from final, and the user
- * has to re-request it to get it installed properly.
- *
- * Not gonna happen very often, but should be dealt with...
- */
-
if(!(trans->flags & PM_TRANS_FLAG_NODEPS)) {
- /* Check dependencies of packages in rmtargs and make sure
- * we won't be breaking anything by removing them.
- * If a broken dep is detected, make sure it's not from a
- * package that's in our final (upgrade) list.
- */
- /*EVENT(trans, PM_TRANS_EVT_CHECKDEPS_DONE, NULL, NULL);*/
+ /* rebuild remove and list */
+ alpm_list_free(list);
+ list = NULL;
+ for(i = trans->packages; i; i = i->next) {
+ pmsyncpkg_t *sync = i->data;
+ list = alpm_list_add(list, sync->pkg);
+ }
+ alpm_list_free(remove);
+ remove = NULL;
for(i = trans->packages; i; i = i->next) {
pmsyncpkg_t *sync = i->data;
if(sync->type == PM_SYNC_TYPE_REPLACE) {
for(j = sync->data; j; j = j->next) {
- list = alpm_list_add(list, j->data);
+ remove = alpm_list_add(remove, j->data);
}
}
}
- if(list) {
- _alpm_log(PM_LOG_DEBUG, _("checking dependencies of packages designated for removal"));
- deps = _alpm_checkdeps(trans, db_local, PM_TRANS_TYPE_REMOVE, list);
- if(deps) {
- int errorout = 0;
- for(i = deps; i; i = i->next) {
- pmdepmissing_t *miss = i->data;
- if(!_alpm_sync_find(trans->packages, miss->depend.name)) {
- int pfound = 0;
- alpm_list_t *k;
- /* If miss->depend.name depends on something that miss->target and a
- * package in final both provide, then it's okay... */
- pmpkg_t *leavingp = _alpm_db_get_pkgfromcache(db_local, miss->target);
- pmpkg_t *conflictp = _alpm_db_get_pkgfromcache(db_local, miss->depend.name);
- if(!leavingp || !conflictp) {
- _alpm_log(PM_LOG_ERROR, _("something has gone horribly wrong"));
- ret = -1;
- goto cleanup;
- }
- /* Look through the upset package's dependencies and try to match one up
- * to a provisio from the package we want to remove */
- for(k = alpm_pkg_get_depends(conflictp); k && !pfound; k = k->next) {
- alpm_list_t *m;
- for(m = alpm_pkg_get_provides(leavingp); m && !pfound; m = m->next) {
- if(!strcmp(k->data, m->data)) {
- /* Found a match -- now look through final for a package that
- * provides the same thing. If none are found, then it truly
- * is an unresolvable conflict. */
- alpm_list_t *n, *o;
- for(n = trans->packages; n && !pfound; n = n->next) {
- pmsyncpkg_t *sp = n->data;
- pmpkg_t *sppkg = sp->pkg;
- for(o = alpm_pkg_get_provides(sppkg); o && !pfound; o = o->next) {
- if(!strcmp(m->data, o->data)) {
- /* found matching provisio -- we're good to go */
- _alpm_log(PM_LOG_DEBUG, _("found '%s' as a provision for '%s' -- conflict aborted"),
- alpm_pkg_get_name(sppkg), (char *)o->data);
- pfound = 1;
- }
- }
- }
- }
- }
- }
- if(!pfound) {
- if(!errorout) {
- errorout = 1;
- }
- if(data) {
- if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(pmdepmissing_t));
- FREELIST(*data);
- pm_errno = PM_ERR_MEMORY;
- ret = -1;
- goto cleanup;
- }
- *miss = *(pmdepmissing_t *)i->data;
- *data = alpm_list_add(*data, miss);
- }
- }
- }
- }
- if(errorout) {
- pm_errno = PM_ERR_UNSATISFIED_DEPS;
- ret = -1;
- goto cleanup;
+
+ _alpm_log(PM_LOG_DEBUG, "checking dependencies\n");
+ deps = alpm_checkdeps(db_local, 1, remove, list);
+ if(deps) {
+ pm_errno = PM_ERR_UNSATISFIED_DEPS;
+ ret = -1;
+ *data = deps;
+ goto cleanup;
+ }
+ }
+
+cleanup:
+ alpm_list_free(list);
+ alpm_list_free(remove);
+
+ return(ret);
+}
+
+/** Returns a list of deltas that should be downloaded instead of the
+ * package.
+ *
+ * It first tests if a delta path exists between the currently installed
+ * version (if any) and the version to upgrade to. If so, the delta path
+ * is used if its size is below a set percentage (MAX_DELTA_RATIO) of
+ * the package size, Otherwise, an empty list is returned.
+ *
+ * @param newpkg the new package to upgrade to
+ * @param db_local the local database
+ *
+ * @return the list of pmdelta_t * objects. NULL (the empty list) is
+ * returned if the package should be downloaded instead of deltas.
+ */
+static alpm_list_t *pkg_upgrade_delta_path(pmpkg_t *newpkg, pmdb_t *db_local)
+{
+ pmpkg_t *oldpkg = alpm_db_get_pkg(db_local, newpkg->name);
+ alpm_list_t *ret = NULL;
+
+ if(oldpkg) {
+ const char *oldname = alpm_pkg_get_filename(oldpkg);
+ char *oldpath = _alpm_filecache_find(oldname);
+
+ if(oldpath) {
+ alpm_list_t *deltas = _alpm_shortest_delta_path(
+ alpm_pkg_get_deltas(newpkg),
+ alpm_pkg_get_version(oldpkg),
+ alpm_pkg_get_version(newpkg));
+
+ if(deltas) {
+ unsigned long dltsize = _alpm_delta_path_size(deltas);
+ unsigned long pkgsize = alpm_pkg_get_size(newpkg);
+
+ if(dltsize < pkgsize * MAX_DELTA_RATIO) {
+ ret = deltas;
+ } else {
+ ret = NULL;
+ alpm_list_free(deltas);
}
- FREELIST(deps);
}
+
+ FREE(oldpath);
}
- /*EVENT(trans, PM_TRANS_EVT_CHECKDEPS_DONE, NULL, NULL);*/
}
-#ifndef __sun__
- /* check for free space only in case the packages will be extracted */
- if(!(trans->flags & PM_TRANS_FLAG_NOCONFLICTS)) {
- if(_alpm_check_freespace(trans, data) == -1) {
- /* pm_errno is set by check_freespace */
- ret = -1;
- goto cleanup;
+ return(ret);
+}
+
+/** Returns the size of the files that will be downloaded to install a
+ * package.
+ *
+ * @param newpkg the new package to upgrade to
+ * @param db_local the local database
+ *
+ * @return the size of the download
+ */
+unsigned long SYMEXPORT alpm_pkg_download_size(pmpkg_t *newpkg, pmdb_t *db_local)
+{
+ char *fpath = _alpm_filecache_find(alpm_pkg_get_filename(newpkg));
+ unsigned long size = 0;
+
+ if(fpath) {
+ size = 0;
+ } else if(handle->usedelta) {
+ alpm_list_t *deltas = pkg_upgrade_delta_path(newpkg, db_local);
+
+ if(deltas) {
+ size = _alpm_delta_path_size_uncached(deltas);
+ } else {
+ size = alpm_pkg_get_size(newpkg);
}
+
+ alpm_list_free(deltas);
+ } else {
+ size = alpm_pkg_get_size(newpkg);
}
-#endif
-cleanup:
- FREELISTPTR(list);
- FREELISTPTR(trail);
- FREELIST(asked);
+ FREE(fpath);
+
+ return(size);
+}
+
+/** Applies delta files to create an upgraded package file.
+ *
+ * All intermediate files are deleted, leaving only the starting and
+ * ending package files.
+ *
+ * @param trans the transaction
+ * @param patches A list of alternating pmpkg_t * and pmdelta_t *
+ * objects. The patch command will be built using the pmpkg_t, pmdelta_t
+ * pair.
+ *
+ * @return 0 if all delta files were able to be applied, 1 otherwise.
+ */
+static int apply_deltas(pmtrans_t *trans, alpm_list_t *patches)
+{
+ /* keep track of the previous package in the loop to decide if a
+ * package file should be deleted */
+ pmpkg_t *lastpkg = NULL;
+ int lastpkg_failed = 0;
+ int ret = 0;
+ const char *cachedir = _alpm_filecache_setup();
+
+ alpm_list_t *p = patches;
+ while(p) {
+ pmpkg_t *pkg;
+ pmdelta_t *d;
+ char command[PATH_MAX], fname[PATH_MAX];
+ char pkgfilename[PKG_FILENAME_LEN];
+
+ pkg = alpm_list_getdata(p);
+ p = alpm_list_next(p);
+
+ d = alpm_list_getdata(p);
+ p = alpm_list_next(p);
+
+ /* if patching fails, ignore the rest of that package's deltas */
+ if(lastpkg_failed) {
+ if(pkg == lastpkg) {
+ continue;
+ } else {
+ lastpkg_failed = 0;
+ }
+ }
+
+ /* an example of the patch command: (using /cache for cachedir)
+ * xdelta patch /cache/pacman_3.0.0-1_to_3.0.1-1-i686.delta \
+ * /cache/pacman-3.0.0-1-i686.pkg.tar.gz \
+ * /cache/pacman-3.0.1-1-i686.pkg.tar.gz
+ */
+
+ /* build the patch command */
+ snprintf(command, PATH_MAX,
+ "xdelta patch" /* the command */
+ " %s/%s" /* the delta */
+ " %s/%s-%s-%s" PKGEXT /* the 'from' package */
+ " %s/%s-%s-%s" PKGEXT, /* the 'to' package */
+ cachedir, d->filename,
+ cachedir, pkg->name, d->from, pkg->arch,
+ cachedir, pkg->name, d->to, pkg->arch);
+
+ _alpm_log(PM_LOG_DEBUG, _("command: %s\n"), command);
+
+ snprintf(pkgfilename, PKG_FILENAME_LEN, "%s-%s-%s" PKGEXT,
+ pkg->name, d->to, pkg->arch);
+
+ EVENT(trans, PM_TRANS_EVT_DELTA_PATCH_START, pkgfilename, d->filename);
+
+ if(system(command) == 0) {
+ EVENT(trans, PM_TRANS_EVT_DELTA_PATCH_DONE, NULL, NULL);
+
+ /* delete the delta file */
+ snprintf(fname, PATH_MAX, "%s/%s", cachedir, d->filename);
+ unlink(fname);
+
+ /* Delete the 'from' package but only if it is an intermediate
+ * package. The starting 'from' package should be kept, just
+ * as if deltas were not used. Delete the package file if the
+ * previous iteration of the loop used the same package. */
+ if(pkg == lastpkg) {
+ snprintf(fname, PATH_MAX, "%s/%s-%s-%s" PKGEXT,
+ cachedir, pkg->name, d->from, pkg->arch);
+ unlink(fname);
+ } else {
+ lastpkg = pkg;
+ }
+ } else {
+ EVENT(trans, PM_TRANS_EVT_DELTA_PATCH_FAILED, NULL, NULL);
+ lastpkg_failed = 1;
+ ret = 1;
+ }
+ }
+
+ return(ret);
+}
+
+/** Compares the md5sum of a file to the expected value.
+ *
+ * If the md5sum does not match, the user is asked whether the file
+ * should be deleted.
+ *
+ * @param trans the transaction
+ * @param filename the filename of the file to test
+ * @param md5sum the expected md5sum of the file
+ * @param data data to write the error messages to
+ *
+ * @return 0 if the md5sum matched, 1 otherwise
+ */
+static int test_md5sum(pmtrans_t *trans, const char *filename,
+ const char *md5sum, alpm_list_t **data)
+{
+ char *filepath;
+ char *md5sum2;
+ char *errormsg = NULL;
+ int ret = 0;
+
+ filepath = _alpm_filecache_find(filename);
+ md5sum2 = alpm_get_md5sum(filepath);
+
+ if(md5sum == NULL) {
+ /* TODO wtf is this? malloc'd strings for error messages? */
+ if((errormsg = calloc(512, sizeof(char))) == NULL) {
+ RET_ERR(PM_ERR_MEMORY, -1);
+ }
+ snprintf(errormsg, 512, _("can't get md5 checksum for file %s\n"),
+ filename);
+ *data = alpm_list_add(*data, errormsg);
+ ret = 1;
+ } else if(md5sum2 == NULL) {
+ if((errormsg = calloc(512, sizeof(char))) == NULL) {
+ RET_ERR(PM_ERR_MEMORY, -1);
+ }
+ snprintf(errormsg, 512, _("can't get md5 checksum for file %s\n"),
+ filename);
+ *data = alpm_list_add(*data, errormsg);
+ ret = 1;
+ } else if(strcmp(md5sum, md5sum2) != 0) {
+ int doremove = 0;
+ if((errormsg = calloc(512, sizeof(char))) == NULL) {
+ RET_ERR(PM_ERR_MEMORY, -1);
+ }
+ QUESTION(trans, PM_TRANS_CONV_CORRUPTED_PKG, (char *)filename,
+ NULL, NULL, &doremove);
+ if(doremove) {
+ unlink(filepath);
+ }
+ snprintf(errormsg, 512, _("file %s was corrupted (bad MD5 checksum)\n"),
+ filename);
+ *data = alpm_list_add(*data, errormsg);
+ ret = 1;
+ }
+
+ FREE(filepath);
+ FREE(md5sum2);
+
+ return(ret);
+}
+
+/** Compares the md5sum of a delta to the expected value.
+ *
+ * @param trans the transaction
+ * @param delta the delta to test
+ * @param data data to write the error messages to
+ *
+ * @return 0 if the md5sum matched, 1 otherwise
+ */
+static int test_delta_md5sum(pmtrans_t *trans, pmdelta_t *delta,
+ alpm_list_t **data)
+{
+ const char *filename;
+ const char *md5sum;
+ int ret = 0;
+
+ filename = alpm_delta_get_filename(delta);
+ md5sum = alpm_delta_get_md5sum(delta);
+
+ ret = test_md5sum(trans, filename, md5sum, data);
+
+ return(ret);
+}
+
+/** Compares the md5sum of a package to the expected value.
+ *
+ * @param trans the transaction
+ * @param pkg the package to test
+ * @param data data to write the error messages to
+ *
+ * @return 0 if the md5sum matched, 1 otherwise
+ */
+static int test_pkg_md5sum(pmtrans_t *trans, pmpkg_t *pkg, alpm_list_t **data)
+{
+ const char *filename;
+ const char *md5sum;
+ int ret = 0;
+
+ filename = alpm_pkg_get_filename(pkg);
+ md5sum = alpm_pkg_get_md5sum(pkg);
+
+ ret = test_md5sum(trans, filename, md5sum, data);
return(ret);
}
@@ -769,68 +967,94 @@ cleanup:
int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
{
alpm_list_t *i, *j, *files = NULL;
+ alpm_list_t *patches = NULL, *deltas = NULL;
pmtrans_t *tr = NULL;
int replaces = 0, retval = 0;
- char ldir[PATH_MAX];
- int varcache = 1;
+ const char *cachedir = NULL;
+ int dltotal = 0, dl = 0;
ALPM_LOG_FUNC;
ASSERT(db_local != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+ cachedir = _alpm_filecache_setup();
trans->state = STATE_DOWNLOADING;
- /* group sync records by repository and download */
- snprintf(ldir, PATH_MAX, "%s%s", handle->root, handle->cachedir);
+ /* Sum up the download sizes. This has to be in its own loop because
+ * the download loop is grouped by db. */
+ for(j = trans->packages; j; j = j->next) {
+ pmsyncpkg_t *sync = j->data;
+ pmpkg_t *spkg = sync->pkg;
+ dltotal += alpm_pkg_download_size(spkg, db_local);
+ }
+
+ /* group sync records by repository and download */
for(i = handle->dbs_sync; i; i = i->next) {
pmdb_t *current = i->data;
for(j = trans->packages; j; j = j->next) {
pmsyncpkg_t *sync = j->data;
pmpkg_t *spkg = sync->pkg;
- pmdb_t *dbs = spkg->data;
+ pmdb_t *dbs = spkg->origin_data.db;
if(current == dbs) {
const char *fname = NULL;
- char path[PATH_MAX];
fname = alpm_pkg_get_filename(spkg);
if(trans->flags & PM_TRANS_FLAG_PRINTURIS) {
- EVENT(trans, PM_TRANS_EVT_PRINTURI, (char *)alpm_db_get_url(current), (char *)fname);
+ EVENT(trans, PM_TRANS_EVT_PRINTURI, (char *)alpm_db_get_url(current),
+ (char *)fname);
} else {
- struct stat buf;
- snprintf(path, PATH_MAX, "%s/%s", ldir, fname);
- if(stat(path, &buf)) {
- /* file is not in the cache dir, so add it to the list */
- files = alpm_list_add(files, strdup(fname));
- } else {
- _alpm_log(PM_LOG_DEBUG, _("%s is already in the cache\n"), fname);
+ char *fpath = _alpm_filecache_find(fname);
+ if(!fpath) {
+ if(handle->usedelta) {
+ alpm_list_t *delta_path = pkg_upgrade_delta_path(spkg, db_local);
+
+ if(delta_path) {
+ alpm_list_t *dlts = NULL;
+
+ for(dlts = delta_path; dlts; dlts = alpm_list_next(dlts)) {
+ pmdelta_t *d = (pmdelta_t *)alpm_list_getdata(dlts);
+ char *fpath2 = _alpm_filecache_find(d->filename);
+
+ if(!fpath2) {
+ /* add the delta filename to the download list if
+ * it's not in the cache*/
+ files = alpm_list_add(files, strdup(d->filename));
+ }
+
+ /* save the package and delta so that the xdelta patch
+ * command can be run after the downloads finish */
+ patches = alpm_list_add(patches, spkg);
+ patches = alpm_list_add(patches, d);
+
+ /* keep a list of the delta files for md5sums */
+ deltas = alpm_list_add(deltas, d);
+ }
+
+ alpm_list_free(delta_path);
+ delta_path = NULL;
+ } else {
+ /* no deltas to download, so add the file to the
+ * download list */
+ files = alpm_list_add(files, strdup(fname));
+ }
+ } else {
+ /* not using deltas, so add the file to the download list */
+ files = alpm_list_add(files, strdup(fname));
+ }
}
+ FREE(fpath);
}
}
}
if(files) {
- struct stat buf;
EVENT(trans, PM_TRANS_EVT_RETRIEVE_START, current->treename, NULL);
- if(stat(ldir, &buf)) {
- /* no cache directory.... try creating it */
- _alpm_log(PM_LOG_WARNING, _("no %s cache exists, creating...\n"), ldir);
- alpm_logaction(_("warning: no %s cache exists, creating..."), ldir);
- if(_alpm_makepath(ldir)) {
- /* couldn't mkdir the cache directory, so fall back to /tmp and unlink
- * the package afterwards.
- */
- _alpm_log(PM_LOG_WARNING, _("couldn't create package cache, using /tmp instead\n"));
- alpm_logaction(_("warning: couldn't create package cache, using /tmp instead"));
- snprintf(ldir, PATH_MAX, "%stmp", alpm_option_get_root());
- alpm_option_set_cachedir(ldir);
- varcache = 0;
- }
- }
- if(_alpm_downloadfiles(current->servers, ldir, files)) {
- _alpm_log(PM_LOG_WARNING, _("failed to retrieve some files from %s\n"), current->treename);
+ if(_alpm_downloadfiles(current->servers, cachedir, files, &dl, dltotal)) {
+ _alpm_log(PM_LOG_WARNING, _("failed to retrieve some files from %s\n"),
+ current->treename);
RET_ERR(PM_ERR_RETRIEVE, -1);
}
FREELIST(files);
@@ -840,66 +1064,62 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
return(0);
}
- /* Check integrity of files */
+ if(handle->usedelta) {
+ int ret = 0;
+
+ /* only output if there are deltas to work with */
+ if(deltas) {
+ /* Check integrity of deltas */
+ EVENT(trans, PM_TRANS_EVT_DELTA_INTEGRITY_START, NULL, NULL);
+
+ for(i = deltas; i; i = i->next) {
+ pmdelta_t *d = alpm_list_getdata(i);
+
+ ret = test_delta_md5sum(trans, d, data);
+
+ if(ret == 1) {
+ retval = 1;
+ } else if(ret == -1) { /* -1 is for serious errors */
+ RET_ERR(pm_errno, -1);
+ }
+ }
+ if(retval) {
+ pm_errno = PM_ERR_DLT_CORRUPTED;
+ goto error;
+ }
+ EVENT(trans, PM_TRANS_EVT_DELTA_INTEGRITY_DONE, NULL, NULL);
+
+ /* Use the deltas to generate the packages */
+ EVENT(trans, PM_TRANS_EVT_DELTA_PATCHES_START, NULL, NULL);
+ ret = apply_deltas(trans, patches);
+ EVENT(trans, PM_TRANS_EVT_DELTA_PATCHES_DONE, NULL, NULL);
+
+ alpm_list_free(patches);
+ patches = NULL;
+ alpm_list_free(deltas);
+ deltas = NULL;
+ }
+ if(ret) {
+ pm_errno = PM_ERR_DLT_PATCHFAILED;
+ goto error;
+ }
+ }
+
+ /* Check integrity of packages */
EVENT(trans, PM_TRANS_EVT_INTEGRITY_START, NULL, NULL);
for(i = trans->packages; i; i = i->next) {
pmsyncpkg_t *sync = i->data;
pmpkg_t *spkg = sync->pkg;
- char str[PATH_MAX];
- const char *pkgname;
- char *md5sum1, *md5sum2, *sha1sum1, *sha1sum2;
- char *ptr=NULL;
-
- pkgname = alpm_pkg_get_filename(spkg);
- md5sum1 = spkg->md5sum;
- sha1sum1 = spkg->sha1sum;
-
- if((md5sum1 == NULL) && (sha1sum1 == NULL)) {
- /* TODO wtf is this? malloc'd strings for error messages? */
- if((ptr = (char *)malloc(512)) == NULL) {
- RET_ERR(PM_ERR_MEMORY, -1);
- }
- snprintf(ptr, 512, _("can't get md5 or sha1 checksum for package %s\n"), pkgname);
- *data = alpm_list_add(*data, ptr);
- retval = 1;
- continue;
- }
- snprintf(str, PATH_MAX, "%s%s%s", handle->root, handle->cachedir, pkgname);
- md5sum2 = _alpm_MDFile(str);
- sha1sum2 = _alpm_SHAFile(str);
- if(md5sum2 == NULL && sha1sum2 == NULL) {
- if((ptr = (char *)malloc(512)) == NULL) {
- RET_ERR(PM_ERR_MEMORY, -1);
- }
- snprintf(ptr, 512, _("can't get md5 or sha1 checksum for package %s\n"), pkgname);
- *data = alpm_list_add(*data, ptr);
- retval = 1;
- continue;
- }
- if((strcmp(md5sum1, md5sum2) != 0) && (strcmp(sha1sum1, sha1sum2) != 0)) {
- int doremove=0;
- if((ptr = (char *)malloc(512)) == NULL) {
- RET_ERR(PM_ERR_MEMORY, -1);
- }
- if(trans->flags & PM_TRANS_FLAG_ALLDEPS) {
- doremove=1;
- } else {
- QUESTION(trans, PM_TRANS_CONV_CORRUPTED_PKG, (char *)pkgname, NULL, NULL, &doremove);
- }
- if(doremove) {
- char str[PATH_MAX];
- snprintf(str, PATH_MAX, "%s%s%s", handle->root, handle->cachedir, pkgname);
- unlink(str);
- snprintf(ptr, 512, _("archive %s was corrupted (bad MD5 or SHA1 checksum)\n"), pkgname);
- } else {
- snprintf(ptr, 512, _("archive %s is corrupted (bad MD5 or SHA1 checksum)\n"), pkgname);
- }
- *data = alpm_list_add(*data, ptr);
+ int ret = 0;
+
+ ret = test_pkg_md5sum(trans, spkg, data);
+
+ if(ret == 1) {
retval = 1;
+ } else if(ret == -1) { /* -1 is for serious errors */
+ RET_ERR(pm_errno, -1);
}
- FREE(md5sum2);
- FREE(sha1sum2);
}
if(retval) {
pm_errno = PM_ERR_PKG_CORRUPTED;
@@ -914,13 +1134,13 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
trans->state = STATE_COMMITING;
tr = _alpm_trans_new();
if(tr == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not create removal transaction"));
+ _alpm_log(PM_LOG_ERROR, _("could not create removal transaction\n"));
pm_errno = PM_ERR_MEMORY;
goto error;
}
if(_alpm_trans_init(tr, PM_TRANS_TYPE_REMOVE, PM_TRANS_FLAG_NODEPS, NULL, NULL, NULL) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not initialize the removal transaction"));
+ _alpm_log(PM_LOG_ERROR, _("could not initialize the removal transaction\n"));
goto error;
}
@@ -940,44 +1160,49 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
}
}
if(replaces) {
- _alpm_log(PM_LOG_DEBUG, _("removing conflicting and to-be-replaced packages"));
+ _alpm_log(PM_LOG_DEBUG, "removing conflicting and to-be-replaced packages\n");
if(_alpm_trans_prepare(tr, data) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not prepare removal transaction"));
+ _alpm_log(PM_LOG_ERROR, _("could not prepare removal transaction\n"));
goto error;
}
/* we want the frontend to be aware of commit details */
tr->cb_event = trans->cb_event;
if(_alpm_trans_commit(tr, NULL) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not commit removal transaction"));
+ _alpm_log(PM_LOG_ERROR, _("could not commit removal transaction\n"));
goto error;
}
}
- FREETRANS(tr);
+ _alpm_trans_free(tr);
+ tr = NULL;
/* install targets */
- _alpm_log(PM_LOG_DEBUG, _("installing packages"));
+ _alpm_log(PM_LOG_DEBUG, "installing packages\n");
tr = _alpm_trans_new();
if(tr == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not create transaction"));
+ _alpm_log(PM_LOG_ERROR, _("could not create transaction\n"));
pm_errno = PM_ERR_MEMORY;
goto error;
}
if(_alpm_trans_init(tr, PM_TRANS_TYPE_UPGRADE, trans->flags | PM_TRANS_FLAG_NODEPS, trans->cb_event, trans->cb_conv, trans->cb_progress) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not initialize transaction"));
+ _alpm_log(PM_LOG_ERROR, _("could not initialize transaction\n"));
goto error;
}
for(i = trans->packages; i; i = i->next) {
pmsyncpkg_t *sync = i->data;
pmpkg_t *spkg = sync->pkg;
-
- const char *fname = NULL;
- char str[PATH_MAX];
+ const char *fname;
+ char *fpath;
fname = alpm_pkg_get_filename(spkg);
- snprintf(str, PATH_MAX, "%s%s%s", handle->root, handle->cachedir, fname);
- if(_alpm_trans_addtarget(tr, str) == -1) {
+ /* Loop through the cache dirs until we find a matching file */
+ fpath = _alpm_filecache_find(fname);
+
+ if(_alpm_trans_addtarget(tr, fpath) == -1) {
+ FREE(fpath);
goto error;
}
+ FREE(fpath);
+
/* using alpm_list_last() is ok because addtarget() adds the new target at the
* end of the tr->packages list */
spkg = alpm_list_last(tr->packages)->data;
@@ -986,82 +1211,22 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
}
}
if(_alpm_trans_prepare(tr, data) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not prepare transaction"));
+ _alpm_log(PM_LOG_ERROR, _("could not prepare transaction\n"));
/* pm_errno is set by trans_prepare */
goto error;
}
if(_alpm_trans_commit(tr, NULL) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not commit transaction"));
+ _alpm_log(PM_LOG_ERROR, _("could not commit transaction\n"));
goto error;
}
- FREETRANS(tr);
-
- /* propagate replaced packages' requiredby fields to their new owners */
- if(replaces) {
- _alpm_log(PM_LOG_DEBUG, _("updating database for replaced packages' dependencies"));
- for(i = trans->packages; i; i = i->next) {
- pmsyncpkg_t *sync = i->data;
- if(sync->type == PM_SYNC_TYPE_REPLACE) {
- alpm_list_t *j;
- pmpkg_t *new = _alpm_db_get_pkgfromcache(db_local, alpm_pkg_get_name(sync->pkg));
- for(j = sync->data; j; j = j->next) {
- alpm_list_t *k;
- pmpkg_t *old = j->data;
- /* merge lists */
- for(k = alpm_pkg_get_requiredby(old); k; k = k->next) {
- if(!alpm_list_find_str(alpm_pkg_get_requiredby(new), k->data)) {
- /* replace old's name with new's name in the requiredby's dependency list */
- alpm_list_t *m;
- pmpkg_t *depender = _alpm_db_get_pkgfromcache(db_local, k->data);
- if(depender == NULL) {
- /* If the depending package no longer exists in the local db,
- * then it must have ALSO conflicted with sync->pkg. If
- * that's the case, then we don't have anything to propagate
- * here. */
- continue;
- }
- for(m = alpm_pkg_get_depends(depender); m; m = m->next) {
- if(!strcmp(m->data, alpm_pkg_get_name(old))) {
- FREE(m->data);
- m->data = strdup(alpm_pkg_get_name(new));
- }
- }
- if(_alpm_db_write(db_local, depender, INFRQ_DEPENDS) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not update requiredby for database entry %s-%s"),
- alpm_pkg_get_name(new), alpm_pkg_get_version(new));
- }
- /* add the new requiredby */
- new->requiredby = alpm_list_add(alpm_pkg_get_requiredby(new), strdup(k->data));
- }
- }
- }
- if(_alpm_db_write(db_local, new, INFRQ_DEPENDS) == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not update new database entry %s-%s"),
- alpm_pkg_get_name(new), alpm_pkg_get_version(new));
- }
- }
- }
- }
-
- if(!varcache && !(trans->flags & PM_TRANS_FLAG_DOWNLOADONLY)) {
- /* delete packages */
- for(i = files; i; i = i->next) {
- unlink(i->data);
- }
- }
-
- /* run ldconfig if it exists */
- if(handle->trans->state != STATE_INTERRUPTED) {
- _alpm_log(PM_LOG_DEBUG, _("running \"ldconfig -r %s\""), handle->root);
- _alpm_ldconfig(handle->root);
- }
+ _alpm_trans_free(tr);
+ tr = NULL;
return(0);
error:
- FREETRANS(tr);
- /* commiting failed, so this is still just a prepared transaction */
- trans->state = STATE_PREPARED;
+ _alpm_trans_free(tr);
+ tr = NULL;
return(-1);
}
@@ -1076,17 +1241,17 @@ pmsyncpkg_t *_alpm_sync_find(alpm_list_t *syncpkgs, const char* pkgname)
pmpkg_t *pkg = alpm_sync_get_pkg(syncpkg);
if(strcmp(alpm_pkg_get_name(pkg), pkgname) == 0) {
- _alpm_log(PM_LOG_DEBUG, _("found package '%s-%s' in sync"),
+ _alpm_log(PM_LOG_DEBUG, "found package '%s-%s' in sync\n",
alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
return(syncpkg);
}
}
- _alpm_log(PM_LOG_DEBUG, _("package '%s' not found in sync"), pkgname);
+ _alpm_log(PM_LOG_DEBUG, "package '%s' not found in sync\n", pkgname);
return(NULL); /* not found */
}
-pmsynctype_t SYMEXPORT alpm_sync_get_type(pmsyncpkg_t *sync)
+pmsynctype_t SYMEXPORT alpm_sync_get_type(const pmsyncpkg_t *sync)
{
/* Sanity checks */
ASSERT(sync != NULL, return(-1));
@@ -1094,7 +1259,7 @@ pmsynctype_t SYMEXPORT alpm_sync_get_type(pmsyncpkg_t *sync)
return sync->type;
}
-pmpkg_t SYMEXPORT *alpm_sync_get_pkg(pmsyncpkg_t *sync)
+pmpkg_t SYMEXPORT *alpm_sync_get_pkg(const pmsyncpkg_t *sync)
{
/* Sanity checks */
ASSERT(sync != NULL, return(NULL));
@@ -1102,7 +1267,7 @@ pmpkg_t SYMEXPORT *alpm_sync_get_pkg(pmsyncpkg_t *sync)
return sync->pkg;
}
-void SYMEXPORT *alpm_sync_get_data(pmsyncpkg_t *sync)
+void SYMEXPORT *alpm_sync_get_data(const pmsyncpkg_t *sync)
{
/* Sanity checks */
ASSERT(sync != NULL, return(NULL));
diff --git a/lib/libalpm/sync.h b/lib/libalpm/sync.h
index 3ba7e009..0ef42627 100644
--- a/lib/libalpm/sync.h
+++ b/lib/libalpm/sync.h
@@ -1,10 +1,10 @@
/*
* sync.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -17,7 +17,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_SYNC_H
@@ -32,12 +32,12 @@ struct __pmsyncpkg_t {
void *data;
};
-#define FREESYNC(p) do { if(p) { _alpm_sync_free(p); p = NULL; } } while(0)
-
pmsyncpkg_t *_alpm_sync_new(int type, pmpkg_t *spkg, void *data);
-void _alpm_sync_free(void *data);
+void _alpm_sync_free(pmsyncpkg_t *data);
+
+int _alpm_sync_sysupgrade(pmtrans_t *trans,
+ pmdb_t *db_local, alpm_list_t *dbs_sync, alpm_list_t **syncpkgs);
-int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync);
int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, char *name);
int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, alpm_list_t **data);
int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data);
diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c
index 009ec7f1..d9988265 100644
--- a/lib/libalpm/trans.c
+++ b/lib/libalpm/trans.c
@@ -5,7 +5,7 @@
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -18,7 +18,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -27,7 +27,12 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <libintl.h>
+#include <sys/wait.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/statvfs.h>
+#include <unistd.h>
+#include <errno.h>
/* libalpm */
#include "trans.h"
@@ -43,19 +48,188 @@
#include "alpm.h"
#include "deps.h"
#include "cache.h"
-#include "provide.h"
-pmtrans_t *_alpm_trans_new()
+/** \addtogroup alpm_trans Transaction Functions
+ * @brief Functions to manipulate libalpm transactions
+ * @{
+ */
+
+/** Initialize the transaction.
+ * @param type type of the transaction
+ * @param flags flags of the transaction (like nodeps, etc)
+ * @param event event callback function pointer
+ * @param conv question callback function pointer
+ * @param progress progress callback function pointer
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
+int SYMEXPORT alpm_trans_init(pmtranstype_t type, pmtransflag_t flags,
+ alpm_trans_cb_event event, alpm_trans_cb_conv conv,
+ alpm_trans_cb_progress progress)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+
+ ASSERT(handle->trans == NULL, RET_ERR(PM_ERR_TRANS_NOT_NULL, -1));
+
+ /* lock db */
+ handle->lckfd = _alpm_lckmk();
+ if(handle->lckfd == -1) {
+ RET_ERR(PM_ERR_HANDLE_LOCK, -1);
+ }
+
+ handle->trans = _alpm_trans_new();
+ if(handle->trans == NULL) {
+ RET_ERR(PM_ERR_MEMORY, -1);
+ }
+
+ return(_alpm_trans_init(handle->trans, type, flags, event, conv, progress));
+}
+
+/** Search for packages to upgrade and add them to the transaction.
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
+int SYMEXPORT alpm_trans_sysupgrade()
+{
+ pmtrans_t *trans;
+
+ ALPM_LOG_FUNC;
+
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+
+ trans = handle->trans;
+ ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+ ASSERT(trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
+ ASSERT(trans->type == PM_TRANS_TYPE_SYNC, RET_ERR(PM_ERR_TRANS_TYPE, -1));
+
+ return(_alpm_trans_sysupgrade(trans));
+}
+
+/** Add a target to the transaction.
+ * @param target the name of the target to add
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
+int SYMEXPORT alpm_trans_addtarget(char *target)
+{
+ pmtrans_t *trans;
+
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+ ASSERT(target != NULL && strlen(target) != 0, RET_ERR(PM_ERR_WRONG_ARGS, -1));
+
+ trans = handle->trans;
+ ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+ ASSERT(trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
+
+ return(_alpm_trans_addtarget(trans, target));
+}
+
+/** Prepare a transaction.
+ * @param data the address of an alpm_list where detailed description
+ * of an error can be dumped (ie. list of conflicting files)
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
+int SYMEXPORT alpm_trans_prepare(alpm_list_t **data)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+ ASSERT(data != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
+
+ ASSERT(handle->trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+ ASSERT(handle->trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
+
+ return(_alpm_trans_prepare(handle->trans, data));
+}
+
+/** Commit a transaction.
+ * @param data the address of an alpm_list where detailed description
+ * of an error can be dumped (ie. list of conflicting files)
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
+int SYMEXPORT alpm_trans_commit(alpm_list_t **data)
+{
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+
+ ASSERT(handle->trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+ ASSERT(handle->trans->state == STATE_PREPARED, RET_ERR(PM_ERR_TRANS_NOT_PREPARED, -1));
+
+ return(_alpm_trans_commit(handle->trans, data));
+}
+
+/** Interrupt a transaction.
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
+int SYMEXPORT alpm_trans_interrupt()
+{
+ pmtrans_t *trans;
+
+ ALPM_LOG_FUNC;
+
+ /* Sanity checks */
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+
+ trans = handle->trans;
+ ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+ ASSERT(trans->state == STATE_COMMITING || trans->state == STATE_INTERRUPTED,
+ RET_ERR(PM_ERR_TRANS_TYPE, -1));
+
+ trans->state = STATE_INTERRUPTED;
+
+ return(0);
+}
+
+/** Release a transaction.
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
+int SYMEXPORT alpm_trans_release()
{
pmtrans_t *trans;
ALPM_LOG_FUNC;
- if((trans = (pmtrans_t *)malloc(sizeof(pmtrans_t))) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(pmtrans_t));
- return(NULL);
+ /* Sanity checks */
+ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+
+ trans = handle->trans;
+ ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+ ASSERT(trans->state != STATE_IDLE, RET_ERR(PM_ERR_TRANS_NULL, -1));
+
+ _alpm_trans_free(trans);
+ handle->trans = NULL;
+
+ /* unlock db */
+ if(handle->lckfd != -1) {
+ close(handle->lckfd);
+ handle->lckfd = -1;
+ }
+ if(_alpm_lckrm()) {
+ _alpm_log(PM_LOG_WARNING, _("could not remove lock file %s\n"),
+ alpm_option_get_lockfile());
+ alpm_logaction("warning: could not remove lock file %s\n",
+ alpm_option_get_lockfile());
}
+ return(0);
+}
+
+/** @} */
+
+pmtrans_t *_alpm_trans_new()
+{
+ pmtrans_t *trans;
+
+ ALPM_LOG_FUNC;
+
+ CALLOC(trans, 1, sizeof(pmtrans_t), RET_ERR(PM_ERR_MEMORY, NULL));
+
trans->targets = NULL;
trans->packages = NULL;
trans->skip_add = NULL;
@@ -70,10 +244,8 @@ pmtrans_t *_alpm_trans_new()
return(trans);
}
-void _alpm_trans_free(void *data)
+void _alpm_trans_free(pmtrans_t *trans)
{
- pmtrans_t *trans = data;
-
ALPM_LOG_FUNC;
if(trans == NULL) {
@@ -82,14 +254,11 @@ void _alpm_trans_free(void *data)
FREELIST(trans->targets);
if(trans->type == PM_TRANS_TYPE_SYNC) {
- alpm_list_t *i;
- for(i = trans->packages; i; i = i->next) {
- FREESYNC(i->data);
- }
- FREELIST(trans->packages);
+ alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_sync_free);
} else {
- FREELISTPKGS(trans->packages);
+ alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_pkg_free);
}
+ alpm_list_free(trans->packages);
FREELIST(trans->skip_add);
FREELIST(trans->skip_remove);
@@ -123,9 +292,15 @@ int _alpm_trans_sysupgrade(pmtrans_t *trans)
/* Sanity checks */
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
- return(_alpm_sync_sysupgrade(trans, handle->db_local, handle->dbs_sync));
+ return(_alpm_sync_sysupgrade(trans, handle->db_local, handle->dbs_sync,
+ &(trans->packages)));
}
+/** Add a target to the transaction.
+ * @param trans the current transaction
+ * @param target the name of the target to add
+ * @return 0 on success, -1 on error (pm_errno is set accordingly)
+ */
int _alpm_trans_addtarget(pmtrans_t *trans, char *target)
{
ALPM_LOG_FUNC;
@@ -148,14 +323,15 @@ int _alpm_trans_addtarget(pmtrans_t *trans, char *target)
}
break;
case PM_TRANS_TYPE_REMOVE:
+ case PM_TRANS_TYPE_REMOVEUPGRADE:
if(_alpm_remove_loadtarget(trans, handle->db_local, target) == -1) {
- /* pm_errno is set by remove_loadtarget() */
+ /* pm_errno is set by _alpm_remove_loadtarget() */
return(-1);
}
break;
case PM_TRANS_TYPE_SYNC:
if(_alpm_sync_addtarget(trans, handle->db_local, handle->dbs_sync, target) == -1) {
- /* pm_errno is set by sync_loadtarget() */
+ /* pm_errno is set by _alpm_sync_loadtarget() */
return(-1);
}
break;
@@ -189,6 +365,7 @@ int _alpm_trans_prepare(pmtrans_t *trans, alpm_list_t **data)
}
break;
case PM_TRANS_TYPE_REMOVE:
+ case PM_TRANS_TYPE_REMOVEUPGRADE:
if(_alpm_remove_prepare(trans, handle->db_local, data) == -1) {
/* pm_errno is set by _alpm_remove_prepare() */
return(-1);
@@ -228,13 +405,14 @@ int _alpm_trans_commit(pmtrans_t *trans, alpm_list_t **data)
case PM_TRANS_TYPE_ADD:
case PM_TRANS_TYPE_UPGRADE:
if(_alpm_add_commit(trans, handle->db_local) == -1) {
- /* pm_errno is set by _alpm_add_prepare() */
+ /* pm_errno is set by _alpm_add_commit() */
return(-1);
}
break;
case PM_TRANS_TYPE_REMOVE:
+ case PM_TRANS_TYPE_REMOVEUPGRADE:
if(_alpm_remove_commit(trans, handle->db_local) == -1) {
- /* pm_errno is set by _alpm_remove_prepare() */
+ /* pm_errno is set by _alpm_remove_commit() */
return(-1);
}
break;
@@ -251,118 +429,199 @@ int _alpm_trans_commit(pmtrans_t *trans, alpm_list_t **data)
return(0);
}
-int _alpm_trans_update_depends(pmtrans_t *trans, pmpkg_t *pkg)
+/* A cheap grep for text files, returns 1 if a substring
+ * was found in the text file fn, 0 if it wasn't
+ */
+static int grep(const char *fn, const char *needle)
+{
+ FILE *fp;
+
+ if((fp = fopen(fn, "r")) == NULL) {
+ return(0);
+ }
+ while(!feof(fp)) {
+ char line[1024];
+ fgets(line, 1024, fp);
+ if(feof(fp)) {
+ continue;
+ }
+ if(strstr(line, needle)) {
+ fclose(fp);
+ return(1);
+ }
+ }
+ fclose(fp);
+ return(0);
+}
+
+int _alpm_runscriptlet(const char *root, const char *installfn,
+ const char *script, const char *ver,
+ const char *oldver, pmtrans_t *trans)
{
- alpm_list_t *i, *j;
- alpm_list_t *depends = NULL;
- const char *pkgname;
- pmdb_t *localdb;
+ char scriptfn[PATH_MAX];
+ char cmdline[PATH_MAX];
+ char tmpdir[PATH_MAX];
+ char cwd[PATH_MAX];
+ char *scriptpath;
+ struct stat buf;
+ pid_t pid;
+ int clean_tmpdir = 0;
+ int restore_cwd = 0;
+ int retval = 0;
ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
- ASSERT(pkg != NULL, RET_ERR(PM_ERR_PKG_INVALID, -1));
- pkgname = alpm_pkg_get_name(pkg);
- depends = alpm_pkg_get_depends(pkg);
+ if(stat(installfn, &buf)) {
+ /* not found */
+ _alpm_log(PM_LOG_DEBUG, "scriptlet '%s' not found\n", installfn);
+ return(0);
+ }
- if(depends) {
- _alpm_log(PM_LOG_DEBUG, _("updating dependency packages 'requiredby' fields for %s-%s"),
- pkgname, pkg->version);
+ snprintf(tmpdir, PATH_MAX, "%sbin/sh", root);
+ if(stat(tmpdir, &buf)) {
+ /* not found */
+ _alpm_log(PM_LOG_ERROR, _("No /bin/sh in root dir (%s), aborting scriptlet\n"), root);
+ return(0);
+ }
+
+ /* creates a directory in $root/tmp/ for copying/extracting the scriptlet */
+ snprintf(tmpdir, PATH_MAX, "%stmp/", root);
+ if(stat(tmpdir, &buf)) {
+ _alpm_makepath(tmpdir);
+ }
+ snprintf(tmpdir, PATH_MAX, "%stmp/alpm_XXXXXX", root);
+ if(mkdtemp(tmpdir) == NULL) {
+ _alpm_log(PM_LOG_ERROR, _("could not create temp directory\n"));
+ return(1);
} else {
- _alpm_log(PM_LOG_DEBUG, _("package has no dependencies, no other packages to update"));
+ clean_tmpdir = 1;
}
- localdb = alpm_option_get_localdb();
- for(i = depends; i; i = i->next) {
- pmdepend_t* dep = alpm_splitdep(i->data);
- if(dep == NULL) {
- continue;
+ /* either extract or copy the scriptlet */
+ snprintf(scriptfn, PATH_MAX, "%s/.INSTALL", tmpdir);
+ if(!strcmp(script, "pre_upgrade") || !strcmp(script, "pre_install")) {
+ if(_alpm_unpack(installfn, tmpdir, ".INSTALL")) {
+ retval = 1;
}
-
- if(trans->packages && trans->type == PM_TRANS_TYPE_REMOVE) {
- if(_alpm_pkg_find(dep->name, handle->trans->packages)) {
- continue;
- }
+ } else {
+ if(_alpm_copyfile(installfn, scriptfn)) {
+ _alpm_log(PM_LOG_ERROR, _("could not copy tempfile to %s (%s)\n"), scriptfn, strerror(errno));
+ retval = 1;
}
+ }
+ if(retval == 1) {
+ goto cleanup;
+ }
- pmpkg_t *deppkg = _alpm_db_get_pkgfromcache(localdb, dep->name);
- if(!deppkg) {
- int found_provides = 0;
- /* look for a provides package */
- alpm_list_t *provides = _alpm_db_whatprovides(localdb, dep->name);
- for(j = provides; j; j = j->next) {
- if(!j->data) {
- continue;
- }
- pmpkg_t *provpkg = j->data;
- deppkg = _alpm_db_get_pkgfromcache(localdb, alpm_pkg_get_name(provpkg));
+ /* mark the scriptlet as executable */
+ chmod(scriptfn, 0755);
- if(!deppkg) {
- continue;
- }
+ /* chop off the root so we can find the tmpdir in the chroot */
+ scriptpath = scriptfn + strlen(root) - 1;
- found_provides = 1;
-
- /* this is cheating... we call this function to populate the package */
- alpm_list_t *rqdby = alpm_pkg_get_requiredby(deppkg);
-
- _alpm_log(PM_LOG_DEBUG, _("updating 'requiredby' field for package '%s'"),
- alpm_pkg_get_name(deppkg));
- if(trans->type == PM_TRANS_TYPE_REMOVE) {
- void *data = NULL;
- rqdby = alpm_list_remove(rqdby, pkgname, _alpm_str_cmp, &data);
- FREE(data);
- deppkg->requiredby = rqdby;
- } else {
- if(!alpm_list_find_str(rqdby, pkgname)) {
- rqdby = alpm_list_add(rqdby, strdup(pkgname));
- deppkg->requiredby = rqdby;
- }
- }
+ if(!grep(scriptfn, script)) {
+ /* script not found in scriptlet file */
+ goto cleanup;
+ }
- if(_alpm_db_write(localdb, deppkg, INFRQ_DEPENDS)) {
- _alpm_log(PM_LOG_ERROR, _("could not update 'requiredby' database entry %s-%s"),
- alpm_pkg_get_name(deppkg), alpm_pkg_get_version(deppkg));
- }
- }
- FREELISTPTR(provides);
+ /* save the cwd so we can restore it later */
+ if(getcwd(cwd, PATH_MAX) == NULL) {
+ _alpm_log(PM_LOG_ERROR, _("could not get current working directory\n"));
+ } else {
+ restore_cwd = 1;
+ }
- if(!found_provides) {
- _alpm_log(PM_LOG_DEBUG, _("could not find dependency '%s'"), dep->name);
- continue;
- }
- }
+ /* just in case our cwd was removed in the upgrade operation */
+ if(chdir(root) != 0) {
+ _alpm_log(PM_LOG_ERROR, _("could not change directory to %s (%s)\n"), root, strerror(errno));
+ goto cleanup;
+ }
- /* this is cheating... we call this function to populate the package */
- alpm_list_t *rqdby = alpm_pkg_get_requiredby(deppkg);
+ _alpm_log(PM_LOG_DEBUG, "executing %s script...\n", script);
- _alpm_log(PM_LOG_DEBUG, _("updating 'requiredby' field for package '%s'"),
- alpm_pkg_get_name(deppkg));
- if(trans->type == PM_TRANS_TYPE_REMOVE) {
- void *data = NULL;
- rqdby = alpm_list_remove(rqdby, pkgname, _alpm_str_cmp, &data);
- FREE(data);
- deppkg->requiredby = rqdby;
+ if(oldver) {
+ snprintf(cmdline, PATH_MAX, "%s %s %s %s",
+ scriptpath, script, ver, oldver);
+ } else {
+ snprintf(cmdline, PATH_MAX, "%s %s %s",
+ scriptpath, script, ver);
+ }
+ _alpm_log(PM_LOG_DEBUG, "%s\n", cmdline);
+
+ /* fork- parent and child each have seperate code blocks below */
+ pid = fork();
+ if(pid == -1) {
+ _alpm_log(PM_LOG_ERROR, _("could not fork a new process (%s)\n"), strerror(errno));
+ retval = 1;
+ goto cleanup;
+ }
+
+ if(pid == 0) {
+ FILE *pipe;
+ /* this code runs for the child only (the actual chroot/exec) */
+ _alpm_log(PM_LOG_DEBUG, "chrooting in %s\n", root);
+ if(chroot(root) != 0) {
+ _alpm_log(PM_LOG_ERROR, _("could not change the root directory (%s)\n"),
+ strerror(errno));
+ exit(1);
+ }
+ if(chdir("/") != 0) {
+ _alpm_log(PM_LOG_ERROR, _("could not change directory to / (%s)\n"),
+ strerror(errno));
+ exit(1);
+ }
+ umask(0022);
+ _alpm_log(PM_LOG_DEBUG, "executing \"%s\"\n", cmdline);
+ /* execl("/bin/sh", "sh", "-c", cmdline, (char *)NULL); */
+ pipe = popen(cmdline, "r");
+ if(!pipe) {
+ _alpm_log(PM_LOG_ERROR, _("call to popen failed (%s)"),
+ strerror(errno));
+ retval = 1;
+ goto cleanup;
+ }
+ while(!feof(pipe)) {
+ char line[PATH_MAX];
+ if(fgets(line, PATH_MAX, pipe) == NULL)
+ break;
+ alpm_logaction("%s", line);
+ EVENT(trans, PM_TRANS_EVT_SCRIPTLET_INFO, line, NULL);
+ }
+ exit(0);
+ } else {
+ /* this code runs for the parent only (wait on the child) */
+ pid_t retpid;
+ int status;
+ retpid = waitpid(pid, &status, 0);
+ if(retpid == -1) {
+ _alpm_log(PM_LOG_ERROR, _("call to waitpid failed (%s)\n"),
+ strerror(errno));
+ retval = 1;
+ goto cleanup;
} else {
- if(!alpm_list_find_str(rqdby, pkgname)) {
- rqdby = alpm_list_add(rqdby, strdup(pkgname));
- deppkg->requiredby = rqdby;
+ /* check the return status, make sure it is 0 (success) */
+ if(WIFEXITED(status)) {
+ _alpm_log(PM_LOG_DEBUG, "call to waitpid succeeded\n");
+ if(WEXITSTATUS(status) != 0) {
+ _alpm_log(PM_LOG_ERROR, _("scriptlet failed to execute correctly\n"));
+ retval = 1;
+ }
}
}
+ }
- if(_alpm_db_write(localdb, deppkg, INFRQ_DEPENDS)) {
- _alpm_log(PM_LOG_ERROR, _("could not update 'requiredby' database entry %s-%s"),
- alpm_pkg_get_name(deppkg), alpm_pkg_get_version(deppkg));
- }
- free(dep);
+cleanup:
+ if(clean_tmpdir && _alpm_rmrf(tmpdir)) {
+ _alpm_log(PM_LOG_WARNING, _("could not remove tmpdir %s\n"), tmpdir);
+ }
+ if(restore_cwd) {
+ chdir(cwd);
}
- return(0);
-}
+ return(retval);
+}
-pmtranstype_t alpm_trans_get_type()
+pmtranstype_t SYMEXPORT alpm_trans_get_type()
{
/* Sanity checks */
ASSERT(handle != NULL, return(-1));
@@ -380,7 +639,7 @@ unsigned int SYMEXPORT alpm_trans_get_flags()
return handle->trans->flags;
}
-alpm_list_t * alpm_trans_get_targets()
+alpm_list_t SYMEXPORT * alpm_trans_get_targets()
{
/* Sanity checks */
ASSERT(handle != NULL, return(NULL));
diff --git a/lib/libalpm/trans.h b/lib/libalpm/trans.h
index 34a060ad..e96a7c1f 100644
--- a/lib/libalpm/trans.h
+++ b/lib/libalpm/trans.h
@@ -1,11 +1,11 @@
/*
* trans.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -18,7 +18,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_TRANS_H
@@ -50,13 +50,6 @@ struct __pmtrans_t {
alpm_trans_cb_progress cb_progress;
};
-#define FREETRANS(p) \
-do { \
- if(p) { \
- _alpm_trans_free(p); \
- p = NULL; \
- } \
-} while (0)
#define EVENT(t, e, d1, d2) \
do { \
if((t) && (t)->cb_event) { \
@@ -77,7 +70,7 @@ do { \
} while(0)
pmtrans_t *_alpm_trans_new(void);
-void _alpm_trans_free(void *data);
+void _alpm_trans_free(pmtrans_t *trans);
int _alpm_trans_init(pmtrans_t *trans, pmtranstype_t type, pmtransflag_t flags,
alpm_trans_cb_event event, alpm_trans_cb_conv conv,
alpm_trans_cb_progress progress);
@@ -85,7 +78,9 @@ int _alpm_trans_sysupgrade(pmtrans_t *trans);
int _alpm_trans_addtarget(pmtrans_t *trans, char *target);
int _alpm_trans_prepare(pmtrans_t *trans, alpm_list_t **data);
int _alpm_trans_commit(pmtrans_t *trans, alpm_list_t **data);
-int _alpm_trans_update_depends(pmtrans_t *trans, pmpkg_t *pkg);
+int _alpm_runscriptlet(const char *root, const char *installfn,
+ const char *script, const char *ver,
+ const char *oldver, pmtrans_t *trans);
#endif /* _ALPM_TRANS_H */
diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c
index decb5959..2a429488 100644
--- a/lib/libalpm/util.c
+++ b/lib/libalpm/util.c
@@ -6,7 +6,7 @@
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -19,7 +19,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -27,44 +27,133 @@
#include <stdio.h>
#include <stdlib.h>
-#ifdef __sun__
-#include <alloca.h>
-#endif
#include <string.h>
-#include <unistd.h>
-#include <errno.h>
#include <fcntl.h>
+#include <unistd.h>
#include <ctype.h>
#include <dirent.h>
#include <time.h>
#include <syslog.h>
-#include <sys/wait.h>
-#if defined(__APPLE__) || defined(__OpenBSD__)
-#include <sys/syslimits.h>
-#endif
-#if defined(__APPLE__) || defined(__OpenBSD__) || defined(__sun__)
+#include <errno.h>
+#include <sys/types.h>
#include <sys/stat.h>
-#endif
-#include <libintl.h>
-#ifdef CYGWIN
-#include <limits.h> /* PATH_MAX */
-#endif
-#include <sys/statvfs.h>
-#ifndef __sun__
-#include <mntent.h>
-#endif
+
+/* libarchive */
+#include <archive.h>
+#include <archive_entry.h>
/* libalpm */
#include "util.h"
-#include "alpm_list.h"
#include "log.h"
-#include "trans.h"
-#include "sync.h"
#include "error.h"
#include "package.h"
#include "alpm.h"
+#include "alpm_list.h"
+#include "md5.h"
+
+#ifndef HAVE_STRVERSCMP
+/* GNU's strverscmp() function, taken from glibc 2.3.2 sources
+ */
+
+/* Compare strings while treating digits characters numerically.
+ Copyright (C) 1997, 2002 Free Software Foundation, Inc.
+ Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+*/
+
+/* states: S_N: normal, S_I: comparing integral part, S_F: comparing
+ fractionnal parts, S_Z: idem but with leading Zeroes only */
+#define S_N 0x0
+#define S_I 0x4
+#define S_F 0x8
+#define S_Z 0xC
+
+/* result_type: CMP: return diff; LEN: compare using len_diff/diff */
+#define CMP 2
+#define LEN 3
+
+/* Compare S1 and S2 as strings holding indices/version numbers,
+ returning less than, equal to or greater than zero if S1 is less than,
+ equal to or greater than S2 (for more info, see the texinfo doc).
+*/
+
+int strverscmp (s1, s2)
+ const char *s1;
+ const char *s2;
+{
+ const unsigned char *p1 = (const unsigned char *) s1;
+ const unsigned char *p2 = (const unsigned char *) s2;
+ unsigned char c1, c2;
+ int state;
+ int diff;
+
+ /* Symbol(s) 0 [1-9] others (padding)
+ Transition (10) 0 (01) d (00) x (11) - */
+ static const unsigned int next_state[] =
+ {
+ /* state x d 0 - */
+ /* S_N */ S_N, S_I, S_Z, S_N,
+ /* S_I */ S_N, S_I, S_I, S_I,
+ /* S_F */ S_N, S_F, S_F, S_F,
+ /* S_Z */ S_N, S_F, S_Z, S_Z
+ };
+
+ static const int result_type[] =
+ {
+ /* state x/x x/d x/0 x/- d/x d/d d/0 d/-
+ 0/x 0/d 0/0 0/- -/x -/d -/0 -/- */
+
+ /* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
+ CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
+ /* S_I */ CMP, -1, -1, CMP, +1, LEN, LEN, CMP,
+ +1, LEN, LEN, CMP, CMP, CMP, CMP, CMP,
+ /* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
+ CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
+ /* S_Z */ CMP, +1, +1, CMP, -1, CMP, CMP, CMP,
+ -1, CMP, CMP, CMP
+ };
+
+ if (p1 == p2)
+ return 0;
+
+ c1 = *p1++;
+ c2 = *p2++;
+ /* Hint: '0' is a digit too. */
+ state = S_N | ((c1 == '0') + (isdigit (c1) != 0));
+
+ while ((diff = c1 - c2) == 0 && c1 != '\0')
+ {
+ state = next_state[state];
+ c1 = *p1++;
+ c2 = *p2++;
+ state |= (c1 == '0') + (isdigit (c1) != 0);
+ }
+
+ state = result_type[state << 2 | (((c2 == '0') + (isdigit (c2) != 0)))];
+
+ switch (state)
+ {
+ case CMP:
+ return diff;
+
+ case LEN:
+ while (isdigit (*p1++))
+ if (!isdigit (*p2++))
+ return 1;
+
+ return isdigit (*p2) ? -1 : diff;
+
+ default:
+ return state;
+ }
+}
+#endif
-#ifdef __sun__
+#ifndef HAVE_STRSEP
/* This is a replacement for strsep which is not portable (missing on Solaris).
* Copyright (c) 2001 by François Gouget <fgouget_at_codeweavers.com> */
char* strsep(char** str, const char* delims)
@@ -89,33 +178,6 @@ char* strsep(char** str, const char* delims)
*str=NULL;
return token;
}
-
-/* Backported from Solaris Express 4/06
- * Copyright (c) 2006 Sun Microsystems, Inc. */
-char *mkdtemp(char *template)
-{
- char *t = alloca(strlen(template) + 1);
- char *r;
-
- /* Save template */
- (void) strcpy(t, template);
- for (; ; ) {
- r = mktemp(template);
-
- if (*r == '\0')
- return (NULL);
-
- if (mkdir(template, 0700) == 0)
- return (r);
-
- /* Other errors indicate persistent conditions. */
- if (errno != EEXIST)
- return (NULL);
-
- /* Reset template */
- (void) strcpy(template, t);
- }
-}
#endif
/* does the same thing as 'mkdir -p' */
@@ -139,7 +201,7 @@ int _alpm_makepath(const char *path)
if(mkdir(full, 0755)) {
FREE(orig);
umask(oldmask);
- _alpm_log(PM_LOG_ERROR, _("failed to make path '%s' : %s"),
+ _alpm_log(PM_LOG_ERROR, _("failed to make path '%s' : %s\n"),
path, strerror(errno));
return(1);
}
@@ -167,30 +229,30 @@ int _alpm_copyfile(const char *src, const char *dest)
return(1);
}
+ /* do the actual file copy */
while((len = fread(buf, 1, 4096, in))) {
fwrite(buf, 1, len, out);
}
-
fclose(in);
- fclose(out);
- return(0);
-}
-/* Convert a string to uppercase
- */
-char *_alpm_strtoupper(char *str)
-{
- char *ptr = str;
-
- while(*ptr) {
- (*ptr) = toupper(*ptr);
- ptr++;
+ /* chmod dest to permissions of src, as long as it is not a symlink */
+ struct stat statbuf;
+ if(!stat(src, &statbuf)) {
+ if(! S_ISLNK(statbuf.st_mode)) {
+ fchmod(fileno(out), statbuf.st_mode);
+ }
+ } else {
+ /* stat was unsuccessful */
+ fclose(out);
+ return(1);
}
- return(str);
+
+ fclose(out);
+ return(0);
}
/* Trim whitespace and newlines from a string
- */
+*/
char *_alpm_strtrim(char *str)
{
char *pch = str;
@@ -212,7 +274,7 @@ char *_alpm_strtrim(char *str)
return(str);
}
- pch = (char *)(str + (strlen(str) - 1));
+ pch = (str + (strlen(str) - 1));
while(isspace((int)*pch)) {
pch--;
}
@@ -221,12 +283,57 @@ char *_alpm_strtrim(char *str)
return(str);
}
-/* Create a lock file
- */
-int _alpm_lckmk(const char *file)
+/* Helper function for _alpm_strreplace */
+static void _strnadd(char **str, const char *append, unsigned int count)
+{
+ if(*str) {
+ *str = realloc(*str, strlen(*str) + count + 1);
+ } else {
+ *str = calloc(count + 1, sizeof(char));
+ }
+
+ strncat(*str, append, count);
+}
+
+/* Replace all occurances of 'needle' with 'replace' in 'str', returning
+ * a new string (must be free'd) */
+char *_alpm_strreplace(const char *str, const char *needle, const char *replace)
+{
+ const char *p, *q;
+ p = q = str;
+
+ char *newstr = NULL;
+ unsigned int needlesz = strlen(needle),
+ replacesz = strlen(replace);
+
+ while (1) {
+ q = strstr(p, needle);
+ if(!q) { /* not found */
+ if(*p) {
+ /* add the rest of 'p' */
+ _strnadd(&newstr, p, strlen(p));
+ }
+ break;
+ } else { /* found match */
+ if(q > p){
+ /* add chars between this occurance and last occurance, if any */
+ _strnadd(&newstr, p, q - p);
+ }
+ _strnadd(&newstr, replace, replacesz);
+ p = q + needlesz;
+ }
+ }
+
+ return newstr;
+}
+
+
+/* Create a lock file */
+int _alpm_lckmk()
{
int fd, count = 0;
char *dir, *ptr;
+ const char *file = alpm_option_get_lockfile();
/* create the dir of the lockfile first */
dir = strdup(file);
@@ -236,7 +343,7 @@ int _alpm_lckmk(const char *file)
}
_alpm_makepath(dir);
- while((fd = open(file, O_WRONLY | O_CREAT | O_EXCL, 0000)) == -1 && errno == EACCES) {
+ while((fd = open(file, O_WRONLY | O_CREAT | O_EXCL, 0000)) == -1 && errno == EACCES) {
if(++count < 1) {
sleep(1);
} else {
@@ -244,27 +351,28 @@ int _alpm_lckmk(const char *file)
}
}
- free(dir);
+ FREE(dir);
return(fd > 0 ? fd : -1);
}
-/* Remove a lock file
- */
-int _alpm_lckrm(const char *file)
+/* Remove a lock file */
+int _alpm_lckrm()
{
+ const char *file = alpm_option_get_lockfile();
if(unlink(file) == -1 && errno != ENOENT) {
return(-1);
}
return(0);
}
-/* Compression functions
- */
+/* Compression functions */
int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
{
- register struct archive *_archive;
+ int ret = 0;
+ mode_t oldmask;
+ struct archive *_archive;
struct archive_entry *entry;
char expath[PATH_MAX];
@@ -276,31 +384,56 @@ int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
archive_read_support_compression_all(_archive);
archive_read_support_format_all(_archive);
- if(archive_read_open_file(_archive, archive, ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) {
- _alpm_log(PM_LOG_ERROR, _("could not open %s: %s\n"), archive, archive_error_string(_archive));
+ if(archive_read_open_filename(_archive, archive,
+ ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) {
+ _alpm_log(PM_LOG_ERROR, _("could not open %s: %s\n"), archive,
+ archive_error_string(_archive));
RET_ERR(PM_ERR_PKG_OPEN, -1);
}
+ oldmask = umask(0022);
while(archive_read_next_header(_archive, &entry) == ARCHIVE_OK) {
- if (fn && strcmp(fn, archive_entry_pathname(entry))) {
- if (archive_read_data_skip(_archive) != ARCHIVE_OK)
- return(1);
+ const struct stat *st;
+ const char *entryname; /* the name of the file in the archive */
+
+ st = archive_entry_stat(entry);
+ entryname = archive_entry_pathname(entry);
+
+ if(S_ISREG(st->st_mode)) {
+ archive_entry_set_mode(entry, 0644);
+ }
+
+ if (fn && strcmp(fn, entryname)) {
+ if (archive_read_data_skip(_archive) != ARCHIVE_OK) {
+ ret = 1;
+ goto cleanup;
+ }
continue;
}
- snprintf(expath, PATH_MAX, "%s/%s", prefix, archive_entry_pathname(entry));
+ snprintf(expath, PATH_MAX, "%s/%s", prefix, entryname);
archive_entry_set_pathname(entry, expath);
- if(archive_read_extract(_archive, entry, ARCHIVE_EXTRACT_FLAGS) != ARCHIVE_OK) {
- _alpm_log(PM_LOG_ERROR, _("could not extract %s: %s\n"), archive_entry_pathname(entry), archive_error_string(_archive));
- return(1);
+
+ int readret = archive_read_extract(_archive, entry, 0);
+ if(readret == ARCHIVE_WARN) {
+ /* operation succeeded but a non-critical error was encountered */
+ _alpm_log(PM_LOG_DEBUG, "warning extracting %s (%s)\n",
+ entryname, archive_error_string(_archive));
+ } else if(readret != ARCHIVE_OK) {
+ _alpm_log(PM_LOG_ERROR, _("could not extract %s (%s)\n"),
+ entryname, archive_error_string(_archive));
+ ret = 1;
+ goto cleanup;
}
if(fn) {
break;
}
}
-
+
+cleanup:
+ umask(oldmask);
archive_read_finish(_archive);
- return(0);
+ return(ret);
}
/* does the same thing as 'rm -rf' */
@@ -312,7 +445,7 @@ int _alpm_rmrf(const char *path)
char name[PATH_MAX];
struct stat st;
- if(lstat(path, &st) == 0) {
+ if(_alpm_lstat(path, &st) == 0) {
if(!S_ISDIR(st.st_mode)) {
if(!unlink(path)) {
return(0);
@@ -345,12 +478,12 @@ int _alpm_rmrf(const char *path)
return(0);
}
-int _alpm_logaction(unsigned short usesyslog, FILE *f, const char *str)
+int _alpm_logaction(unsigned short usesyslog, FILE *f, const char *fmt, va_list args)
{
- _alpm_log(PM_LOG_DEBUG, _("logaction called: %s"), str);
+ int ret = 0;
if(usesyslog) {
- syslog(LOG_WARNING, "%s", str);
+ vsyslog(LOG_WARNING, fmt, args);
}
if(f) {
@@ -361,14 +494,14 @@ int _alpm_logaction(unsigned short usesyslog, FILE *f, const char *str)
tm = localtime(&t);
/* Use ISO-8601 date format */
- fprintf(f, "[%04d-%02d-%02d %02d:%02d] %s\n",
- tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
- tm->tm_hour, tm->tm_min, str);
-
+ fprintf(f, "[%04d-%02d-%02d %02d:%02d] ",
+ tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
+ tm->tm_hour, tm->tm_min);
+ ret = vfprintf(f, fmt, args);
fflush(f);
}
- return(0);
+ return(ret);
}
int _alpm_ldconfig(const char *root)
@@ -389,272 +522,141 @@ int _alpm_ldconfig(const char *root)
return(0);
}
-/* A cheap grep for text files, returns 1 if a substring
- * was found in the text file fn, 0 if it wasn't
- */
-static int grep(const char *fn, const char *needle)
+/* Helper function for comparing strings using the
+ * alpm "compare func" signature */
+int _alpm_str_cmp(const void *s1, const void *s2)
{
- FILE *fp;
-
- if((fp = fopen(fn, "r")) == NULL) {
- return(0);
- }
- while(!feof(fp)) {
- char line[1024];
- fgets(line, 1024, fp);
- if(feof(fp)) {
- continue;
- }
- if(strstr(line, needle)) {
- fclose(fp);
- return(1);
- }
- }
- fclose(fp);
- return(0);
+ return(strcmp(s1, s2));
}
-int _alpm_runscriptlet(const char *root, const char *installfn,
- const char *script, const char *ver,
- const char *oldver, pmtrans_t *trans)
+/** Find a package file in an alpm cachedir.
+ * @param filename name of package file to find
+ * @return malloced path of file, NULL if not found
+ */
+char *_alpm_filecache_find(const char* filename)
{
- char scriptfn[PATH_MAX];
- char cmdline[PATH_MAX];
- char tmpdir[PATH_MAX] = "";
- char *scriptpath;
struct stat buf;
- char cwd[PATH_MAX] = "";
- pid_t pid;
- int retval = 0;
-
- ALPM_LOG_FUNC;
-
- if(stat(installfn, &buf)) {
- /* not found */
- _alpm_log(PM_LOG_DEBUG, "scriptlet '%s' not found", installfn);
- return(0);
- }
+ char path[PATH_MAX];
+ char *retpath;
+ alpm_list_t *i;
- if(!strcmp(script, "pre_upgrade") || !strcmp(script, "pre_install")) {
- snprintf(tmpdir, PATH_MAX, "%stmp/", root);
- if(stat(tmpdir, &buf)) {
- _alpm_makepath(tmpdir);
+ /* Loop through the cache dirs until we find a matching file */
+ for(i = alpm_option_get_cachedirs(); i; i = alpm_list_next(i)) {
+ snprintf(path, PATH_MAX, "%s%s", (char*)alpm_list_getdata(i),
+ filename);
+ if(stat(path, &buf) == 0) {
+ /* TODO maybe check to make sure it is readable? */
+ retpath = strdup(path);
+ _alpm_log(PM_LOG_DEBUG, "found cached pkg: %s\n", retpath);
+ return(retpath);
}
- snprintf(tmpdir, PATH_MAX, "%stmp/alpm_XXXXXX", root);
- if(mkdtemp(tmpdir) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not create temp directory"));
- return(1);
- }
- _alpm_unpack(installfn, tmpdir, ".INSTALL");
- snprintf(scriptfn, PATH_MAX, "%s/.INSTALL", tmpdir);
- /* chop off the root so we can find the tmpdir in the chroot */
- scriptpath = scriptfn + strlen(root) - 1;
- } else {
- STRNCPY(scriptfn, installfn, PATH_MAX);
- /* chop off the root so we can find the tmpdir in the chroot */
- scriptpath = scriptfn + strlen(root) - 1;
- }
-
- if(!grep(scriptfn, script)) {
- /* script not found in scriptlet file */
- goto cleanup;
- }
-
- /* save the cwd so we can restore it later */
- if(getcwd(cwd, PATH_MAX) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("could not get current working directory"));
- /* in case of error, cwd content is undefined: so we set it to something */
- cwd[0] = 0;
- }
-
- /* just in case our cwd was removed in the upgrade operation */
- if(chdir(root) != 0) {
- _alpm_log(PM_LOG_ERROR, _("could not change directory to %s (%s)"), root, strerror(errno));
- goto cleanup;
- }
-
- _alpm_log(PM_LOG_DEBUG, _("executing %s script..."), script);
-
- if(oldver) {
- snprintf(cmdline, PATH_MAX, "source %s %s %s %s",
- scriptpath, script, ver, oldver);
- } else {
- snprintf(cmdline, PATH_MAX, "source %s %s %s",
- scriptpath, script, ver);
- }
- _alpm_log(PM_LOG_DEBUG, "%s", cmdline);
-
- pid = fork();
- if(pid == -1) {
- _alpm_log(PM_LOG_ERROR, _("could not fork a new process (%s)"), strerror(errno));
- retval = 1;
- goto cleanup;
}
+ /* package wasn't found in any cachedir */
+ return(NULL);
+}
- if(pid == 0) {
- FILE *pp;
- _alpm_log(PM_LOG_DEBUG, _("chrooting in %s"), root);
- if(chroot(root) != 0) {
- _alpm_log(PM_LOG_ERROR, _("could not change the root directory (%s)"), strerror(errno));
- return(1);
- }
- if(chdir("/") != 0) {
- _alpm_log(PM_LOG_ERROR, _("could not change directory to / (%s)"), strerror(errno));
- return(1);
- }
- umask(0022);
- _alpm_log(PM_LOG_DEBUG, _("executing \"%s\""), cmdline);
- pp = popen(cmdline, "r");
- if(!pp) {
- _alpm_log(PM_LOG_ERROR, _("call to popen failed (%s)"), strerror(errno));
- retval = 1;
- goto cleanup;
- }
- while(!feof(pp)) {
- char line[1024];
- if(fgets(line, 1024, pp) == NULL)
- break;
- /*TODO clean this code up, remove weird SCRIPTLET_START/DONE,
- * (void*)atol call, etc. */
- /* "START <event desc>" */
- if((strlen(line) > strlen(SCRIPTLET_START))
- && !strncmp(line, SCRIPTLET_START, strlen(SCRIPTLET_START))) {
- EVENT(trans, PM_TRANS_EVT_SCRIPTLET_START,
- _alpm_strtrim(line + strlen(SCRIPTLET_START)), NULL);
- /* "DONE <ret code>" */
- } else if((strlen(line) > strlen(SCRIPTLET_DONE))
- && !strncmp(line, SCRIPTLET_DONE, strlen(SCRIPTLET_DONE))) {
- EVENT(trans, PM_TRANS_EVT_SCRIPTLET_DONE,
- (void*)atol(_alpm_strtrim(line + strlen(SCRIPTLET_DONE))),
- NULL);
- } else {
- _alpm_strtrim(line);
- /* log our script output */
- alpm_logaction(line);
- EVENT(trans, PM_TRANS_EVT_SCRIPTLET_INFO, line, NULL);
+/** Check the alpm cachedirs for existance and find a writable one.
+ * If no valid cache directory can be found, use /tmp.
+ * @return pointer to a writable cache directory.
+ */
+const char *_alpm_filecache_setup(void)
+{
+ struct stat buf;
+ alpm_list_t *i, *tmp;
+ char *cachedir;
+
+ /* Loop through the cache dirs until we find a writeable dir */
+ for(i = alpm_option_get_cachedirs(); i; i = alpm_list_next(i)) {
+ cachedir = alpm_list_getdata(i);
+ if(stat(cachedir, &buf) != 0) {
+ /* cache directory does not exist.... try creating it */
+ _alpm_log(PM_LOG_WARNING, _("no %s cache exists, creating...\n"),
+ cachedir);
+ alpm_logaction("warning: no %s cache exists, creating...\n",
+ cachedir);
+ if(_alpm_makepath(cachedir) == 0) {
+ _alpm_log(PM_LOG_DEBUG, "using cachedir: %s\n", cachedir);
+ return(cachedir);
}
- }
- pclose(pp);
- exit(0);
- } else {
- if(waitpid(pid, 0, 0) == -1) {
- _alpm_log(PM_LOG_ERROR, _("call to waitpid failed (%s)"),
- strerror(errno));
- retval = 1;
- goto cleanup;
+ } else if(S_ISDIR(buf.st_mode) && (buf.st_mode & S_IWUSR)) {
+ _alpm_log(PM_LOG_DEBUG, "using cachedir: %s\n", cachedir);
+ return(cachedir);
}
}
-cleanup:
- if(strlen(tmpdir) && _alpm_rmrf(tmpdir)) {
- _alpm_log(PM_LOG_WARNING, _("could not remove tmpdir %s"), tmpdir);
- }
- if(strlen(cwd)) {
- chdir(cwd);
- }
-
- return(retval);
+ /* we didn't find a valid cache directory. use /tmp. */
+ i = alpm_option_get_cachedirs();
+ tmp = alpm_list_add(NULL, strdup("/tmp/"));
+ FREELIST(i);
+ alpm_option_set_cachedirs(tmp);
+ _alpm_log(PM_LOG_DEBUG, "using cachedir: %s", "/tmp/\n");
+ _alpm_log(PM_LOG_WARNING, _("couldn't create package cache, using /tmp instead\n"));
+ alpm_logaction("warning: couldn't create package cache, using /tmp instead\n");
+ return(alpm_list_getdata(tmp));
}
-#ifndef __sun__
-static long long get_freespace()
+/** lstat wrapper that treats /path/dirsymlink/ the same as /path/dirsymlink.
+ * Linux lstat follows POSIX semantics and still performs a dereference on
+ * the first, and for uses of lstat in libalpm this is not what we want.
+ * @param path path to file to lstat
+ * @param buf structure to fill with stat information
+ * @return the return code from lstat
+ */
+int _alpm_lstat(const char *path, struct stat *buf)
{
- struct mntent *mnt;
- const char *table = MOUNTED;
- FILE *fp;
- long long ret=0;
-
- if((fp = setmntent(table, "r")) == NULL) {
- _alpm_log(PM_LOG_ERROR, _("cannot read disk space information from %s: %s"),
- table, strerror(errno));
- return(-1);
- }
-
- while ((mnt = getmntent(fp)))
- {
- struct statvfs64 buf;
+ int ret;
+ char *newpath = strdup(path);
+ int len = strlen(newpath);
- statvfs64(mnt->mnt_dir, &buf);
- ret += buf.f_bavail * buf.f_bsize;
+ /* strip the trailing slash if one exists */
+ if(len != 0 && newpath[len - 1] == '/') {
+ newpath[len - 1] = '\0';
}
- endmntent(fp);
+ ret = lstat(newpath, buf);
+ FREE(newpath);
return(ret);
}
-int _alpm_check_freespace(pmtrans_t *trans, alpm_list_t **data)
+/** Get the md5 sum of file.
+ * @param filename name of the file
+ * @return the checksum on success, NULL on error
+ * @addtogroup alpm_misc
+ */
+char SYMEXPORT *alpm_get_md5sum(const char *filename)
{
- alpm_list_t *i;
- long long pkgsize=0, freespace;
+ unsigned char output[16];
+ char *md5sum;
+ int ret, i;
ALPM_LOG_FUNC;
- for(i = trans->packages; i; i = i->next) {
- if(trans->type == PM_TRANS_TYPE_SYNC)
- {
- pmsyncpkg_t *sync = i->data;
- if(sync->type != PM_SYNC_TYPE_REPLACE) {
- pmpkg_t *pkg = sync->pkg;
- pkgsize += alpm_pkg_get_isize(pkg);
- }
- }
- else
- {
- pmpkg_t *pkg = i->data;
- pkgsize += alpm_pkg_get_size(pkg);
- }
- }
- freespace = get_freespace();
- _alpm_log(PM_LOG_DEBUG, _("check_freespace: total pkg size: %lld, disk space: %lld"), pkgsize, freespace);
- if(pkgsize > freespace) {
- if(data) {
- long long *ptr;
- if((ptr = (long long*)malloc(sizeof(long long)))==NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(long long));
- pm_errno = PM_ERR_MEMORY;
- return(-1);
- }
- *ptr = pkgsize;
- *data = alpm_list_add(*data, ptr);
- if((ptr = (long long*)malloc(sizeof(long long)))==NULL) {
- _alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"), sizeof(long long));
- FREELIST(*data);
- pm_errno = PM_ERR_MEMORY;
- return(-1);
- }
- *ptr = freespace;
- *data = alpm_list_add(*data, ptr);
+ ASSERT(filename != NULL, return(NULL));
+
+ /* allocate 32 chars plus 1 for null */
+ md5sum = calloc(33, sizeof(char));
+ ret = md5_file(filename, output);
+
+ if (ret > 0) {
+ if (ret == 1) {
+ _alpm_log(PM_LOG_ERROR, _("md5: %s can't be opened\n"), filename);
+ } else if (ret == 2) {
+ _alpm_log(PM_LOG_ERROR, _("md5: %s can't be read\n"), filename);
}
- pm_errno = PM_ERR_DISK_FULL;
- return(-1);
- }
- else {
- return(0);
+
+ return(NULL);
}
-}
-#endif
-/* convert a time_t to a string - buffer MUST be large enough for
- * YYYYMMDDHHMMSS - 15 chars */
-void _alpm_time2string(time_t t, char *buffer)
-{
- if(buffer) {
- struct tm *lt;
- lt = localtime(&t);
- sprintf(buffer, "%4d%02d%02d%02d%02d%02d",
- lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday,
- lt->tm_hour, lt->tm_min, lt->tm_sec);
- buffer[14] = '\0';
+ /* Convert the result to something readable */
+ for (i = 0; i < 16; i++) {
+ /* sprintf is acceptable here because we know our output */
+ sprintf(md5sum +(i * 2), "%02x", output[i]);
}
-}
+ md5sum[32] = '\0';
-/* Helper function for comparing strings using the
- * alpm "compare func" signature */
-int _alpm_str_cmp(const void *s1, const void *s2)
-{
- return(strcmp(s1, s2));
+ _alpm_log(PM_LOG_DEBUG, "md5(%s) = %s\n", filename, md5sum);
+ return(md5sum);
}
-
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/util.h b/lib/libalpm/util.h
index 9f028e8a..89ac3204 100644
--- a/lib/libalpm/util.h
+++ b/lib/libalpm/util.h
@@ -1,12 +1,12 @@
/*
* util.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -19,71 +19,66 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _ALPM_UTIL_H
#define _ALPM_UTIL_H
-#include <stdio.h>
-#if defined(__OpenBSD__)
-#include "/usr/local/include/archive.h"
-#include "/usr/local/include/archive_entry.h"
-#else
-#include <archive.h>
-#include <archive_entry.h>
-#endif
-
-#define FREE(p) do { if (p) { free(p); p = NULL; } } while(0)
-
-#define ASSERT(cond, action) do { if(!(cond)) { action; } } while(0)
-
-#define STRNCPY(s1, s2, len) do { \
- strncpy(s1, s2, (len)-1); \
- s1[(len)-1] = 0; \
-} while(0)
+#include "config.h"
-#define ARCHIVE_EXTRACT_FLAGS ARCHIVE_EXTRACT_OWNER | ARCHIVE_EXTRACT_PERM | ARCHIVE_EXTRACT_TIME
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include <time.h>
+#include <sys/stat.h> /* struct stat */
#ifdef ENABLE_NLS
+#include <libintl.h> /* here so it doesn't need to be included elsewhere */
+/* define _() as shortcut for gettext() */
#define _(str) dgettext ("libalpm", str)
#else
#define _(s) s
#endif
-/*TODO wtf? why is this done like this? */
-#define SCRIPTLET_START "START "
-#define SCRIPTLET_DONE "DONE "
+#define ALLOC_FAIL(s) do { _alpm_log(PM_LOG_ERROR, _("alloc failure: could not allocate %zd bytes\n"), s); } while(0)
+
+#define MALLOC(p, s, action) do { p = calloc(1, s); if(p == NULL) { ALLOC_FAIL(s); action; } } while(0)
+#define CALLOC(p, l, s, action) do { p = calloc(l, s); if(p == NULL) { ALLOC_FAIL(s); action; } } while(0)
+#define STRDUP(r, s, action) do { r = strdup(s); if(r == NULL) { ALLOC_FAIL(strlen(s)); action; } } while(0)
+
+#define FREE(p) do { if(p) { free(p); p = NULL; } } while(0)
+
+#define ASSERT(cond, action) do { if(!(cond)) { action; } } while(0)
int _alpm_makepath(const char *path);
int _alpm_copyfile(const char *src, const char *dest);
-char *_alpm_strtoupper(char *str);
char *_alpm_strtrim(char *str);
-int _alpm_lckmk(const char *file);
-int _alpm_lckrm(const char *file);
+char *_alpm_strreplace(const char *str, const char *needle, const char *replace);
+int _alpm_lckmk();
+int _alpm_lckrm();
int _alpm_unpack(const char *archive, const char *prefix, const char *fn);
int _alpm_rmrf(const char *path);
-int _alpm_logaction(unsigned short usesyslog, FILE *f, const char *str);
+int _alpm_logaction(unsigned short usesyslog, FILE *f, const char *fmt, va_list args);
int _alpm_ldconfig(const char *root);
-#ifdef _ALPM_TRANS_H
-int _alpm_runscriptlet(const char *root, const char *installfn,
- const char *script, const char *ver,
- const char *oldver, pmtrans_t *trans);
-#ifndef __sun__
-int _alpm_check_freespace(pmtrans_t *trans, alpm_list_t **data);
-#endif
-#endif
-void _alpm_time2string(time_t t, char *buffer);
int _alpm_str_cmp(const void *s1, const void *s2);
+char *_alpm_filecache_find(const char *filename);
+const char *_alpm_filecache_setup(void);
+int _alpm_lstat(const char *path, struct stat *buf);
-#ifdef __sun__
-char* strsep(char** str, const char* delims);
-char* mkdtemp(char *template);
+#ifndef HAVE_STRVERSCMP
+int strverscmp(const char *, const char *);
+#endif
+#ifndef HAVE_STRSEP
+char *strsep(char **, const char *);
#endif
/* check exported library symbols with: nm -C -D <lib> */
#define SYMEXPORT __attribute__((visibility("default")))
-#define SYMHIDDEN __attribute__((visibility("hidden")))
+#define SYMHIDDEN __attribute__((visibility("internal")))
+
+/* max percent of package size to download deltas */
+#define MAX_DELTA_RATIO 0.7
#endif /* _ALPM_UTIL_H */
diff --git a/lib/libalpm/versioncmp.c b/lib/libalpm/versioncmp.c
deleted file mode 100644
index 7e22ec9c..00000000
--- a/lib/libalpm/versioncmp.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * versioncmp.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
- * Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <libintl.h>
-
-/* libalpm */
-#include "versioncmp.h"
-#include "alpm_list.h"
-#include "alpm.h"
-#include "log.h"
-#include "util.h"
-
-#ifndef HAVE_STRVERSCMP
-/* GNU's strverscmp() function, taken from glibc 2.3.2 sources
- */
-
-/* Compare strings while treating digits characters numerically.
- Copyright (C) 1997, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* states: S_N: normal, S_I: comparing integral part, S_F: comparing
- fractionnal parts, S_Z: idem but with leading Zeroes only */
-#define S_N 0x0
-#define S_I 0x4
-#define S_F 0x8
-#define S_Z 0xC
-
-/* result_type: CMP: return diff; LEN: compare using len_diff/diff */
-#define CMP 2
-#define LEN 3
-
-/* Compare S1 and S2 as strings holding indices/version numbers,
- returning less than, equal to or greater than zero if S1 is less than,
- equal to or greater than S2 (for more info, see the texinfo doc).
-*/
-
-static int strverscmp (s1, s2)
- const char *s1;
- const char *s2;
-{
- const unsigned char *p1 = (const unsigned char *) s1;
- const unsigned char *p2 = (const unsigned char *) s2;
- unsigned char c1, c2;
- int state;
- int diff;
-
- /* Symbol(s) 0 [1-9] others (padding)
- Transition (10) 0 (01) d (00) x (11) - */
- static const unsigned int next_state[] =
- {
- /* state x d 0 - */
- /* S_N */ S_N, S_I, S_Z, S_N,
- /* S_I */ S_N, S_I, S_I, S_I,
- /* S_F */ S_N, S_F, S_F, S_F,
- /* S_Z */ S_N, S_F, S_Z, S_Z
- };
-
- static const int result_type[] =
- {
- /* state x/x x/d x/0 x/- d/x d/d d/0 d/-
- 0/x 0/d 0/0 0/- -/x -/d -/0 -/- */
-
- /* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
- CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
- /* S_I */ CMP, -1, -1, CMP, +1, LEN, LEN, CMP,
- +1, LEN, LEN, CMP, CMP, CMP, CMP, CMP,
- /* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
- CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
- /* S_Z */ CMP, +1, +1, CMP, -1, CMP, CMP, CMP,
- -1, CMP, CMP, CMP
- };
-
- if (p1 == p2)
- return 0;
-
- c1 = *p1++;
- c2 = *p2++;
- /* Hint: '0' is a digit too. */
- state = S_N | ((c1 == '0') + (isdigit (c1) != 0));
-
- while ((diff = c1 - c2) == 0 && c1 != '\0')
- {
- state = next_state[state];
- c1 = *p1++;
- c2 = *p2++;
- state |= (c1 == '0') + (isdigit (c1) != 0);
- }
-
- state = result_type[state << 2 | (((c2 == '0') + (isdigit (c2) != 0)))];
-
- switch (state)
- {
- case CMP:
- return diff;
-
- case LEN:
- while (isdigit (*p1++))
- if (!isdigit (*p2++))
- return 1;
-
- return isdigit (*p2) ? -1 : diff;
-
- default:
- return state;
- }
-}
-
-#endif
-
-/* this function was taken from rpm 4.0.4 and rewritten */
-int _alpm_versioncmp(const char *a, const char *b)
-{
- char str1[64], str2[64];
- char *ptr1, *ptr2;
- char *one, *two;
- char *rel1 = NULL, *rel2 = NULL;
- char oldch1, oldch2;
- int is1num, is2num;
- int rc;
-
- ALPM_LOG_FUNC;
-
- if(!strcmp(a,b)) {
- return(0);
- }
-
- strncpy(str1, a, 64);
- str1[63] = 0;
- strncpy(str2, b, 64);
- str2[63] = 0;
-
- /* lose the release number */
- for(one = str1; *one && *one != '-'; one++);
- if(one) {
- *one = '\0';
- rel1 = ++one;
- }
- for(two = str2; *two && *two != '-'; two++);
- if(two) {
- *two = '\0';
- rel2 = ++two;
- }
-
- one = str1;
- two = str2;
-
- while(*one || *two) {
- while(*one && !isalnum((int)*one)) one++;
- while(*two && !isalnum((int)*two)) two++;
-
- ptr1 = one;
- ptr2 = two;
-
- /* find the next segment for each string */
- if(isdigit((int)*ptr1)) {
- is1num = 1;
- while(*ptr1 && isdigit((int)*ptr1)) ptr1++;
- } else {
- is1num = 0;
- while(*ptr1 && isalpha((int)*ptr1)) ptr1++;
- }
- if(isdigit((int)*ptr2)) {
- is2num = 1;
- while(*ptr2 && isdigit((int)*ptr2)) ptr2++;
- } else {
- is2num = 0;
- while(*ptr2 && isalpha((int)*ptr2)) ptr2++;
- }
-
- oldch1 = *ptr1;
- *ptr1 = '\0';
- oldch2 = *ptr2;
- *ptr2 = '\0';
-
- /* see if we ran out of segments on one string */
- if(one == ptr1 && two != ptr2) {
- return(is2num ? -1 : 1);
- }
- if(one != ptr1 && two == ptr2) {
- return(is1num ? 1 : -1);
- }
-
- /* see if we have a type mismatch (ie, one is alpha and one is digits) */
- if(is1num && !is2num) return(1);
- if(!is1num && is2num) return(-1);
-
- if(is1num) while(*one == '0') one++;
- if(is2num) while(*two == '0') two++;
-
- rc = strverscmp(one, two);
- if(rc) return(rc);
-
- *ptr1 = oldch1;
- *ptr2 = oldch2;
- one = ptr1;
- two = ptr2;
- }
-
- if((!*one) && (!*two)) {
- /* compare release numbers */
- if(rel1 && rel2 && strlen(rel1) && strlen(rel2)) return(_alpm_versioncmp(rel1, rel2));
- return(0);
- }
-
- return(*one ? 1 : -1);
-}
-
-int SYMEXPORT alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep)
-{
- int equal = 0;
-
- ALPM_LOG_FUNC;
-
- if(strcmp(pkg->name, dep->name) == 0
- || alpm_list_find_str(alpm_pkg_get_provides(pkg), dep->name)) {
- if(dep->mod == PM_DEP_MOD_ANY) {
- equal = 1;
- } else {
- int cmp = _alpm_versioncmp(alpm_pkg_get_version(pkg), dep->version);
- switch(dep->mod) {
- case PM_DEP_MOD_EQ: equal = (cmp == 0); break;
- case PM_DEP_MOD_GE: equal = (cmp >= 0); break;
- case PM_DEP_MOD_LE: equal = (cmp <= 0); break;
- default: equal = 1; break;
- }
- }
-
- char *mod = "~=";
- switch(dep->mod) {
- case PM_DEP_MOD_EQ: mod = "=="; break;
- case PM_DEP_MOD_GE: mod = ">="; break;
- case PM_DEP_MOD_LE: mod = "<="; break;
- default: break;
- }
-
- if(strlen(dep->version) > 0) {
- _alpm_log(PM_LOG_DEBUG, _("depcmp: %s-%s %s %s-%s => %s"),
- alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg),
- mod, dep->name, dep->version,
- (equal ? "match" : "no match"));
- } else {
- _alpm_log(PM_LOG_DEBUG, _("depcmp: %s-%s %s %s => %s"),
- alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg),
- mod, dep->name,
- (equal ? "match" : "no match"));
- }
- }
-
- return equal;
-}
-
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/versioncmp.h b/lib/libalpm/versioncmp.h
deleted file mode 100644
index 13a2d5a7..00000000
--- a/lib/libalpm/versioncmp.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * versioncmp.h
- *
- * Copyright (c) 2005 by Judd Vinet <jvinet@zeroflux.org>
- * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
- * Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-#ifndef _ALPM_VERSIONCMP_H
-#define _ALPM_VERSIONCMP_H
-
-#include "deps.h"
-#include "package.h"
-
-int _alpm_versioncmp(const char *a, const char *b);
-
-#endif /* _ALPM_VERSIONCMP_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/ltmain.sh b/ltmain.sh
index 06823e05..4598ec61 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,8 +1,8 @@
# ltmain.sh - Provide generalized library-building support services.
# NOTE: Changing this file will not affect anything until you rerun configure.
#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007 Free Software Foundation, Inc.
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
# This program is free software; you can redistribute it and/or modify
@@ -43,14 +43,22 @@ EXIT_FAILURE=1
PROGRAM=ltmain.sh
PACKAGE=libtool
-VERSION=1.5.22
-TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes.
-if test -n "${ZSH_VERSION+set}" ; then
+VERSION=1.5.24
+TIMESTAMP=" (1.1220.2.455 2007/06/24 02:13:29)"
+
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
# Check that we have a working $echo.
if test "X$1" = X--no-reexec; then
@@ -105,12 +113,14 @@ esac
# These must not be set unconditionally because not all systems understand
# e.g. LANG=C (notably SCO).
# We save the old values to restore during execute mode.
-if test "${LC_ALL+set}" = set; then
- save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
-fi
-if test "${LANG+set}" = set; then
- save_LANG="$LANG"; LANG=C; export LANG
-fi
+for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+ eval "if test \"\${$lt_var+set}\" = set; then
+ save_$lt_var=\$$lt_var
+ $lt_var=C
+ export $lt_var
+ fi"
+done
# Make sure IFS has a sensible default
lt_nl='
@@ -136,6 +146,8 @@ duplicate_deps=no
preserve_args=
lo2o="s/\\.lo\$/.${objext}/"
o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
#####################################
# Shell function definitions:
@@ -196,7 +208,13 @@ func_win32_libid ()
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
$EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
win32_nmres=`eval $NM -f posix -A $1 | \
- $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+ $SED -n -e '1,100{
+ / I /{
+ s,.*,import,
+ p
+ q
+ }
+ }'`
case $win32_nmres in
import*) win32_libid_type="x86 archive import";;
*) win32_libid_type="x86 archive static";;
@@ -327,7 +345,17 @@ func_extract_archives ()
*) my_xabs=`pwd`"/$my_xlib" ;;
esac
my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
- my_xdir="$my_gentop/$my_xlib"
+ my_xlib_u=$my_xlib
+ while :; do
+ case " $extracted_archives " in
+ *" $my_xlib_u "*)
+ extracted_serial=`expr $extracted_serial + 1`
+ my_xlib_u=lt$extracted_serial-$my_xlib ;;
+ *) break ;;
+ esac
+ done
+ extracted_archives="$extracted_archives $my_xlib_u"
+ my_xdir="$my_gentop/$my_xlib_u"
$show "${rm}r $my_xdir"
$run ${rm}r "$my_xdir"
@@ -454,11 +482,12 @@ do
;;
--version)
- $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
- $echo
- $echo "Copyright (C) 2005 Free Software Foundation, Inc."
- $echo "This is free software; see the source for copying conditions. There is NO"
- $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ echo "\
+$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
+
+Copyright (C) 2007 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
exit $?
;;
@@ -755,9 +784,10 @@ if test -z "$show_help"; then
*.class) xform=class ;;
*.cpp) xform=cpp ;;
*.cxx) xform=cxx ;;
- *.f90) xform=f90 ;;
+ *.[fF][09]?) xform=[fF][09]. ;;
*.for) xform=for ;;
*.java) xform=java ;;
+ *.obj) xform=obj ;;
esac
libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
@@ -1138,8 +1168,9 @@ EOF
for arg
do
case $arg in
- -all-static | -static)
- if test "X$arg" = "X-all-static"; then
+ -all-static | -static | -static-libtool-libs)
+ case $arg in
+ -all-static)
if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
$echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
fi
@@ -1147,12 +1178,20 @@ EOF
dlopen_self=$dlopen_self_static
fi
prefer_static_libs=yes
- else
+ ;;
+ -static)
if test -z "$pic_flag" && test -n "$link_static_flag"; then
dlopen_self=$dlopen_self_static
fi
prefer_static_libs=built
- fi
+ ;;
+ -static-libtool-libs)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ esac
build_libtool_libs=no
build_old_libs=yes
break
@@ -1600,7 +1639,7 @@ EOF
continue
;;
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
compiler_flags="$compiler_flags $arg"
compile_command="$compile_command $arg"
finalize_command="$finalize_command $arg"
@@ -1620,10 +1659,11 @@ EOF
# -m* pass through architecture-specific compiler args for GCC
# -m*, -t[45]*, -txscale* pass through architecture-specific
# compiler args for GCC
- # -pg pass through profiling flag for GCC
+ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+ # -F/path gives path to uninstalled frameworks, gcc on darwin
# @file GCC response files
- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
- -t[45]*|-txscale*|@*)
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
# Unknown arguments in both finalize_command and compile_command need
# to be aesthetically quoted because they are evaled later.
@@ -1651,9 +1691,9 @@ EOF
-no-install)
case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
# The PATH hackery in wrapper scripts is required on Windows
- # in order for the loader to find any dlls it needs.
+ # and Darwin in order for the loader to find any dlls it needs.
$echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
$echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
fast_install=no
@@ -1712,7 +1752,7 @@ EOF
continue
;;
- -static)
+ -static | -static-libtool-libs)
# The effects of -static are defined in a previous loop.
# We used to do the same as -all-static on platforms that
# didn't have a PIC flag, but the assumption that the effects
@@ -2094,7 +2134,7 @@ EOF
lib=
found=no
case $deplib in
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
if test "$linkmode,$pass" = "prog,link"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
@@ -2490,7 +2530,9 @@ EOF
if test "$linkmode,$pass" = "prog,link"; then
if test -n "$library_names" &&
- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ { { test "$prefer_static_libs" = no ||
+ test "$prefer_static_libs,$installed" = "built,yes"; } ||
+ test -z "$old_library"; }; then
# We need to hardcode the library path
if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
# Make sure the rpath contains only unique directories.
@@ -3186,7 +3228,7 @@ EOF
# which has an extra 1 added just for fun
#
case $version_type in
- darwin|linux|osf|windows)
+ darwin|linux|osf|windows|none)
current=`expr $number_major + $number_minor`
age="$number_minor"
revision="$number_revision"
@@ -3197,9 +3239,10 @@ EOF
age="0"
;;
irix|nonstopux)
- current=`expr $number_major + $number_minor - 1`
+ current=`expr $number_major + $number_minor`
age="$number_minor"
revision="$number_minor"
+ lt_irix_increment=no
;;
esac
;;
@@ -3258,7 +3301,8 @@ EOF
versuffix="$major.$age.$revision"
# Darwin ld doesn't like 0 for these options...
minor_current=`expr $current + 1`
- verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
;;
freebsd-aout)
@@ -3272,8 +3316,11 @@ EOF
;;
irix | nonstopux)
- major=`expr $current - $age + 1`
-
+ if test "X$lt_irix_increment" = "Xno"; then
+ major=`expr $current - $age`
+ else
+ major=`expr $current - $age + 1`
+ fi
case $version_type in
nonstopux) verstring_prefix=nonstopux ;;
*) verstring_prefix=sgi ;;
@@ -3410,11 +3457,11 @@ EOF
fi
# Eliminate all temporary directories.
- for path in $notinst_path; do
- lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
- deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
- dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
- done
+ #for path in $notinst_path; do
+ # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+ # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+ # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
+ #done
if test -n "$xrpath"; then
# If the user specified any rpath flags, then add them.
@@ -3515,13 +3562,12 @@ EOF
int main() { return 0; }
EOF
$rm conftest
- $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
- if test "$?" -eq 0 ; then
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
ldd_output=`ldd conftest`
for i in $deplibs; do
name=`expr $i : '-l\(.*\)'`
# If $name is empty we are operating on a -L argument.
- if test "$name" != "" && test "$name" -ne "0"; then
+ if test "$name" != "" && test "$name" != "0"; then
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
case " $predeps $postdeps " in
*" $i "*)
@@ -3560,9 +3606,7 @@ EOF
# If $name is empty we are operating on a -L argument.
if test "$name" != "" && test "$name" != "0"; then
$rm conftest
- $LTCC $LTCFLAGS -o conftest conftest.c $i
- # Did it work?
- if test "$?" -eq 0 ; then
+ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
ldd_output=`ldd conftest`
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
case " $predeps $postdeps " in
@@ -3594,7 +3638,7 @@ EOF
droppeddeps=yes
$echo
$echo "*** Warning! Library $i is needed by this library but I was not able to"
- $echo "*** make it link in! You will probably need to install it or some"
+ $echo "*** make it link in! You will probably need to install it or some"
$echo "*** library that it depends on before this library will be fully"
$echo "*** functional. Installing it before continuing would be even better."
fi
@@ -3880,7 +3924,10 @@ EOF
test -n "$hardcode_libdirs"; then
libdir="$hardcode_libdirs"
if test -n "$hardcode_libdir_flag_spec_ld"; then
- eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ case $archive_cmds in
+ *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
+ *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
+ esac
else
eval dep_rpath=\"$hardcode_libdir_flag_spec\"
fi
@@ -4239,12 +4286,14 @@ EOF
reload_conv_objs=
gentop=
# reload_cmds runs $LD directly, so let us get rid of
- # -Wl from whole_archive_flag_spec
+ # -Wl from whole_archive_flag_spec and hope we can get by with
+ # turning comma into space..
wl=
if test -n "$convenience"; then
if test -n "$whole_archive_flag_spec"; then
- eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+ reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
else
gentop="$output_objdir/${obj}x"
generated="$generated $gentop"
@@ -4692,16 +4741,16 @@ static const void *lt_preloaded_setup() {
case $host in
*cygwin* | *mingw* )
if test -f "$output_objdir/${outputname}.def" ; then
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
else
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
fi
;;
* )
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
;;
esac
;;
@@ -4716,13 +4765,13 @@ static const void *lt_preloaded_setup() {
# really was required.
# Nullify the symbol file.
- compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
fi
if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
# Replace the output file specification.
- compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
link_command="$compile_command$compile_rpath"
# We have no uninstalled library dependencies, so finalize right now.
@@ -4809,7 +4858,7 @@ static const void *lt_preloaded_setup() {
if test "$fast_install" != no; then
link_command="$finalize_var$compile_command$finalize_rpath"
if test "$fast_install" = yes; then
- relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
else
# fast_install is set to needless
relink_command=
@@ -4846,7 +4895,7 @@ static const void *lt_preloaded_setup() {
fi
done
relink_command="(cd `pwd`; $relink_command)"
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
fi
# Quote $echo for shipping.
@@ -5253,6 +5302,20 @@ EOF
Xsed='${SED} -e 1s/^X//'
sed_quote_subst='$sed_quote_subst'
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
@@ -5395,7 +5458,7 @@ else
;;
esac
$echo >> $output "\
- \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+ \$echo \"\$0: cannot exec \$program \$*\"
exit $EXIT_FAILURE
fi
else
@@ -5581,7 +5644,7 @@ fi\
done
# Quote the link command for shipping.
relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
if test "$hardcode_automatic" = yes ; then
relink_command=
fi
@@ -5926,9 +5989,9 @@ relink_command=\"$relink_command\""
if test -n "$inst_prefix_dir"; then
# Stick the inst_prefix_dir data into the link command.
- relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
else
- relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
fi
$echo "$modename: warning: relinking \`$file'" 1>&2
@@ -6137,7 +6200,7 @@ relink_command=\"$relink_command\""
file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
outputname="$tmpdir/$file"
# Replace the output file specification.
- relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
$show "$relink_command"
if $run eval "$relink_command"; then :
@@ -6348,8 +6411,10 @@ relink_command=\"$relink_command\""
if test -f "$dir/$objdir/$dlname"; then
dir="$dir/$objdir"
else
- $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
- exit $EXIT_FAILURE
+ if test ! -f "$dir/$dlname"; then
+ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
fi
;;
@@ -6413,12 +6478,12 @@ relink_command=\"$relink_command\""
fi
# Restore saved environment variables
- if test "${save_LC_ALL+set}" = set; then
- LC_ALL="$save_LC_ALL"; export LC_ALL
- fi
- if test "${save_LANG+set}" = set; then
- LANG="$save_LANG"; export LANG
- fi
+ for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+ do
+ eval "if test \"\${save_$lt_var+set}\" = set; then
+ $lt_var=\$save_$lt_var; export $lt_var
+ fi"
+ done
# Now prepare to actually exec the command.
exec_cmd="\$cmd$args"
@@ -6775,9 +6840,9 @@ The following components of LINK-COMMAND are treated specially:
-dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
-export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-export-symbols SYMFILE
- try to export only the symbols listed in SYMFILE
+ try to export only the symbols listed in SYMFILE
-export-symbols-regex REGEX
- try to export only the symbols matching REGEX
+ try to export only the symbols matching REGEX
-LLIBDIR search LIBDIR for required installed libraries
-lNAME OUTPUT-FILE requires the installed library libNAME
-module build a library that can dlopened
@@ -6791,9 +6856,11 @@ The following components of LINK-COMMAND are treated specially:
-release RELEASE specify package release information
-rpath LIBDIR the created library will eventually be installed in LIBDIR
-R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
- -static do not do any dynamic linking of libtool libraries
+ -static do not do any dynamic linking of uninstalled libtool libraries
+ -static-libtool-libs
+ do not do any dynamic linking of libtool libraries
-version-info CURRENT[:REVISION[:AGE]]
- specify library version info [each variable defaults to 0]
+ specify library version info [each variable defaults to 0]
All other options (arguments beginning with \`-') are ignored.
diff --git a/pactest/.gitignore b/pactest/.gitignore
index 59a0622c..0d20b648 100644
--- a/pactest/.gitignore
+++ b/pactest/.gitignore
@@ -1,4 +1 @@
-Makefile
-Makefile.in
*.pyc
-root
diff --git a/pactest/Makefile.am b/pactest/Makefile.am
index 37c394fd..879f23d0 100644
--- a/pactest/Makefile.am
+++ b/pactest/Makefile.am
@@ -17,3 +17,5 @@ EXTRA_DIST = \
TODO \
ChangeLog \
$(check_SCRIPTS)
+
+# vim:set ts=2 sw=2 noet:
diff --git a/pactest/TODO b/pactest/TODO
index 437bf02c..c7d4555a 100644
--- a/pactest/TODO
+++ b/pactest/TODO
@@ -2,7 +2,7 @@ TODO
====
Features:
-- implement gensync support
+- implement script support (makekpg, repo-add, etc)
Tests:
- add test cases for pacman -D and pacman -T
diff --git a/pactest/pmdb.py b/pactest/pmdb.py
index fb0e10bb..ed552dbf 100755
--- a/pactest/pmdb.py
+++ b/pactest/pmdb.py
@@ -187,8 +187,8 @@ class pmdb:
line = line.strip("\n")
if line == "%DEPENDS%":
pkg.depends = _getsection(fd)
- elif line == "%REQUIREDBY%":
- pkg.requiredby = _getsection(fd)
+ elif line == "%OPTDEPENDS%":
+ pkg.optdepends = _getsection(fd)
elif line == "%CONFLICTS%":
pkg.conflicts = _getsection(fd)
elif line == "%PROVIDES%":
@@ -218,7 +218,10 @@ class pmdb:
"""
"""
- path = os.path.join(self.dbdir, self.treename, pkg.fullname())
+ if self.treename == "local":
+ path = os.path.join(self.dbdir, self.treename, pkg.fullname())
+ else:
+ path = os.path.join(self.dbdir, "sync", self.treename, pkg.fullname())
mkdir(path)
# desc
@@ -233,19 +236,19 @@ class pmdb:
data.append(_mksection("DESC", pkg.desc))
if pkg.groups:
data.append(_mksection("GROUPS", pkg.groups))
+ if pkg.license:
+ data.append(_mksection("LICENSE", pkg.license))
+ if pkg.arch:
+ data.append(_mksection("ARCH", pkg.arch))
+ if pkg.builddate:
+ data.append(_mksection("BUILDDATE", pkg.builddate))
+ if pkg.packager:
+ data.append(_mksection("PACKAGER", pkg.packager))
if self.treename == "local":
if pkg.url:
data.append(_mksection("URL", pkg.url))
- if pkg.license:
- data.append(_mksection("LICENSE", pkg.license))
- if pkg.arch:
- data.append(_mksection("ARCH", pkg.arch))
- if pkg.builddate:
- data.append(_mksection("BUILDDATE", pkg.builddate))
if pkg.installdate:
data.append(_mksection("INSTALLDATE", pkg.installdate))
- if pkg.packager:
- data.append(_mksection("PACKAGER", pkg.packager))
if pkg.size:
data.append(_mksection("SIZE", pkg.size))
if pkg.reason:
@@ -283,14 +286,13 @@ class pmdb:
pkg.mtime["files"] = getmtime(filename)
# depends
- # for local db entries: depends, requiredby, conflicts, provides
+ # for local db entries: depends, conflicts, provides
# for sync ones: depends, conflicts, provides
data = []
if pkg.depends:
data.append(_mksection("DEPENDS", pkg.depends))
- if self.treename == "local":
- if pkg.requiredby:
- data.append(_mksection("REQUIREDBY", pkg.requiredby))
+ if pkg.optdepends:
+ data.append(_mksection("OPTDEPENDS", pkg.optdepends))
if pkg.conflicts:
data.append(_mksection("CONFLICTS", pkg.conflicts))
if pkg.provides:
diff --git a/pactest/pmenv.py b/pactest/pmenv.py
index bff32e98..3b54afc0 100755
--- a/pactest/pmenv.py
+++ b/pactest/pmenv.py
@@ -68,12 +68,10 @@ class pmenv:
t.generate()
# Hack for mtimes consistency
- modified = 0
for i in t.rules:
if i.rule.find("MODIFIED") != -1:
- modified = 1
- if modified:
- time.sleep(3)
+ time.sleep(1.5)
+ break
t.run(self.pacman)
diff --git a/pactest/pmpkg.py b/pactest/pmpkg.py
index c302d2ae..7b8f81d0 100755
--- a/pactest/pmpkg.py
+++ b/pactest/pmpkg.py
@@ -53,7 +53,7 @@ class pmpkg:
self.force = 0 # sync only (will be moved to depends)
# depends
self.depends = []
- self.requiredby = [] # local only
+ self.optdepends = []
self.conflicts = []
self.provides = []
# files
@@ -146,6 +146,8 @@ class pmpkg:
data.append("group = %s" % i)
for i in self.depends:
data.append("depend = %s" % i)
+ for i in self.optdepends:
+ data.append("optdepend = %s" % i)
for i in self.conflicts:
data.append("conflict = %s" % i)
for i in self.provides:
@@ -165,13 +167,23 @@ class pmpkg:
# .FILELIST
if self.files:
- os.system("tar cvf /dev/null * | sort >.FILELIST")
+ # generate a filelist
+ filelist = []
+ current = ""
+ for path, dirs, files in os.walk("."):
+ # we have to strip the './' portion from the path
+ # and add a newline to each entry.
+ current = os.path.join(path, "")[2:]
+ if len(current) != 0:
+ filelist.append(current + "\n")
+ for file in files:
+ # skip .PKGINFO, etc.
+ if(not file.startswith(".")):
+ filelist.append(os.path.join(path, file)[2:] + "\n")
+ f = open('.FILELIST', 'w')
+ f.writelines(filelist)
+ f.close()
targets += " .FILELIST *"
- else:
- #prevent some pacman warnings... I expect a real package would
- #always have at least one file...
- os.system("touch .FILELIST")
- targets += " .FILELIST"
#safely create the dir
mkdir(os.path.dirname(self.path))
diff --git a/pactest/pmrule.py b/pactest/pmrule.py
index 886ac545..8b49f5cd 100755
--- a/pactest/pmrule.py
+++ b/pactest/pmrule.py
@@ -19,7 +19,7 @@
from util import *
-
+from stat import *
class pmrule:
"""Rule object
@@ -83,8 +83,8 @@ class pmrule:
elif case == "DEPENDS":
if not value in newpkg.depends:
success = 0
- elif case == "REQUIREDBY":
- if not value in newpkg.requiredby:
+ elif case == "OPTDEPENDS":
+ if not value in newpkg.optdepends:
success = 0
elif case == "REASON":
if newpkg.reason != int(value):
@@ -108,24 +108,37 @@ class pmrule:
if case == "EXIST":
if not os.path.isfile(filename):
success = 0
- else:
- if case == "MODIFIED":
- for f in files:
- if f.name == key:
- if not f.ismodified():
- success = 0
- elif case == "PACNEW":
- if not os.path.isfile("%s%s" % (filename, PM_PACNEW)):
+ elif case == "MODIFIED":
+ for f in files:
+ if f.name == key:
+ if not f.ismodified():
+ success = 0
+ elif case == "MODE":
+ mode = os.lstat(filename)[ST_MODE]
+ if int(value,8) != S_IMODE(mode):
+ success = 0
+ elif case == "TYPE":
+ if value == "dir":
+ if not os.path.isdir(filename):
success = 0
- elif case == "PACORIG":
- if not os.path.isfile("%s%s" % (filename, PM_PACORIG)):
+ elif value == "file":
+ if not os.path.isfile(filename):
success = 0
- elif case == "PACSAVE":
- if not os.path.isfile("%s%s" % (filename, PM_PACSAVE)):
+ elif value == "link":
+ if not os.path.islink(filename):
success = 0
- else:
- print "FILE rule '%s' not found" % case
- success = -1
+ elif case == "PACNEW":
+ if not os.path.isfile("%s%s" % (filename, PM_PACNEW)):
+ success = 0
+ elif case == "PACORIG":
+ if not os.path.isfile("%s%s" % (filename, PM_PACORIG)):
+ success = 0
+ elif case == "PACSAVE":
+ if not os.path.isfile("%s%s" % (filename, PM_PACSAVE)):
+ success = 0
+ else:
+ print "FILE rule '%s' not found" % case
+ success = -1
else:
print "Rule kind '%s' not found" % kind
success = -1
diff --git a/pactest/pmtest.py b/pactest/pmtest.py
index 06b65bbb..e0b3fd44 100755
--- a/pactest/pmtest.py
+++ b/pactest/pmtest.py
@@ -84,6 +84,7 @@ class pmtest:
self.option = {
"noupgrade": [],
"ignorepkg": [],
+ "ignoregroup": [],
"noextract": []
}
@@ -192,8 +193,12 @@ class pmtest:
cmd.append("libtool gdb --args")
if pacman["valgrind"]:
cmd.append("valgrind --tool=memcheck --leak-check=full --show-reachable=yes")
- cmd.append("%s --config=%s --root=%s" \
- % (pacman["bin"], os.path.join(self.root, PACCONF), self.root))
+ cmd.append("%s --config=%s --root=%s --dbpath=%s --cachedir=%s" \
+ % (pacman["bin"],
+ os.path.join(self.root, PACCONF),
+ self.root,
+ os.path.join(self.root, PM_DBPATH),
+ os.path.join(self.root, PM_CACHEDIR)))
if not pacman["manual-confirm"]:
cmd.append("--noconfirm")
if pacman["debug"]:
diff --git a/pactest/tests/add030.py b/pactest/tests/add030.py
deleted file mode 100644
index d36311c0..00000000
--- a/pactest/tests/add030.py
+++ /dev/null
@@ -1,18 +0,0 @@
-self.description = "Freshen a package"
-
-lp = pmpkg("dummy")
-lp.files = ["bin/dummy",
- "usr/man/man1/dummy.1"]
-self.addpkg2db("local", lp)
-
-p = pmpkg("dummy", "1.0-2")
-p.files = ["bin/dummy",
- "usr/man/man1/dummy.1"]
-self.addpkg(p)
-
-self.args = "-F %s" % p.filename()
-
-self.addrule("PACMAN_RETCODE=0")
-self.addrule("PKG_VERSION=dummy|1.0-2")
-for f in p.files:
- self.addrule("FILE_MODIFIED=%s" % f)
diff --git a/pactest/tests/add031.py b/pactest/tests/add031.py
deleted file mode 100644
index 38b0485c..00000000
--- a/pactest/tests/add031.py
+++ /dev/null
@@ -1,18 +0,0 @@
-self.description = "Freshen a package (installed is newer)"
-
-lp = pmpkg("dummy", "1.0-2")
-lp.files = ["bin/dummy",
- "usr/man/man1/dummy.1"]
-self.addpkg2db("local", lp)
-
-p = pmpkg("dummy")
-p.files = ["bin/dummy",
- "usr/man/man1/dummy.1"]
-self.addpkg(p)
-
-self.args = "-F %s" % p.filename()
-
-self.addrule("PACMAN_RETCODE=1")
-self.addrule("!PKG_MODIFIED=dummy")
-for f in p.files:
- self.addrule("!FILE_MODIFIED=%s" % f)
diff --git a/pactest/tests/add032.py b/pactest/tests/add032.py
deleted file mode 100644
index 2c5a11fa..00000000
--- a/pactest/tests/add032.py
+++ /dev/null
@@ -1,18 +0,0 @@
-self.description = "Freshen a package (installed is same)"
-
-lp = pmpkg("dummy")
-lp.files = ["bin/dummy",
- "usr/man/man1/dummy.1"]
-self.addpkg2db("local", lp)
-
-p = pmpkg("dummy")
-p.files = ["bin/dummy",
- "usr/man/man1/dummy.1"]
-self.addpkg(p)
-
-self.args = "-F %s" % p.filename()
-
-self.addrule("PACMAN_RETCODE=1")
-self.addrule("!PKG_MODIFIED=dummy")
-for f in p.files:
- self.addrule("!FILE_MODIFIED=%s" % f)
diff --git a/pactest/tests/add043.py b/pactest/tests/add043.py
new file mode 100644
index 00000000..18f732ee
--- /dev/null
+++ b/pactest/tests/add043.py
@@ -0,0 +1,15 @@
+self.description = "provision>=1.0-2 dependency"
+
+p = pmpkg("pkg1", "1.0-2")
+p.depends = ["provision>=1.0-2"]
+self.addpkg(p)
+
+lp = pmpkg("pkg2", "1.0-2")
+lp.provides = ["provision"]
+self.addpkg2db("local", lp)
+
+self.args = "-A %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/add044.py b/pactest/tests/add044.py
new file mode 100644
index 00000000..cbc82e9d
--- /dev/null
+++ b/pactest/tests/add044.py
@@ -0,0 +1,15 @@
+self.description = "provision>=1.0-2 dependency (2)"
+
+p = pmpkg("pkg1", "1.0-2")
+p.depends = ["provision>=1.0-2"]
+self.addpkg(p)
+
+lp = pmpkg("pkg2", "1.0-2")
+lp.provides = ["provision 1.0-2"]
+self.addpkg2db("local", lp)
+
+self.args = "-A %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/add045.py b/pactest/tests/add045.py
new file mode 100644
index 00000000..b53e0906
--- /dev/null
+++ b/pactest/tests/add045.py
@@ -0,0 +1,15 @@
+self.description = "provision>=1.0-2 dependency (3)"
+
+p = pmpkg("pkg1", "1.0-2")
+p.depends = ["provision>=1.0-2"]
+self.addpkg(p)
+
+lp = pmpkg("pkg2", "1.0-2")
+lp.provides = ["provision 1.0-1"]
+self.addpkg2db("local", lp)
+
+self.args = "-A %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/depconflict100.py b/pactest/tests/depconflict100.py
new file mode 100644
index 00000000..948017d9
--- /dev/null
+++ b/pactest/tests/depconflict100.py
@@ -0,0 +1,15 @@
+self.description = "a package conflicts with itself"
+
+sp1 = pmpkg("pkg1")
+sp1.conflicts = ["pkg1"]
+self.addpkg2db("sync", sp1);
+
+sp2 = pmpkg("pkg2", "1.0-2")
+self.addpkg2db("sync", sp2)
+
+self.args = "-S %s" % " ".join([p.name for p in sp1, sp2])
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_VERSION=pkg2|1.0-2")
diff --git a/pactest/tests/depconflict110.py b/pactest/tests/depconflict110.py
new file mode 100644
index 00000000..2e326f52
--- /dev/null
+++ b/pactest/tests/depconflict110.py
@@ -0,0 +1,13 @@
+self.description = "conflict with version (conflict)"
+
+p = pmpkg("pkg1")
+p.conflicts = ["pkg2<=1.0-2"]
+self.addpkg(p);
+
+lp = pmpkg("pkg2", "1.0-1")
+self.addpkg2db("local", lp)
+
+self.args = "-A %s" % p.filename()
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/depconflict111.py b/pactest/tests/depconflict111.py
new file mode 100644
index 00000000..6f95733b
--- /dev/null
+++ b/pactest/tests/depconflict111.py
@@ -0,0 +1,13 @@
+self.description = "conflict with version (no conflict)"
+
+p = pmpkg("pkg1")
+p.conflicts = ["pkg2=1.0-2"]
+self.addpkg(p);
+
+lp = pmpkg("pkg2", "1.0-1")
+self.addpkg2db("local", lp)
+
+self.args = "-A %s" % p.filename()
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/depconflict120.py b/pactest/tests/depconflict120.py
new file mode 100644
index 00000000..a9f3f6b3
--- /dev/null
+++ b/pactest/tests/depconflict120.py
@@ -0,0 +1,19 @@
+self.description = "target vs db conflict will disappear after upgrade"
+
+sp1 = pmpkg("pkg1")
+sp1.conflicts = ["imaginary"]
+self.addpkg2db("sync", sp1);
+
+sp2 = pmpkg("pkg2", "1.0-2")
+self.addpkg2db("sync", sp2)
+
+lp = pmpkg("pkg2", "1.0-1")
+lp.provides = ["imaginary"]
+self.addpkg2db("local", lp)
+
+self.args = "-S %s" % " ".join([p.name for p in sp1, sp2])
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_VERSION=pkg2|1.0-2")
diff --git a/pactest/tests/deptest001.py b/pactest/tests/deptest001.py
new file mode 100644
index 00000000..db0b7684
--- /dev/null
+++ b/pactest/tests/deptest001.py
@@ -0,0 +1,20 @@
+self.description = "test deptest (-T) functionality"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = ["dep"]
+self.addpkg2db("sync", sp1)
+
+sp1dep = pmpkg("dep")
+self.addpkg2db("sync", sp1dep)
+
+sp2 = pmpkg("pkg2")
+self.addpkg2db("sync", sp2)
+
+lp2 = pmpkg("pkg2")
+self.addpkg2db("local", lp2)
+
+self.args = "-T pkg1 pkg2"
+
+self.addrule("PACMAN_RETCODE=127")
+self.addrule("PACMAN_OUTPUT=pkg1")
+self.addrule("!PACMAN_OUTPUT=pkg2")
diff --git a/pactest/tests/fileconflict001.py b/pactest/tests/fileconflict001.py
new file mode 100644
index 00000000..8aca9a0a
--- /dev/null
+++ b/pactest/tests/fileconflict001.py
@@ -0,0 +1,20 @@
+self.description = "Fileconflict with symlinks"
+
+lp = pmpkg("dummy")
+lp.files = ["dir/realdir/",
+ "dir/symdir -> realdir"]
+self.addpkg2db("local", lp)
+
+p1 = pmpkg("pkg1")
+p1.files = ["dir/realdir/file"]
+self.addpkg(p1)
+
+p2 = pmpkg("pkg2")
+p2.files = ["dir/symdir/file"]
+self.addpkg(p2)
+
+self.args = "-A %s" % " ".join([p.filename() for p in p1, p2])
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
diff --git a/pactest/tests/fileconflict002.py b/pactest/tests/fileconflict002.py
new file mode 100644
index 00000000..da04e332
--- /dev/null
+++ b/pactest/tests/fileconflict002.py
@@ -0,0 +1,16 @@
+self.description = "Fileconflict with symlinks (2)"
+
+p1 = pmpkg("pkg1")
+p1.files = ["dir/realdir/file",
+ "dir/symdir -> realdir"]
+self.addpkg(p1)
+
+p2 = pmpkg("pkg2")
+p2.files = ["dir/symdir/file"]
+self.addpkg(p2)
+
+self.args = "-A %s" % " ".join([p.filename() for p in p1, p2])
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
diff --git a/pactest/tests/mode001.py b/pactest/tests/mode001.py
new file mode 100644
index 00000000..ff245a2c
--- /dev/null
+++ b/pactest/tests/mode001.py
@@ -0,0 +1,12 @@
+self.description = "Check the mode of default files in a package"
+
+p = pmpkg("pkg1")
+p.files = ["bin/foo"
+ "bin/bar"]
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+for f in p.files:
+ self.addrule("FILE_MODE=%s|644" % f)
diff --git a/pactest/tests/pacman001.py b/pactest/tests/pacman001.py
new file mode 100644
index 00000000..d467e3f2
--- /dev/null
+++ b/pactest/tests/pacman001.py
@@ -0,0 +1,5 @@
+self.description = "Test command line option (--version)"
+
+self.args = "--version"
+
+self.addrule("PACMAN_RETCODE=2")
diff --git a/pactest/tests/pacman002.py b/pactest/tests/pacman002.py
new file mode 100644
index 00000000..c0217259
--- /dev/null
+++ b/pactest/tests/pacman002.py
@@ -0,0 +1,5 @@
+self.description = "Test command line option (--help)"
+
+self.args = "--help"
+
+self.addrule("PACMAN_RETCODE=2")
diff --git a/pactest/tests/pacman003.py b/pactest/tests/pacman003.py
new file mode 100644
index 00000000..b5275943
--- /dev/null
+++ b/pactest/tests/pacman003.py
@@ -0,0 +1,5 @@
+self.description = "Test command line option (-S --help)"
+
+self.args = "-S --help"
+
+self.addrule("PACMAN_RETCODE=2")
diff --git a/pactest/tests/pacman004.py b/pactest/tests/pacman004.py
new file mode 100644
index 00000000..d8d6b102
--- /dev/null
+++ b/pactest/tests/pacman004.py
@@ -0,0 +1,5 @@
+self.description = "Test command line option (-v)"
+
+self.args = "-v"
+
+self.addrule("PACMAN_RETCODE=1")
diff --git a/pactest/tests/query001.py b/pactest/tests/query001.py
index 315af84a..8faf0e15 100644
--- a/pactest/tests/query001.py
+++ b/pactest/tests/query001.py
@@ -7,4 +7,4 @@ self.addpkg2db("local", p)
self.args = "-Q %s" % p.name
self.addrule("PACMAN_RETCODE=0")
-self.addrule("PACMAN_OUTPUT=foobar")
+self.addrule("PACMAN_OUTPUT=%s" % p.name)
diff --git a/pactest/tests/query002.py b/pactest/tests/query002.py
new file mode 100644
index 00000000..c6a6c7d3
--- /dev/null
+++ b/pactest/tests/query002.py
@@ -0,0 +1,23 @@
+self.description = "Query info on a package"
+
+p = pmpkg("foobar")
+p.files = ["bin/foobar"]
+p.desc = "test description"
+p.groups = ["foo"]
+p.url = "http://www.archlinux.org"
+p.license = "GPL2"
+p.arch = "i686"
+# test both old style and new style dates
+p.builddate = "Mon Oct 1 01:40:21 2007 UTC"
+p.installdate = "1196640127"
+p.packager = "Arch Linux"
+
+self.addpkg2db("local", p)
+
+self.args = "-Qi %s" % p.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % p.name)
+self.addrule("PACMAN_OUTPUT=%s" % p.desc)
+self.addrule("PACMAN_OUTPUT=Oct")
+self.addrule("PACMAN_OUTPUT=Dec")
diff --git a/pactest/tests/query003.py b/pactest/tests/query003.py
new file mode 100644
index 00000000..ea113081
--- /dev/null
+++ b/pactest/tests/query003.py
@@ -0,0 +1,10 @@
+self.description = "Query search for a package"
+
+p = pmpkg("foobar")
+p.files = ["bin/foobar"]
+self.addpkg2db("local", p)
+
+self.args = "-Qs %s" % p.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % p.name)
diff --git a/pactest/tests/query004.py b/pactest/tests/query004.py
new file mode 100644
index 00000000..8faf0e15
--- /dev/null
+++ b/pactest/tests/query004.py
@@ -0,0 +1,10 @@
+self.description = "Query a package"
+
+p = pmpkg("foobar")
+p.files = ["bin/foobar"]
+self.addpkg2db("local", p)
+
+self.args = "-Q %s" % p.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % p.name)
diff --git a/pactest/tests/remove040.py b/pactest/tests/remove040.py
index d15984b3..07d3e67d 100644
--- a/pactest/tests/remove040.py
+++ b/pactest/tests/remove040.py
@@ -1,4 +1,4 @@
-self.description = "Remove a package required by another package"
+self.description = "Remove a package that requires another package"
lp1 = pmpkg("pkg1")
lp1.depends = ["imaginary"]
diff --git a/pactest/tests/remove041.py b/pactest/tests/remove041.py
new file mode 100644
index 00000000..9ab7bf74
--- /dev/null
+++ b/pactest/tests/remove041.py
@@ -0,0 +1,21 @@
+self.description = "Remove a no longer needed package (multiple provision)"
+
+lp1 = pmpkg("pkg1")
+lp1.provides = ["imaginary"]
+lp1.requiredby = ["pkg3"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.provides = ["imaginary"]
+lp2.requiredby = ["pkg3"]
+self.addpkg2db("local", lp2)
+
+lp3 = pmpkg("pkg3")
+lp3.depends = ["imaginary"]
+self.addpkg2db("local", lp3)
+
+self.args = "-R %s" % lp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/remove042.py b/pactest/tests/remove042.py
new file mode 100644
index 00000000..5de1fb41
--- /dev/null
+++ b/pactest/tests/remove042.py
@@ -0,0 +1,17 @@
+self.description = "Cascade remove a package required by another package"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["imaginary"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.provides = ["imaginary"]
+lp2.requiredby = [ "pkg1" ]
+self.addpkg2db("local", lp2)
+
+
+self.args = "-Rc %s" % lp2.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
diff --git a/pactest/tests/remove043.py b/pactest/tests/remove043.py
new file mode 100644
index 00000000..a377c58b
--- /dev/null
+++ b/pactest/tests/remove043.py
@@ -0,0 +1,18 @@
+self.description = "Remove a package required by another package"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["imaginary"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.provides = ["imaginary"]
+lp2.requiredby = [ "pkg1" ]
+self.addpkg2db("local", lp2)
+
+
+self.args = "-R %s" % lp2.name
+
+self.addrule("!PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/remove044.py b/pactest/tests/remove044.py
new file mode 100644
index 00000000..720c1fe7
--- /dev/null
+++ b/pactest/tests/remove044.py
@@ -0,0 +1,16 @@
+self.description = "-Rs test"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2=1.1-1"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.0-1")
+lp2.reason = 1
+self.addpkg2db("local", lp2)
+
+
+self.args = "-Rs %s" % lp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/remove045.py b/pactest/tests/remove045.py
new file mode 100644
index 00000000..d8b7845b
--- /dev/null
+++ b/pactest/tests/remove045.py
@@ -0,0 +1,30 @@
+self.description = "-Rs advanced test"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2" , "pkg3"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.reason = 1
+lp2.depends = ["pkg4"]
+lp2.requiredby = ["pkg1"]
+self.addpkg2db("local", lp2)
+
+lp3 = pmpkg("pkg3")
+lp3.reason = 1
+lp3.requiredby = ["pkg1", "pkg4"]
+self.addpkg2db("local", lp3)
+
+lp4 = pmpkg("pkg4")
+lp4.reason = 1
+lp4.depends = ["pkg3"]
+lp4.requiredby = ["pkg2"]
+self.addpkg2db("local", lp4)
+
+self.args = "-Rs %s" % lp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
+self.addrule("!PKG_EXIST=pkg3")
+self.addrule("!PKG_EXIST=pkg4")
diff --git a/pactest/tests/remove046.py b/pactest/tests/remove046.py
new file mode 100644
index 00000000..1ee8be17
--- /dev/null
+++ b/pactest/tests/remove046.py
@@ -0,0 +1,10 @@
+self.description = "Cascade remove a package with a broken required by"
+
+lp1 = pmpkg("pkg1")
+lp1.requiredby = [ "fake" ]
+self.addpkg2db("local", lp1)
+
+self.args = "-Rc %s" % lp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
diff --git a/pactest/tests/remove047.py b/pactest/tests/remove047.py
new file mode 100644
index 00000000..9606c2e3
--- /dev/null
+++ b/pactest/tests/remove047.py
@@ -0,0 +1,25 @@
+self.description = "Remove a package required by other packages"
+
+lp1 = pmpkg("pkg1")
+lp1.requiredby = ["pkg2", "pkg3", "pkg4"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.depends = ["pkg1"]
+self.addpkg2db("local", lp2)
+
+lp3 = pmpkg("pkg3")
+lp3.depends = ["pkg1"]
+self.addpkg2db("local", lp3)
+
+lp4 = pmpkg("pkg4")
+lp4.depends = ["pkg1"]
+self.addpkg2db("local", lp4)
+
+self.args = "-R pkg1 pkg2"
+
+self.addrule("!PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_EXIST=pkg3")
+self.addrule("PKG_EXIST=pkg4")
diff --git a/pactest/tests/remove048.py b/pactest/tests/remove048.py
new file mode 100644
index 00000000..2d9b4803
--- /dev/null
+++ b/pactest/tests/remove048.py
@@ -0,0 +1,10 @@
+self.description = "Remove a package with a broken required by"
+
+lp1 = pmpkg("pkg1")
+lp1.requiredby = [ "dep" ]
+self.addpkg2db("local", lp1)
+
+self.args = "-R %s" % lp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
diff --git a/pactest/tests/requiredby001.py b/pactest/tests/requiredby001.py
new file mode 100644
index 00000000..0f05d82c
--- /dev/null
+++ b/pactest/tests/requiredby001.py
@@ -0,0 +1,20 @@
+self.description = "A package is downgraded no longer satisfying a depend"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2=1.1"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.1-1")
+lp2.requiredby = ["pkg1"]
+self.addpkg2db("local", lp2)
+
+p = pmpkg("pkg2", "1.0-1")
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg2|1.1-1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/requiredby002.py b/pactest/tests/requiredby002.py
new file mode 100644
index 00000000..299ec88b
--- /dev/null
+++ b/pactest/tests/requiredby002.py
@@ -0,0 +1,16 @@
+self.description = "A package was removed with -Rd, then downgraded"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2=1.1"]
+self.addpkg2db("local", lp1)
+
+p = pmpkg("pkg2", "1.0-1")
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg2|1.0-1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("!PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/requiredby003.py b/pactest/tests/requiredby003.py
new file mode 100644
index 00000000..3279c2ab
--- /dev/null
+++ b/pactest/tests/requiredby003.py
@@ -0,0 +1,16 @@
+self.description = "A package was removed with -Rd, then upgraded"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2>=1.1"]
+self.addpkg2db("local", lp1)
+
+p = pmpkg("pkg2", "1.2-1")
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg2|1.2-1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/requiredby004.py b/pactest/tests/requiredby004.py
new file mode 100644
index 00000000..c4fe7687
--- /dev/null
+++ b/pactest/tests/requiredby004.py
@@ -0,0 +1,20 @@
+self.description = "Upgrade a package that no longer needs a depend"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.requiredby = ["pkg1"]
+self.addpkg2db("local", lp2)
+
+p = pmpkg("pkg1", "1.1-1")
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg1|1.1-1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("!PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/requiredby005.py b/pactest/tests/requiredby005.py
new file mode 100644
index 00000000..5b2ce164
--- /dev/null
+++ b/pactest/tests/requiredby005.py
@@ -0,0 +1,21 @@
+self.description = "Remove lp1, requiredby should move from lp1 to lp2"
+
+lp1 = pmpkg("foo")
+lp1.requiredby = ["pkg3"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.provides = ["foo"]
+self.addpkg2db("local", lp2)
+
+lp3 = pmpkg("pkg3")
+lp3.depends = ["foo"]
+self.addpkg2db("local", lp3)
+
+
+self.args = "-R %s" % lp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=foo")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=pkg2|pkg3")
diff --git a/pactest/tests/requiredby006.py b/pactest/tests/requiredby006.py
new file mode 100644
index 00000000..ea14cde5
--- /dev/null
+++ b/pactest/tests/requiredby006.py
@@ -0,0 +1,21 @@
+self.description = "Broken requiredby/depends list"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.requiredby = ["foo", "pkg1"]
+self.addpkg2db("local", lp2)
+
+p = pmpkg("pkg1", "1.1-1")
+p.depends = ["pkg2"]
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg1|1.1-1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/scriptlet001.py b/pactest/tests/scriptlet001.py
index 73bb7691..3609d167 100644
--- a/pactest/tests/scriptlet001.py
+++ b/pactest/tests/scriptlet001.py
@@ -2,6 +2,10 @@
# validity of the scripts, only that they fire (or try to)
self.description = "Scriptlet test (pre/post install)"
+lpsh = pmpkg("sh")
+lpsh.files = ['bin/sh']
+self.addpkg2db("local", lpsh)
+
p1 = pmpkg("dummy")
p1.files = ['etc/dummy.conf']
p1.install['pre_install'] = "ls /etc";
@@ -12,5 +16,6 @@ self.addpkg(p1)
self.args = "--debug -U %s" % p1.filename()
self.addrule("PACMAN_RETCODE=0")
+self.addrule("FILE_EXIST=bin/sh")
self.addrule("PACMAN_OUTPUT=pre_install")
self.addrule("PACMAN_OUTPUT=post_install")
diff --git a/pactest/tests/scriptlet002.py b/pactest/tests/scriptlet002.py
new file mode 100644
index 00000000..38ed5fd0
--- /dev/null
+++ b/pactest/tests/scriptlet002.py
@@ -0,0 +1,21 @@
+# quick note here - chroot() is expected to fail. We're not checking the
+# validity of the scripts, only that they fire (or try to)
+self.description = "Scriptlet test (pre/post remove)"
+
+lpsh = pmpkg("sh")
+lpsh.files = ['bin/sh']
+self.addpkg2db("local", lpsh)
+
+p1 = pmpkg("dummy")
+p1.files = ['etc/dummy.conf']
+p1.install['pre_remove'] = "ls /etc";
+p1.install['post_remove'] = "ls /etc";
+self.addpkg2db("local", p1)
+
+# --debug is necessary to check PACMAN_OUTPUT
+self.args = "--debug -R %s" % p1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("FILE_EXIST=bin/sh")
+self.addrule("PACMAN_OUTPUT=pre_remove")
+self.addrule("PACMAN_OUTPUT=post_remove")
diff --git a/pactest/tests/symlink001.py b/pactest/tests/symlink001.py
new file mode 100644
index 00000000..cbf71ccc
--- /dev/null
+++ b/pactest/tests/symlink001.py
@@ -0,0 +1,20 @@
+self.description = "Dir symlinks overwritten on install (the perl/git bug)"
+
+lp = pmpkg("dummy")
+lp.files = ["dir/realdir/",
+ "dir/symdir -> realdir"]
+self.addpkg2db("local", lp)
+
+p = pmpkg("pkg1")
+p.files = ["dir/symdir/tmp"]
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("FILE_EXIST=dir/symdir/tmp")
+self.addrule("FILE_EXIST=dir/realdir/tmp")
+self.addrule("FILE_TYPE=dir/symdir/tmp|file")
+self.addrule("FILE_TYPE=dir/symdir|link")
+self.addrule("FILE_TYPE=dir/realdir|dir")
diff --git a/pactest/tests/sync011.py b/pactest/tests/sync011.py
new file mode 100644
index 00000000..f5b1943a
--- /dev/null
+++ b/pactest/tests/sync011.py
@@ -0,0 +1,20 @@
+self.description = "Install a package from a sync db with cascaded dependencies + provides"
+
+sp1 = pmpkg("dummy", "1.0-2")
+sp1.depends = ["dep1", "dep2=1.0-2"]
+
+sp2 = pmpkg("dep1")
+sp2.files = ["bin/dep1"]
+sp2.provides = ["dep2"]
+
+sp3 = pmpkg("dep2", "1.0-2")
+
+for p in sp1, sp2, sp3:
+ self.addpkg2db("sync", p);
+
+self.args = "-S %s" % sp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=dummy|1.0-2")
+self.addrule("PKG_EXIST=dep1")
+self.addrule("PKG_EXIST=dep2")
diff --git a/pactest/tests/sync012.py b/pactest/tests/sync012.py
new file mode 100644
index 00000000..3aaba376
--- /dev/null
+++ b/pactest/tests/sync012.py
@@ -0,0 +1,20 @@
+self.description = "Install packages from a sync db with circular dependencies"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = ["pkg2"]
+
+sp2 = pmpkg("pkg2")
+sp2.depends = ["pkg3"]
+
+sp3 = pmpkg("pkg3")
+sp3.depends = ["pkg1"]
+
+for p in sp1, sp2, sp3:
+ self.addpkg2db("sync", p);
+
+self.args = "-S %s" % sp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_EXIST=pkg3")
diff --git a/pactest/tests/sync030.py b/pactest/tests/sync030.py
new file mode 100644
index 00000000..1fd97500
--- /dev/null
+++ b/pactest/tests/sync030.py
@@ -0,0 +1,19 @@
+self.description = "Sync packages non-explicitly"
+
+lp1 = pmpkg("pkg1")
+lp1.reason = 0
+self.addpkg2db("local", lp1)
+
+p1 = pmpkg("pkg1", "1.0-2")
+p2 = pmpkg("pkg2", "1.0-2")
+
+for p in p1, p2:
+ self.addpkg2db("sync", p)
+
+self.args = "-S --asdeps %s" % " ".join([p.name for p in p1, p2])
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=pkg1|1.0-2")
+self.addrule("PKG_VERSION=pkg2|1.0-2")
+self.addrule("PKG_REASON=pkg1|1")
+self.addrule("PKG_REASON=pkg2|1")
diff --git a/pactest/tests/sync044.py b/pactest/tests/sync044.py
new file mode 100644
index 00000000..c4ff1549
--- /dev/null
+++ b/pactest/tests/sync044.py
@@ -0,0 +1,20 @@
+self.description = "A dependency induces a replacement"
+
+lp1 = pmpkg("pkg1")
+self.addpkg2db("local", lp1);
+
+sp2 = pmpkg("pkg2")
+sp2.depends = ["pkg3"]
+self.addpkg2db("sync", sp2);
+
+sp3 = pmpkg("pkg3")
+sp3.conflicts = ["pkg1"]
+self.addpkg2db("sync", sp3);
+
+self.args = "-S pkg2"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_EXIST=pkg3")
+self.addrule("PKG_REASON=pkg3|1")
diff --git a/pactest/tests/sync060.py b/pactest/tests/sync060.py
new file mode 100644
index 00000000..45f0c3e0
--- /dev/null
+++ b/pactest/tests/sync060.py
@@ -0,0 +1,15 @@
+self.description = "Replace a package with a broken required by"
+
+lp1 = pmpkg("pkg1")
+lp1.replaces = [ "pkg2" ]
+self.addpkg2db("sync", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.requiredby = [ "fake" ]
+self.addpkg2db("local", lp2)
+
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
diff --git a/pactest/tests/sync1002.py b/pactest/tests/sync1002.py
new file mode 100644
index 00000000..c158838b
--- /dev/null
+++ b/pactest/tests/sync1002.py
@@ -0,0 +1,19 @@
+self.description = "Test -Se (resolve the dependencies' dependencies )"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = [ "pkg2" ]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2")
+sp2.depends = [ "pkg3" ]
+self.addpkg2db("sync", sp2)
+
+sp3 = pmpkg("pkg3")
+self.addpkg2db("sync", sp3)
+
+self.args = "-Se pkg1 pkg3"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_EXIST=pkg3")
+self.addrule("!PKG_EXIST=pkg1")
diff --git a/pactest/tests/sync1003.py b/pactest/tests/sync1003.py
new file mode 100644
index 00000000..3fd9799d
--- /dev/null
+++ b/pactest/tests/sync1003.py
@@ -0,0 +1,26 @@
+self.description = "Induced removal would break dependency"
+
+sp1 = pmpkg("pkg1", "1.0-2")
+sp1.replaces = [ "pkg2" ]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2", "1.0-2")
+self.addpkg2db("sync", sp2)
+
+sp3 = pmpkg("pkg3", "1.0-2")
+sp3.depends = ["pkg2=1.0-2"]
+self.addpkg2db("sync", sp3)
+
+lp1 = pmpkg("pkg1", "1.0-1")
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.0-2")
+self.addpkg2db("local", lp2)
+
+lp3 = pmpkg("pkg3", "1.0-1")
+self.addpkg2db("local", lp3)
+
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/sync1004.py b/pactest/tests/sync1004.py
new file mode 100644
index 00000000..f87bbe9b
--- /dev/null
+++ b/pactest/tests/sync1004.py
@@ -0,0 +1,18 @@
+self.description = "Induced removal would break dependency (2)"
+
+sp1 = pmpkg("pkg1")
+sp1.conflicts = [ "depend" ]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2")
+sp2.depends = ["depend"]
+self.addpkg2db("sync", sp2)
+
+lp = pmpkg("depend")
+self.addpkg2db("local", lp)
+
+self.args = "-S pkg1 pkg2"
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_EXIST=depend")
+
diff --git a/pactest/tests/sync1005.py b/pactest/tests/sync1005.py
new file mode 100644
index 00000000..4fa82478
--- /dev/null
+++ b/pactest/tests/sync1005.py
@@ -0,0 +1,14 @@
+self.description = "Conflicting package names in sync repos"
+
+sp1 = pmpkg("pkg")
+sp1.provides = [ "provision1" ]
+self.addpkg2db("sync1", sp1)
+
+sp2 = pmpkg("pkg")
+sp2.provides = [ "provision2" ]
+self.addpkg2db("sync2", sp2)
+
+self.args = "-S provision1 provision2"
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg")
diff --git a/pactest/tests/sync1006.py b/pactest/tests/sync1006.py
new file mode 100644
index 00000000..c331f42e
--- /dev/null
+++ b/pactest/tests/sync1006.py
@@ -0,0 +1,14 @@
+self.description = "Conflicting package names in sync repos (diff versions)"
+
+sp1 = pmpkg("pkg", "1.0-1")
+sp1.provides = [ "provision1" ]
+self.addpkg2db("sync1", sp1)
+
+sp2 = pmpkg("pkg", "2.0-1")
+sp2.provides = [ "provision2" ]
+self.addpkg2db("sync2", sp2)
+
+self.args = "-S provision1 provision2"
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg")
diff --git a/pactest/tests/sync1100.py b/pactest/tests/sync1100.py
new file mode 100644
index 00000000..f0fb4f64
--- /dev/null
+++ b/pactest/tests/sync1100.py
@@ -0,0 +1,23 @@
+self.description = "Get info on package from a sync db"
+
+sp = pmpkg("dummy")
+sp.files = ["bin/dummy",
+ "usr/man/man1/dummy.1"]
+sp.desc = "test description"
+sp.groups = ["foo"]
+sp.url = "http://www.archlinux.org"
+sp.license = "GPL2"
+sp.arch = "i686"
+# test both old style and new style dates
+sp.builddate = "Mon Oct 1 01:40:21 2007 UTC"
+sp.packager = "Arch Linux"
+sp.md5sum = "00000000000000000000000000000000"
+
+self.addpkg2db("sync", sp)
+
+self.args = "-Si %s" % sp.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % sp.name)
+self.addrule("PACMAN_OUTPUT=%s" % sp.desc)
+self.addrule("PACMAN_OUTPUT=Oct")
diff --git a/pactest/tests/sync1101.py b/pactest/tests/sync1101.py
new file mode 100644
index 00000000..ba2ad44f
--- /dev/null
+++ b/pactest/tests/sync1101.py
@@ -0,0 +1,11 @@
+self.description = "Search for package from a sync db"
+
+sp = pmpkg("dummy")
+sp.files = ["bin/dummy",
+ "usr/man/man1/dummy.1"]
+self.addpkg2db("sync", sp)
+
+self.args = "-Ss %s" % sp.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % sp.name)
diff --git a/pactest/tests/sync1102.py b/pactest/tests/sync1102.py
new file mode 100644
index 00000000..3a27238f
--- /dev/null
+++ b/pactest/tests/sync1102.py
@@ -0,0 +1,12 @@
+self.description = "Get URL on package from a sync db"
+
+sp = pmpkg("dummy")
+sp.files = ["bin/dummy",
+ "usr/man/man1/dummy.1"]
+self.addpkg2db("sync", sp)
+
+self.args = "-Sp %s" % sp.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % sp.name)
+self.addrule("PACMAN_OUTPUT=file://")
diff --git a/pactest/tests/sync1103.py b/pactest/tests/sync1103.py
new file mode 100644
index 00000000..052c7236
--- /dev/null
+++ b/pactest/tests/sync1103.py
@@ -0,0 +1,11 @@
+self.description = "Get package list from sync dbs"
+
+sp = pmpkg("dummy")
+sp.files = ["bin/dummy",
+ "usr/man/man1/dummy.1"]
+self.addpkg2db("sync", sp)
+
+self.args = "-Sl"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % sp.name)
diff --git a/pactest/tests/sync138.py b/pactest/tests/sync138.py
new file mode 100644
index 00000000..410c7f07
--- /dev/null
+++ b/pactest/tests/sync138.py
@@ -0,0 +1,22 @@
+self.description = "Sysupgrade of packages in 'IgnoreGroup'"
+
+sp1 = pmpkg("pkg1", "1.0-2")
+sp2 = pmpkg("pkg2", "1.0-2")
+sp2.groups = ["grp"]
+
+for p in sp1, sp2:
+ self.addpkg2db("sync", p)
+
+lp1 = pmpkg("pkg1")
+lp2 = pmpkg("pkg2")
+
+for p in lp1, lp2:
+ self.addpkg2db("local", p)
+
+self.option["ignoregroup"] = ["grp"]
+
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=pkg1|1.0-2")
+self.addrule("!PKG_MODIFIED=pkg2")
diff --git a/pactest/tests/sync300.py b/pactest/tests/sync300.py
new file mode 100644
index 00000000..85fb850d
--- /dev/null
+++ b/pactest/tests/sync300.py
@@ -0,0 +1,15 @@
+self.description = "Sync with corrupt database (broken deps)"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = ["pkg2=1.1"]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2", "1.0-1")
+self.addpkg2db("sync", sp2)
+
+self.args = "-S %s" % sp1.name
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
+self.addrule("!PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/sync301.py b/pactest/tests/sync301.py
new file mode 100644
index 00000000..e8526b93
--- /dev/null
+++ b/pactest/tests/sync301.py
@@ -0,0 +1,25 @@
+self.description = "Sysupgrade : pacman needs to be upgraded and has new deps"
+
+sp = pmpkg("pacman", "1.0-2")
+sp.depends = ["dep"]
+self.addpkg2db("sync", sp)
+
+spdep = pmpkg("dep")
+self.addpkg2db("sync", spdep)
+
+sp1 = pmpkg("pkg1", "1.0-2")
+self.addpkg2db("sync", sp1)
+
+lp = pmpkg("pacman", "1.0-1")
+self.addpkg2db("local", lp)
+
+lp1 = pmpkg("pkg1", "1.0-1")
+self.addpkg2db("local", lp1)
+
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pacman")
+self.addrule("PKG_VERSION=pacman|1.0-2")
+self.addrule("PKG_EXIST=dep")
+self.addrule("PKG_REQUIREDBY=dep|pacman")
diff --git a/pactest/tests/sync400.py b/pactest/tests/sync400.py
new file mode 100644
index 00000000..2ee1095d
--- /dev/null
+++ b/pactest/tests/sync400.py
@@ -0,0 +1,25 @@
+self.description = "Install package with dep that conflicts with older version of package"
+
+sp1 = pmpkg("pkg1", "1.0-2")
+sp1.depends = ["pkg2=1.0-2"]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2", "1.0-2")
+sp2.conflicts = [ "pkg1=1.0-1" ]
+self.addpkg2db("sync", sp2)
+
+lp1 = pmpkg("pkg1", "1.0-1")
+lp1.depends = ["pkg2=1.0-1"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.0-1")
+lp2.requiredby = [ "pkg1" ]
+self.addpkg2db("local", lp2)
+
+self.args = "-S pkg1"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg1|1.0-2")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_VERSION=pkg2|1.0-2")
diff --git a/pactest/tests/sync401.py b/pactest/tests/sync401.py
new file mode 100644
index 00000000..eb816377
--- /dev/null
+++ b/pactest/tests/sync401.py
@@ -0,0 +1,21 @@
+self.description = "Ensure we choose provider already in target list"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = ["dep"]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2")
+sp2.provides = ["dep"]
+self.addpkg2db("sync", sp2)
+
+sp3 = pmpkg("pkg3")
+sp3.conflicts = ["pkg2"]
+sp3.provides = ["dep"]
+self.addpkg2db("sync", sp3)
+
+self.args = "-S pkg1 pkg2"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("!PKG_EXIST=pkg3")
diff --git a/pactest/tests/sync402.py b/pactest/tests/sync402.py
new file mode 100644
index 00000000..6d82f735
--- /dev/null
+++ b/pactest/tests/sync402.py
@@ -0,0 +1,21 @@
+self.description = "Choice between two providers (1)"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = ["dep"]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2")
+sp2.provides = ["dep"]
+self.addpkg2db("sync", sp2)
+
+sp3 = pmpkg("pkg3")
+sp3.conflicts = ["pkg1"]
+sp3.provides = ["dep"]
+self.addpkg2db("sync", sp3)
+
+self.args = "-S pkg1"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("!PKG_EXIST=pkg3")
diff --git a/pactest/tests/sync403.py b/pactest/tests/sync403.py
new file mode 100644
index 00000000..b8d01016
--- /dev/null
+++ b/pactest/tests/sync403.py
@@ -0,0 +1,21 @@
+self.description = "Choice between two providers (2)"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = ["dep"]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2")
+sp2.conflicts = [ "pkg1" ]
+sp2.provides = [ "dep" ]
+self.addpkg2db("sync", sp2)
+
+sp3 = pmpkg("pkg3")
+sp3.provides = [ "dep" ]
+self.addpkg2db("sync", sp3)
+
+self.args = "-S pkg1"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
+self.addrule("PKG_EXIST=pkg3")
diff --git a/pactest/tests/sync500.py b/pactest/tests/sync500.py
new file mode 100644
index 00000000..36364c16
--- /dev/null
+++ b/pactest/tests/sync500.py
@@ -0,0 +1,10 @@
+self.description = "-S provision"
+
+sp = pmpkg("pkg1")
+sp.provides = ["provision 1.0-1"]
+self.addpkg2db("sync", sp)
+
+self.args = "-S provision"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
diff --git a/pactest/tests/sync900.py b/pactest/tests/sync900.py
new file mode 100644
index 00000000..f21af06a
--- /dev/null
+++ b/pactest/tests/sync900.py
@@ -0,0 +1,28 @@
+self.description = "Replace one package with another providing it"
+
+sp = pmpkg("bar")
+sp.provides = ["foo"]
+sp.conflicts = ["foo"]
+self.addpkg2db("sync", sp)
+
+lp = pmpkg("foo")
+lp.requiredby = ["lp1", "lp2"]
+self.addpkg2db("local", lp)
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["foo"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.depends = ["foo"]
+self.addpkg2db("local", lp2)
+
+self.args = "-S %s" % sp.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=foo")
+self.addrule("PKG_EXIST=bar")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_REQUIREDBY=bar|pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=bar|pkg2")
diff --git a/pactest/tests/sync901.py b/pactest/tests/sync901.py
new file mode 100644
index 00000000..423fe42c
--- /dev/null
+++ b/pactest/tests/sync901.py
@@ -0,0 +1,28 @@
+self.description = "Replace a package providing package with actual package"
+
+sp = pmpkg("foo")
+self.addpkg2db("sync", sp)
+
+lp = pmpkg("bar")
+lp.provides = ["foo"]
+lp.conflicts = ["foo"]
+lp.requiredby = ["lp1", "lp2"]
+self.addpkg2db("local", lp)
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["foo"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.depends = ["foo"]
+self.addpkg2db("local", lp2)
+
+self.args = "-S %s" % sp.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=foo")
+self.addrule("!PKG_EXIST=bar")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_REQUIREDBY=foo|pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=foo|pkg2")
diff --git a/pactest/tests/sync990.py b/pactest/tests/sync990.py
index ee6a590b..6ac5a1f6 100644
--- a/pactest/tests/sync990.py
+++ b/pactest/tests/sync990.py
@@ -7,14 +7,13 @@ sp2 = pmpkg("pkg2")
sp3 = pmpkg("pkg3")
sp3.conflicts = ["pkg2"]
-sp3.provides = ["pkg2"]
for p in sp1, sp2, sp3:
self.addpkg2db("sync", p)
self.args = "-S %s" % " ".join([p.name for p in sp1, sp2])
-self.addrule("PACMAN_RETCODE=0")
-self.addrule("PKG_EXIST=pkg1")
-self.addrule("PKG_EXIST=pkg2")
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
self.addrule("!PKG_EXIST=pkg3")
diff --git a/pactest/tests/trans001.py b/pactest/tests/trans001.py
new file mode 100644
index 00000000..b9889b14
--- /dev/null
+++ b/pactest/tests/trans001.py
@@ -0,0 +1,20 @@
+self.description = "fileconflict error cancels the sync transaction after the removal part"
+
+sp = pmpkg("pkg1")
+sp.replaces = ["pkg3"]
+sp.files = ["dir/file"]
+self.addpkg2db("sync", sp)
+
+lp1 = pmpkg("pkg3")
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.files = ["dir/file"]
+self.addpkg2db("local", lp2)
+
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_EXIST=pkg3")
diff --git a/pactest/tests/type001.py b/pactest/tests/type001.py
new file mode 100644
index 00000000..d55dcc11
--- /dev/null
+++ b/pactest/tests/type001.py
@@ -0,0 +1,17 @@
+self.description = "Check the types of default files in a package"
+
+p = pmpkg("pkg1")
+p.files = ["foo/file1",
+ "foo/file2",
+ "foo/dir/",
+ "foo/symdir -> dir"]
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("FILE_TYPE=foo/|dir")
+self.addrule("FILE_TYPE=foo/file1|file")
+self.addrule("FILE_TYPE=foo/file2|file")
+self.addrule("FILE_TYPE=foo/dir|dir")
+self.addrule("FILE_TYPE=foo/symdir|link")
diff --git a/pactest/tests/upgrade010.py b/pactest/tests/upgrade010.py
index 04f3d816..633ef7e4 100644
--- a/pactest/tests/upgrade010.py
+++ b/pactest/tests/upgrade010.py
@@ -15,3 +15,4 @@ self.args = "-U %s" % p.filename()
self.addrule("PKG_VERSION=dummy|1.0-2")
self.addrule("!FILE_MODIFIED=etc/dummy.conf")
self.addrule("FILE_PACNEW=etc/dummy.conf")
+self.addrule("!FILE_PACSAVE=etc/dummy.conf")
diff --git a/pactest/tests/upgrade020.py b/pactest/tests/upgrade020.py
index ab5fe225..6a7994bb 100644
--- a/pactest/tests/upgrade020.py
+++ b/pactest/tests/upgrade020.py
@@ -15,3 +15,4 @@ self.args = "-U %s" % p.filename()
self.addrule("PKG_VERSION=dummy|1.0-2")
self.addrule("FILE_MODIFIED=etc/dummy.conf")
self.addrule("!FILE_PACNEW=etc/dummy.conf")
+self.addrule("!FILE_PACSAVE=etc/dummy.conf")
diff --git a/pactest/tests/upgrade021.py b/pactest/tests/upgrade021.py
index 1ac0ceb5..b45ea18a 100644
--- a/pactest/tests/upgrade021.py
+++ b/pactest/tests/upgrade021.py
@@ -15,3 +15,4 @@ self.args = "-U %s" % p.filename()
self.addrule("PKG_VERSION=dummy|1.0-2")
self.addrule("!FILE_MODIFIED=etc/dummy.conf")
self.addrule("!FILE_PACNEW=etc/dummy.conf")
+self.addrule("!FILE_PACSAVE=etc/dummy.conf")
diff --git a/pactest/tests/upgrade022.py b/pactest/tests/upgrade022.py
index 6bf12c15..dcf7ae01 100644
--- a/pactest/tests/upgrade022.py
+++ b/pactest/tests/upgrade022.py
@@ -15,3 +15,4 @@ self.args = "-U %s" % p.filename()
self.addrule("PKG_VERSION=dummy|1.0-2")
self.addrule("!FILE_MODIFIED=etc/dummy.conf")
self.addrule("FILE_PACNEW=etc/dummy.conf")
+self.addrule("!FILE_PACSAVE=etc/dummy.conf")
diff --git a/pactest/tests/upgrade023.py b/pactest/tests/upgrade023.py
index 68a29df2..d1d2e314 100644
--- a/pactest/tests/upgrade023.py
+++ b/pactest/tests/upgrade023.py
@@ -15,3 +15,4 @@ self.addrule("PKG_VERSION=dummy|1.1-1")
self.addrule("!FILE_MODIFIED=etc/dummy.conf")
# Do we want this pacnew or not?
self.addrule("FILE_PACNEW=etc/dummy.conf")
+self.addrule("!FILE_PACSAVE=etc/dummy.conf")
diff --git a/pactest/tests/upgrade024.py b/pactest/tests/upgrade024.py
new file mode 100644
index 00000000..ec2f7623
--- /dev/null
+++ b/pactest/tests/upgrade024.py
@@ -0,0 +1,15 @@
+self.description = "Upgrade a package, with a file leaving 'backup'"
+
+lp = pmpkg("dummy")
+lp.files = ["etc/dummy.conf*"]
+lp.backup = ["etc/dummy.conf"]
+self.addpkg2db("local", lp)
+
+p = pmpkg("dummy", "1.0-2")
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PKG_VERSION=dummy|1.0-2")
+self.addrule("FILE_PACSAVE=etc/dummy.conf")
+self.addrule("!FILE_EXIST=etc/dummy.conf")
diff --git a/pactest/tests/upgrade025.py b/pactest/tests/upgrade025.py
new file mode 100644
index 00000000..2c9c06f3
--- /dev/null
+++ b/pactest/tests/upgrade025.py
@@ -0,0 +1,17 @@
+self.description = "Upgrade a package, with a file leaving 'backup' but staying in the pkg"
+
+lp = pmpkg("dummy")
+lp.files = ["etc/dummy.conf*"]
+lp.backup = ["etc/dummy.conf"]
+self.addpkg2db("local", lp)
+
+p = pmpkg("dummy", "1.0-2")
+p.files = ["etc/dummy.conf"]
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PKG_VERSION=dummy|1.0-2")
+self.addrule("FILE_PACSAVE=etc/dummy.conf")
+self.addrule("!FILE_PACNEW=etc/dummy.conf")
+self.addrule("FILE_EXIST=etc/dummy.conf")
diff --git a/pactest/tests/upgrade031.py b/pactest/tests/upgrade031.py
new file mode 100644
index 00000000..856de983
--- /dev/null
+++ b/pactest/tests/upgrade031.py
@@ -0,0 +1,19 @@
+self.description = "Install packages non-explicitly"
+
+lp1 = pmpkg("pkg1")
+lp1.reason = 0
+self.addpkg2db("local", lp1)
+
+p1 = pmpkg("pkg1", "1.0-2")
+p2 = pmpkg("pkg2", "1.0-2")
+
+for p in p1, p2:
+ self.addpkg(p)
+
+self.args = "-U --asdeps %s" % " ".join([p.filename() for p in p1, p2])
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=pkg1|1.0-2")
+self.addrule("PKG_VERSION=pkg2|1.0-2")
+self.addrule("PKG_REASON=pkg1|1")
+self.addrule("PKG_REASON=pkg2|1")
diff --git a/pactest/tests/upgrade056.py b/pactest/tests/upgrade056.py
index 8419731c..b92c38ac 100644
--- a/pactest/tests/upgrade056.py
+++ b/pactest/tests/upgrade056.py
@@ -11,6 +11,7 @@ self.addpkg2db("local", lp2)
lp3 = pmpkg("pkg3")
lp3.provides = ["imaginary"]
+lp3.requiredby = [ "pkg1" ]
self.addpkg2db("local", lp3)
p = pmpkg("pkg2", "1.0-2")
diff --git a/pactest/tests/upgrade059.py b/pactest/tests/upgrade059.py
new file mode 100644
index 00000000..933e4e74
--- /dev/null
+++ b/pactest/tests/upgrade059.py
@@ -0,0 +1,28 @@
+self.description = "Upgrade packages which would break a multiple-depend"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["imaginary"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.0-1")
+lp2.provides = ["imaginary"]
+lp2.requiredby = [ "pkg1" ]
+self.addpkg2db("local", lp2)
+
+lp3 = pmpkg("pkg3", "1.0-1")
+lp3.provides = ["imaginary"]
+lp3.requiredby = [ "pkg1" ]
+self.addpkg2db("local", lp3)
+
+p2 = pmpkg("pkg2", "1.0-2")
+self.addpkg(p2)
+
+p3 = pmpkg("pkg3", "1.0-2")
+self.addpkg(p3)
+
+self.args = "-U %s" % " ".join([p.filename() for p in p2, p3])
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg2|1.0-1")
+self.addrule("PKG_VERSION=pkg3|1.0-1")
diff --git a/pactest/tests/upgrade060.py b/pactest/tests/upgrade060.py
new file mode 100644
index 00000000..dd78bba3
--- /dev/null
+++ b/pactest/tests/upgrade060.py
@@ -0,0 +1,22 @@
+self.description = "Try to upgrade two packages which would break deps"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2=1.0"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.0-1")
+lp2.requiredby = [ "pkg1" ]
+self.addpkg2db("local", lp2)
+
+p1 = pmpkg("pkg1", "1.1-1")
+p1.depends = ["pkg2=1.0-1"]
+self.addpkg(p1)
+
+p2 = pmpkg("pkg2", "1.1-1")
+self.addpkg(p2)
+
+self.args = "-U %s" % " ".join([p.filename() for p in p1, p2])
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_VERSION=pkg1|1.0-1")
+self.addrule("PKG_VERSION=pkg2|1.0-1")
diff --git a/pactest/tests/upgrade061.py b/pactest/tests/upgrade061.py
new file mode 100644
index 00000000..0b1ed4e5
--- /dev/null
+++ b/pactest/tests/upgrade061.py
@@ -0,0 +1,23 @@
+self.description = "Try to upgrade two packages which would break deps"
+
+lp1 = pmpkg("pkg1", "1.0-1")
+lp1.depends = ["imaginary"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.0-1")
+lp2.requiredby = [ "pkg1" ]
+lp2.provides = ["imaginary"]
+self.addpkg2db("local", lp2)
+
+p1 = pmpkg("pkg1", "1.0-2")
+p1.depends = ["imaginary"]
+self.addpkg(p1)
+
+p2 = pmpkg("pkg2", "1.0-2")
+self.addpkg(p2)
+
+self.args = "-U %s" % " ".join([p.filename() for p in p1, p2])
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_VERSION=pkg1|1.0-1")
+self.addrule("PKG_VERSION=pkg2|1.0-1")
diff --git a/pactest/util.py b/pactest/util.py
index 574a59be..ae203747 100755
--- a/pactest/util.py
+++ b/pactest/util.py
@@ -27,8 +27,8 @@ import stat
# ALPM
PM_ROOT = "/"
PM_DBPATH = "var/lib/pacman"
+PM_LOCK = "var/lib/pacman/db.lck"
PM_CACHEDIR = "var/cache/pacman/pkg"
-PM_LOCK = "/tmp/pacman.lck"
PM_EXT_PKG = ".pkg.tar.gz"
PM_EXT_DB = ".db.tar.gz"
PM_PACNEW = ".pacnew"
@@ -149,6 +149,8 @@ def mkdescfile(filename, pkg):
data.append("replaces = %s" % i)
for i in pkg.depends:
data.append("depend = %s" % i)
+ for i in pkg.optdepends:
+ data.append("optdepend = %s" % i)
for i in pkg.conflicts:
data.append("conflict = %s" % i)
for i in pkg.provides:
diff --git a/src/pacman/po/.gitignore b/po/.gitignore
index 50a7b2a4..3be83ffa 100644
--- a/src/pacman/po/.gitignore
+++ b/po/.gitignore
@@ -1,5 +1,3 @@
-Makefile
-Makefile.in
*.gmo
POTFILES
stamp-po
diff --git a/src/pacman/po/LINGUAS b/po/LINGUAS
index 8c249f79..8c249f79 100644
--- a/src/pacman/po/LINGUAS
+++ b/po/LINGUAS
diff --git a/src/pacman/po/Makefile.in.in b/po/Makefile.in.in
index 6f2e2e94..6f2e2e94 100644
--- a/src/pacman/po/Makefile.in.in
+++ b/po/Makefile.in.in
diff --git a/src/pacman/po/Makevars b/po/Makevars
index dd4e84b4..94d8294a 100644
--- a/src/pacman/po/Makevars
+++ b/po/Makevars
@@ -5,7 +5,7 @@ DOMAIN = pacman
# These two variables depend on the location of this directory.
subdir = po
-top_builddir = ../../../
+top_builddir = ../
# These options get passed to xgettext.
XGETTEXT_OPTIONS = \
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 00000000..0f46f122
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,22 @@
+# List of source files with translatable strings
+
+# pacman frontend source files
+src/pacman/add.c
+src/pacman/callback.c
+src/pacman/conf.c
+src/pacman/deptest.c
+src/pacman/package.c
+src/pacman/pacman.c
+src/pacman/query.c
+src/pacman/remove.c
+src/pacman/sync.c
+src/pacman/util.c
+
+# scripts with gettext translations
+scripts/abs.sh.in
+scripts/gensync.sh.in
+scripts/makepkg.sh.in
+scripts/pacman-optimize.sh.in
+scripts/repo-add.sh.in
+scripts/repo-remove.sh.in
+scripts/updatesync.sh.in
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 00000000..1fb3f090
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,2252 @@
+# translation of de.po to German
+# German translations for pacman package.
+# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
+# This file is distributed under the same license as the Pacman package manager package.
+#
+# Marcus Habermehl <bmh1980@frugalware.org>, 2006.
+# Pierre Schmitz <pierre@archlinux.de>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: 2007-04-17 20:18+0200\n"
+"Last-Translator: Matthias Gorissen <matthias@archlinux.de>\n"
+"Language-Team: German <archlinux.de>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);X-Generator: KBabel 1.11.4\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: src/pacman/add.c:42 src/pacman/remove.c:44
+#, c-format
+msgid "failed to release transaction (%s)\n"
+msgstr "Konnte den Vorgang (%s) nicht freigeben\n"
+
+#: src/pacman/add.c:79 src/pacman/query.c:372 src/pacman/remove.c:65
+#: src/pacman/sync.c:753
+msgid "no targets specified (use -h for help)\n"
+msgstr "Keine Pakete angegeben (benutzen Sie -h für Hilfe)\n"
+
+#: src/pacman/add.c:106 src/pacman/sync.c:508
+#, fuzzy, c-format
+msgid "error: %s\n"
+msgstr "Fehler: "
+
+#: src/pacman/add.c:109 src/pacman/remove.c:100 src/pacman/sync.c:482
+#, fuzzy, c-format
+msgid ""
+" if you're sure a package manager is not already\n"
+" running, you can remove %s.\n"
+msgstr ""
+" Wenn Sie sicher sind, dass nicht bereits ein Paketmanager\n"
+" gestartet ist, können Sie %s%s entfernen\n"
+
+#: src/pacman/add.c:116 src/pacman/remove.c:108
+#, c-format
+msgid "loading package data... "
+msgstr "Lade Paketdaten ... "
+
+#: src/pacman/add.c:120
+#, fuzzy, c-format
+msgid "error: failed to add target '%s' (%s)"
+msgstr "Konnte Paket '%s' nicht hinzufügen (%s)"
+
+#: src/pacman/add.c:126 src/pacman/remove.c:120 src/pacman/sync.c:174
+#: src/pacman/sync.c:192
+#, c-format
+msgid "done.\n"
+msgstr "Fertig.\n"
+
+#: src/pacman/add.c:131 src/pacman/remove.c:124 src/pacman/sync.c:614
+#, fuzzy, c-format
+msgid "error: failed to prepare transaction (%s)\n"
+msgstr "Konnte Vorgang nicht vorbereiten (%s)\n"
+
+#: src/pacman/add.c:143 src/pacman/remove.c:132 src/pacman/sync.c:623
+#, fuzzy, c-format
+msgid ":: %s: requires %s\n"
+msgstr ":: %s: Benötigt %s"
+
+#: src/pacman/add.c:151
+#, c-format
+msgid ":: %s: conflicts with %s"
+msgstr ":: %s: Steht im Konflikt mit %s"
+
+#: src/pacman/add.c:160 src/pacman/sync.c:686
+#, c-format
+msgid "%s exists in both '%s' and '%s'\n"
+msgstr "%s existiert in '%s' und '%s'\n"
+
+#: src/pacman/add.c:166 src/pacman/sync.c:692
+#, c-format
+msgid "%s: %s exists in filesystem\n"
+msgstr "%s: %s existiert im Dateisystem\n"
+
+#: src/pacman/add.c:172
+#, c-format
+msgid ""
+"\n"
+"errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"Fehler aufgetreten, keine Pakete wurden aktualisiert.\n"
+
+#: src/pacman/add.c:186 src/pacman/remove.c:171 src/pacman/sync.c:677
+#, fuzzy, c-format
+msgid "error: failed to commit transaction (%s)\n"
+msgstr "Konnte den Vorgang (%s) nicht durchführen\n"
+
+#: src/pacman/callback.c:163
+#, fuzzy, c-format
+msgid "checking dependencies...\n"
+msgstr "Prüfe Abhängigkeiten... "
+
+#: src/pacman/callback.c:167
+#, fuzzy, c-format
+msgid "checking for file conflicts...\n"
+msgstr "Prüfe auf Dateikonflikte... "
+
+#: src/pacman/callback.c:171
+#, fuzzy, c-format
+msgid "resolving dependencies...\n"
+msgstr "Löse Abhängigkeiten auf... "
+
+#: src/pacman/callback.c:174
+#, fuzzy, c-format
+msgid "looking for inter-conflicts...\n"
+msgstr "Suche nach Zwischen-Konflikten... "
+
+#: src/pacman/callback.c:178
+#, fuzzy, c-format
+msgid "installing %s...\n"
+msgstr "Installiere %s... "
+
+#: src/pacman/callback.c:189
+#, fuzzy, c-format
+msgid "removing %s...\n"
+msgstr "Entferne %s... "
+
+#: src/pacman/callback.c:200
+#, fuzzy, c-format
+msgid "upgrading %s...\n"
+msgstr "Aktualisiere %s... "
+
+#: src/pacman/callback.c:211
+#, fuzzy, c-format
+msgid "checking package integrity...\n"
+msgstr "Prüfe Paketintegrität... "
+
+#: src/pacman/callback.c:214
+#, fuzzy, c-format
+msgid "checking delta integrity...\n"
+msgstr "Prüfe Paketintegrität... "
+
+#: src/pacman/callback.c:217
+#, c-format
+msgid "applying deltas...\n"
+msgstr ""
+
+#: src/pacman/callback.c:220
+#, fuzzy, c-format
+msgid "generating %s with %s... "
+msgstr "Aktualisiere %s... "
+
+#: src/pacman/callback.c:223
+#, c-format
+msgid "success!\n"
+msgstr ""
+
+#: src/pacman/callback.c:226
+#, c-format
+msgid "failed.\n"
+msgstr "fehlgeschlagen.\n"
+
+#: src/pacman/callback.c:235
+#, c-format
+msgid ":: Retrieving packages from %s...\n"
+msgstr ":: Empfange Pakete von %s...\n"
+
+#: src/pacman/callback.c:263
+#, fuzzy, c-format
+msgid ""
+":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway? [Y/"
+"n] "
+msgstr ":: %1$s benötigt %2$s aus IgnorePkg. %2$s installieren? [J/n] "
+
+#: src/pacman/callback.c:268
+#, fuzzy, c-format
+msgid ":: %s is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+msgstr ":: %s ist in IgnorePkg. Trotzdem installieren? [J/n] "
+
+#: src/pacman/callback.c:274
+#, c-format
+msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
+msgstr ":: %s ist als ein HoldPkg gekennzeichnet. Trotzdem entfernen? [J/n] "
+
+#: src/pacman/callback.c:279
+#, c-format
+msgid ":: Replace %s with %s/%s? [Y/n] "
+msgstr ":: %s durch %s/%s ersetzen? [J/n] "
+
+#: src/pacman/callback.c:286
+#, c-format
+msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
+msgstr ":: %s steht im Konflikt mit %s. %s entfernen? [J/n] "
+
+#: src/pacman/callback.c:294
+#, c-format
+msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
+msgstr ":: %s-%s: Lokale Version ist neuer. Trotzdem aktualisieren? [J/n] "
+
+#: src/pacman/callback.c:304
+#, fuzzy, c-format
+msgid ":: File %s is corrupted. Do you want to delete it? [Y/n] "
+msgstr ":: Archiv %s ist beschädigt. Möchten Sie es löschen? [J/n] "
+
+#: src/pacman/callback.c:354
+msgid "installing"
+msgstr "Installiere"
+
+#: src/pacman/callback.c:357
+msgid "upgrading"
+msgstr "Aktualisiere"
+
+#: src/pacman/callback.c:360
+msgid "removing"
+msgstr "Entferne"
+
+#: src/pacman/callback.c:363
+msgid "checking for file conflicts"
+msgstr "Pruefe auf Dateikonflikte"
+
+#: src/pacman/package.c:68
+msgid "Explicitly installed"
+msgstr "Ausdrücklich installiert"
+
+#: src/pacman/package.c:71
+msgid "Installed as a dependency for another package"
+msgstr "Installiert als Abhängigkeit für ein anderes Paket"
+
+#: src/pacman/package.c:74
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: src/pacman/package.c:89
+msgid "Description : "
+msgstr "Beschreibung : "
+
+#: src/pacman/package.c:93
+#, fuzzy
+msgid "Filename :"
+msgstr "Lizenz :"
+
+#: src/pacman/package.c:95
+#, fuzzy
+msgid "Name :"
+msgstr "Name : %s\n"
+
+#: src/pacman/package.c:96
+#, fuzzy
+msgid "Version :"
+msgstr "Version : %s\n"
+
+#: src/pacman/package.c:97
+#, fuzzy
+msgid "URL :"
+msgstr "URL : %s\n"
+
+#: src/pacman/package.c:98
+#, fuzzy
+msgid "Licenses :"
+msgstr "Lizenz :"
+
+#: src/pacman/package.c:99
+msgid "Groups :"
+msgstr "Gruppen :"
+
+#: src/pacman/package.c:100
+msgid "Provides :"
+msgstr "Stellt bereit :"
+
+#: src/pacman/package.c:101
+msgid "Depends On :"
+msgstr "Hängt ab von :"
+
+#: src/pacman/package.c:102
+msgid "Optional Deps :"
+msgstr ""
+
+#: src/pacman/package.c:105
+msgid "Required By :"
+msgstr "Benötigt von :"
+
+#: src/pacman/package.c:108
+msgid "Conflicts With :"
+msgstr "Konflikt mit :"
+
+#: src/pacman/package.c:109
+msgid "Replaces :"
+msgstr "Ersetzt :"
+
+#: src/pacman/package.c:111
+#, c-format
+msgid "Download Size : %6.2f K\n"
+msgstr "Download-Größe : %6.2f K\n"
+
+#: src/pacman/package.c:115
+#, fuzzy, c-format
+msgid "Compressed Size: %6.2f K\n"
+msgstr "Installationsgröße : %6.2f K\n"
+
+#: src/pacman/package.c:119
+#, c-format
+msgid "Installed Size : %6.2f K\n"
+msgstr "Installationsgröße : %6.2f K\n"
+
+#: src/pacman/package.c:121
+#, fuzzy
+msgid "Packager :"
+msgstr "Packer : %s\n"
+
+#: src/pacman/package.c:122
+#, fuzzy
+msgid "Architecture :"
+msgstr "Architektur : %s\n"
+
+#: src/pacman/package.c:123
+#, fuzzy
+msgid "Build Date :"
+msgstr "Erstellt am : %s %s\n"
+
+#: src/pacman/package.c:125
+#, fuzzy
+msgid "Install Date :"
+msgstr "Installiert am : %s %s\n"
+
+#: src/pacman/package.c:126
+#, fuzzy
+msgid "Install Reason :"
+msgstr "Installationsgrund : %s\n"
+
+#: src/pacman/package.c:129
+#, fuzzy
+msgid "Install Script :"
+msgstr "Installations-Skript : %s\n"
+
+#: src/pacman/package.c:130
+msgid "Yes"
+msgstr "Ja"
+
+#: src/pacman/package.c:130
+msgid "No"
+msgstr "Nein"
+
+#: src/pacman/package.c:135
+#, fuzzy
+msgid "MD5 Sum :"
+msgstr "MD5-Summe : %s"
+
+#: src/pacman/package.c:159
+#, fuzzy
+msgid "Repository :"
+msgstr "Repositorium : %s\n"
+
+#: src/pacman/package.c:169
+#, c-format
+msgid "Backup Files:\n"
+msgstr "Sicherungs-Dateien:\n"
+
+#: src/pacman/package.c:189
+#, fuzzy, c-format
+msgid "error: could not calculate checksums for %s\n"
+msgstr "Fehler beim Berechnen der Prüfsummen für %s\n"
+
+#: src/pacman/package.c:197
+#, c-format
+msgid "MODIFIED\t%s\n"
+msgstr "MODIFIZIERT\t%s\n"
+
+#: src/pacman/package.c:199
+#, c-format
+msgid "Not Modified\t%s\n"
+msgstr "Nicht modifiziert\t%s\n"
+
+#: src/pacman/package.c:203
+#, c-format
+msgid "MISSING\t\t%s\n"
+msgstr "FEHLEND\t\t%s\n"
+
+#: src/pacman/package.c:209
+#, c-format
+msgid "(none)\n"
+msgstr "(Nichts)\n"
+
+#: src/pacman/package.c:244
+#, fuzzy, c-format
+msgid "error: no changelog available for '%s'.\n"
+msgstr "Kein Änderungsprotokoll für '%s' verfügbar.\n"
+
+#: src/pacman/pacman.c:62
+msgid "options"
+msgstr "Optionen"
+
+#: src/pacman/pacman.c:63
+msgid "file"
+msgstr "Datei"
+
+#: src/pacman/pacman.c:64
+msgid "package"
+msgstr "Paket"
+
+#: src/pacman/pacman.c:65
+msgid "usage"
+msgstr "Verwendung"
+
+#: src/pacman/pacman.c:66
+msgid "operation"
+msgstr "Operation"
+
+#: src/pacman/pacman.c:78
+#, c-format
+msgid ""
+"\n"
+"use '%s --help' with other options for more syntax\n"
+msgstr ""
+"\n"
+"Benutzen Sie '%s --help' mit anderen Optionen für mehr Informationen\n"
+
+#: src/pacman/pacman.c:83 src/pacman/pacman.c:97 src/pacman/pacman.c:119
+#, fuzzy, c-format
+msgid " --asdeps install packages as non-explicitly installed\n"
+msgstr " -u, --upgrades Zeigt alle aktualisierbaren Pakete an\n"
+
+#: src/pacman/pacman.c:84 src/pacman/pacman.c:90 src/pacman/pacman.c:98
+#: src/pacman/pacman.c:121
+#, c-format
+msgid " -d, --nodeps skip dependency checks\n"
+msgstr " -d, --nodeps Überspringt die Abhängigkeitsprüfung\n"
+
+#: src/pacman/pacman.c:85 src/pacman/pacman.c:99 src/pacman/pacman.c:123
+#, c-format
+msgid " -f, --force force install, overwrite conflicting files\n"
+msgstr ""
+" -f, --force Installation erzwingen, Dateikonflikte überschreiben\n"
+
+#: src/pacman/pacman.c:89
+#, c-format
+msgid ""
+" -c, --cascade remove packages and all packages that depend on them\n"
+msgstr ""
+" -c, --cascade Entfernt Pakete und alle, die von ihnen abhängen\n"
+
+#: src/pacman/pacman.c:91
+#, c-format
+msgid ""
+" -k, --dbonly only remove database entry, do not remove files\n"
+msgstr ""
+" -k, --dbonly Nur Datenbankeintrag entfernen, keine Dateien "
+"entfernen\n"
+
+#: src/pacman/pacman.c:92
+#, c-format
+msgid " -n, --nosave remove configuration files as well\n"
+msgstr " -n, --nosave Auch Konfigurationsdateien entfernen\n"
+
+#: src/pacman/pacman.c:93
+#, c-format
+msgid ""
+" -s, --recursive remove dependencies also (that won't break packages)\n"
+msgstr ""
+" -s, --recursive Auch Abhängigkeiten entfernen (beschädigt keine "
+"Pakete)\n"
+
+#: src/pacman/pacman.c:103
+#, c-format
+msgid " -c, --changelog view the changelog of a package\n"
+msgstr " -c, --changelog Das Änderungsprotokoll des Paketes anzeigen\n"
+
+#: src/pacman/pacman.c:104
+#, fuzzy, c-format
+msgid " -d, --deps list all packages installed as dependencies\n"
+msgstr " -u, --upgrades Zeigt alle aktualisierbaren Pakete an\n"
+
+#: src/pacman/pacman.c:105
+#, fuzzy, c-format
+msgid " -e, --explicit list all packages explicitly installed\n"
+msgstr " -u, --upgrades Zeigt alle aktualisierbaren Pakete an\n"
+
+#: src/pacman/pacman.c:106 src/pacman/pacman.c:124
+#, c-format
+msgid " -g, --groups view all members of a package group\n"
+msgstr " -g, --groups Zeigt alle Mitglieder einer Paket-Gruppe an\n"
+
+#: src/pacman/pacman.c:107
+#, fuzzy, c-format
+msgid ""
+" -i, --info view package information (-ii for backup files)\n"
+msgstr " -i, --info Zeigt Paketinformationen an\n"
+
+#: src/pacman/pacman.c:108
+#, c-format
+msgid " -l, --list list the contents of the queried package\n"
+msgstr " -l, --list Zeigt den Inhalt des abgefragten Paketes an\n"
+
+#: src/pacman/pacman.c:109
+#, c-format
+msgid ""
+" -m, --foreign list installed packages not found in sync db(s)\n"
+msgstr ""
+" -m, --foreign Zeigt alle Pakete an, die nicht in den Sync-db(s)\n"
+" gefunden wurden\n"
+
+#: src/pacman/pacman.c:110
+#, c-format
+msgid " -o, --owns <file> query the package that owns <file>\n"
+msgstr " -o, --owns <Datei> Fragt das Paket ab, das <Datei> enthält\n"
+
+#: src/pacman/pacman.c:111
+#, c-format
+msgid " -p, --file <package> query a package file instead of the database\n"
+msgstr ""
+" -p, --file <Paket> Fragt die Paketdatei <Paket> anstatt der Datenbank "
+"ab\n"
+
+#: src/pacman/pacman.c:112
+#, c-format
+msgid ""
+" -s, --search <regex> search locally-installed packages for matching "
+"strings\n"
+msgstr ""
+" -s, --search <regex> Durchsucht lokal installierte Pakete nach einem Wort\n"
+
+#: src/pacman/pacman.c:113
+#, fuzzy, c-format
+msgid " -t, --orphans list all packages not required by any package\n"
+msgstr ""
+" -e, --orphans Zeigt alle Pakete, die als Abhängigkeiten "
+"installiert\n"
+" wurden, aber nicht mehr benötigt werden\n"
+
+#: src/pacman/pacman.c:114
+#, c-format
+msgid " -u, --upgrades list all packages that can be upgraded\n"
+msgstr " -u, --upgrades Zeigt alle aktualisierbaren Pakete an\n"
+
+#: src/pacman/pacman.c:115 src/pacman/pacman.c:136
+#, c-format
+msgid " -q --quiet show less information for query and search\n"
+msgstr ""
+
+#: src/pacman/pacman.c:120
+#, c-format
+msgid ""
+" -c, --clean remove old packages from cache directory (-cc for "
+"all)\n"
+msgstr ""
+" -c, --clean Entfernt alte Pakete aus dem Paketpuffer(-cc für "
+"alle)\n"
+
+#: src/pacman/pacman.c:122
+#, c-format
+msgid " -e, --dependsonly install dependencies only\n"
+msgstr " -e, --dependsonly Nur Abhängigkeiten installieren\n"
+
+#: src/pacman/pacman.c:125
+#, c-format
+msgid " -i, --info view package information\n"
+msgstr " -i, --info Zeigt Paketinformationen an\n"
+
+#: src/pacman/pacman.c:126
+#, c-format
+msgid " -l, --list <repo> view a list of packages in a repo\n"
+msgstr ""
+" -l, --list <repo> Zeigt eine Liste aller Pakete eines Repositoriums an\n"
+
+#: src/pacman/pacman.c:127
+#, c-format
+msgid ""
+" -p, --print-uris print out URIs for given packages and their "
+"dependencies\n"
+msgstr ""
+" -p, --print-uris URIs der angegebenen Pakete und deren Abhängigkeiten\n"
+" ausgeben\n"
+
+#: src/pacman/pacman.c:128
+#, c-format
+msgid ""
+" -s, --search <regex> search remote repositories for matching strings\n"
+msgstr ""
+" -s, --search <regex> Durchsucht entfernte Repositorien nach einem Wort\n"
+
+#: src/pacman/pacman.c:129
+#, c-format
+msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
+msgstr " -u, --sysupgrade Aktualisiert alle veralteten Pakete\n"
+
+#: src/pacman/pacman.c:130
+#, c-format
+msgid ""
+" -w, --downloadonly download packages but do not install/upgrade "
+"anything\n"
+msgstr ""
+" -w, --downloadonly Lädt Pakete herunter, ohne etwas zu installieren "
+"oder\n"
+" aktualisieren\n"
+
+#: src/pacman/pacman.c:131
+#, c-format
+msgid ""
+" -y, --refresh download fresh package databases from the server\n"
+msgstr " -y, --refresh Lädt frische Paketdatenbanken vom Server\n"
+
+#: src/pacman/pacman.c:132
+#, c-format
+msgid ""
+" --needed only install outdated or not yet installed packages\n"
+msgstr ""
+
+#: src/pacman/pacman.c:133
+#, c-format
+msgid ""
+" --ignore <pkg> ignore a package upgrade (can be used more than "
+"once)\n"
+msgstr ""
+" --ignore <pkg> Ignoriert ein neues Paket (kann mehrfach genutzt\n"
+" werden)\n"
+
+#: src/pacman/pacman.c:134
+#, fuzzy, c-format
+msgid ""
+" --ignoregroup <grp>\n"
+" ignore a group upgrade (can be used more than once)\n"
+msgstr ""
+" --ignore <pkg> Ignoriert ein neues Paket (kann mehrfach genutzt\n"
+" werden)\n"
+
+#: src/pacman/pacman.c:138
+#, c-format
+msgid " --config <path> set an alternate configuration file\n"
+msgstr " --config <Pfad> Setzt eine alternative Konfigurationsdatei\n"
+
+#: src/pacman/pacman.c:139
+#, fuzzy, c-format
+msgid " --logfile <path> set an alternate log file\n"
+msgstr " --config <Pfad> Setzt eine alternative Konfigurationsdatei\n"
+
+#: src/pacman/pacman.c:140
+#, c-format
+msgid " --noconfirm do not ask for any confirmation\n"
+msgstr " --noconfirm Niemals nach einer Bestätigung fragen\n"
+
+#: src/pacman/pacman.c:141
+#, c-format
+msgid ""
+" --noprogressbar do not show a progress bar when downloading files\n"
+msgstr ""
+" --noprogressbar Keine Fortschrittsanzeige anzeigen, wenn Dateien\n"
+" heruntergeladen werden\n"
+
+#: src/pacman/pacman.c:142
+#, c-format
+msgid ""
+" --noscriptlet do not execute the install scriptlet if one exists\n"
+msgstr ""
+" --noscriptlet Installationsskript nicht ausführen, falls vorhanden\n"
+
+#: src/pacman/pacman.c:143
+#, c-format
+msgid " -v, --verbose be verbose\n"
+msgstr " -v, --verbose Sei gesprächig\n"
+
+#: src/pacman/pacman.c:144
+#, c-format
+msgid " -r, --root <path> set an alternate installation root\n"
+msgstr ""
+" -r, --root <Pfad> Setzt ein alternatives Wurzelverzeichnis zur\n"
+" Installation\n"
+
+#: src/pacman/pacman.c:145
+#, c-format
+msgid " -b, --dbpath <path> set an alternate database location\n"
+msgstr " -b, --dbpath <Pfad> Setzt einen anderen Ort für die Datenbank\n"
+
+#: src/pacman/pacman.c:146
+#, c-format
+msgid " --cachedir <dir> set an alternate package cache location\n"
+msgstr " --cachedir <Pfad> Setzt einen anderen Ort für den Paketpuffer\n"
+
+#: src/pacman/pacman.c:159
+#, c-format
+msgid ""
+" This program may be freely redistributed under\n"
+" the terms of the GNU General Public License\n"
+msgstr ""
+" Dieses Programm ist frei verfügbar unter\n"
+" den Bedingungen der GNU General Public License\n"
+
+#: src/pacman/pacman.c:250
+#, c-format
+msgid "problem setting rootdir '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:267
+#, c-format
+msgid "problem setting dbpath '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:275
+#, c-format
+msgid "problem setting logfile '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:384
+#, fuzzy, c-format
+msgid "'%s' is not a valid debug level\n"
+msgstr "'%s' ist kein gültiger Debug-Level"
+
+#: src/pacman/pacman.c:398 src/pacman/pacman.c:677
+#, fuzzy, c-format
+msgid "problem adding cachedir '%s' (%s)\n"
+msgstr "Konnte Paket '%s' nicht hinzufügen (%s)\n"
+
+#: src/pacman/pacman.c:484
+msgid "only one operation may be used at a time\n"
+msgstr "Es ist nur eine Operation zur selben Zeit erlaubt\n"
+
+#: src/pacman/pacman.c:544
+#, c-format
+msgid "config file %s could not be read.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:580
+#, c-format
+msgid "config file %s, line %d: bad section name.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:602
+#, c-format
+msgid "config file %s, line %d: syntax error in config file- missing key.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:612
+#, c-format
+msgid ""
+"config file %s, line %d: 'Include' directive must belong to a section.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:640 src/pacman/pacman.c:702 src/pacman/pacman.c:717
+#, c-format
+msgid "config file %s, line %d: directive '%s' not recognized.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:787
+#, c-format
+msgid "failed to initialize alpm library (%s)\n"
+msgstr "Konnte alpm-Bibliothek nicht initialisieren (%s)\n"
+
+#: src/pacman/pacman.c:824
+msgid "you cannot perform this operation unless you are root.\n"
+msgstr "Sie benötigen root-Rechte, um diese Operation auszuführen.\n"
+
+#: src/pacman/pacman.c:847
+#, c-format
+msgid "could not register 'local' database (%s)\n"
+msgstr "Kein Zugriff auf die lokale Datenbank (%s)\n"
+
+#: src/pacman/pacman.c:873
+msgid "no operation specified (use -h for help)\n"
+msgstr "Keine Operation angegeben (benutzen Sie -h für Hilfe)\n"
+
+#: src/pacman/query.c:67
+#, fuzzy, c-format
+msgid "error: no file was specified for --owns\n"
+msgstr "Es wurde keine Datei für --owns angegeben\n"
+
+#: src/pacman/query.c:80
+#, fuzzy, c-format
+msgid "error: failed to read file '%s': %s\n"
+msgstr "Fehler beim Lesen der Datei '%s': %s"
+
+#: src/pacman/query.c:87
+#, fuzzy, c-format
+msgid "error: cannot determine ownership of a directory\n"
+msgstr "Konnte den Besitzer eines Verzeichnisses nicht ermitteln"
+
+#: src/pacman/query.c:95
+#, fuzzy, c-format
+msgid "error: cannot determine real path for '%s': %s\n"
+msgstr "Konnte den wahren Pfad für '%s' nicht ermitteln: %s"
+
+#: src/pacman/query.c:117
+#, c-format
+msgid "%s is owned by %s %s\n"
+msgstr "%s ist in %s %s enthalten\n"
+
+#: src/pacman/query.c:125
+#, fuzzy, c-format
+msgid "error: No package owns %s\n"
+msgstr "Kein Paket enthält %s\n"
+
+#: src/pacman/query.c:221
+#, fuzzy, c-format
+msgid "error: group \"%s\" was not found\n"
+msgstr "Gruppe \"%s\" wurde nicht gefunden\n"
+
+#: src/pacman/query.c:232
+#, fuzzy, c-format
+msgid "Checking for package upgrades... \n"
+msgstr "Suche nach aktualisierbaren Paketen..."
+
+#: src/pacman/query.c:243
+#, fuzzy, c-format
+msgid "no upgrades found.\n"
+msgstr "Keine Aktualisierungen gefunden"
+
+#: src/pacman/query.c:362 src/pacman/sync.c:743
+msgid "no usable package repositories configured.\n"
+msgstr "Keine brauchbaren Paket-Repositorien konfiguriert.\n"
+
+#: src/pacman/query.c:406
+#, fuzzy, c-format
+msgid "error: package \"%s\" not found\n"
+msgstr "Paket \"%s\" nicht gefunden\n"
+
+#: src/pacman/remove.c:78 src/pacman/sync.c:583
+#, c-format
+msgid ":: group %s:\n"
+msgstr ":: Gruppe %s:\n"
+
+#: src/pacman/remove.c:80
+msgid " Remove whole content? [Y/n] "
+msgstr " Gesamten Inhalt entfernen? [J/n] "
+
+#: src/pacman/remove.c:84
+#, c-format
+msgid ":: Remove %s from group %s? [Y/n] "
+msgstr ":: %s aus Gruppe %s entfernen? [J/n] "
+
+#: src/pacman/remove.c:97 src/pacman/sync.c:479 src/pacman/sync.c:540
+#, fuzzy, c-format
+msgid "error: failed to init transaction (%s)\n"
+msgstr "Konnte den Vorgang (%s) nicht starten\n"
+
+#: src/pacman/remove.c:113
+#, fuzzy, c-format
+msgid "error: failed to add target '%s' (%s)\n"
+msgstr "Konnte Paket '%s' nicht hinzufügen (%s)\n"
+
+#: src/pacman/remove.c:158 src/pacman/util.c:462
+msgid "Targets:"
+msgstr "Pakete:"
+
+#: src/pacman/remove.c:161
+msgid ""
+"\n"
+"Do you want to remove these packages? [Y/n] "
+msgstr ""
+"\n"
+"Möchten Sie all diese Pakete entfernen? [J/n] "
+
+#: src/pacman/sync.c:52
+#, fuzzy, c-format
+msgid "error: could not access database directory\n"
+msgstr "Konnte nicht auf Puffer-Verzeichnis zugreifen\n"
+
+#: src/pacman/sync.c:83
+#, fuzzy, c-format
+msgid "Do you want to remove %s? [Y/n] "
+msgstr ""
+"\n"
+"Möchten Sie all diese Pakete entfernen? [J/n] "
+
+#: src/pacman/sync.c:88
+#, fuzzy, c-format
+msgid "error: could not remove repository directory\n"
+msgstr "Konnte Puffer-Verzeichnis nicht entfernen\n"
+
+#: src/pacman/sync.c:101
+#, c-format
+msgid "Database directory: %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:102
+#, fuzzy
+msgid "Do you want to remove unused repositories? [Y/n] "
+msgstr ""
+"\n"
+"Möchten Sie all diese Pakete entfernen? [J/n] "
+
+#: src/pacman/sync.c:112
+#, c-format
+msgid "Database directory cleaned up\n"
+msgstr ""
+
+#: src/pacman/sync.c:130 src/pacman/sync.c:177
+#, fuzzy, c-format
+msgid "Cache directory: %s\n"
+msgstr "Architektur : %s\n"
+
+#: src/pacman/sync.c:131
+#, fuzzy
+msgid "Do you want to remove uninstalled packages from cache? [Y/n] "
+msgstr "Wollen Sie alle Pakete aus dem Puffer entfernen? [J/n] "
+
+#: src/pacman/sync.c:134
+#, c-format
+msgid "removing old packages from cache... "
+msgstr "Entferne alte Pakete aus dem Puffer... "
+
+#: src/pacman/sync.c:138
+#, fuzzy, c-format
+msgid "error: could not access cache directory\n"
+msgstr "Konnte nicht auf Puffer-Verzeichnis zugreifen\n"
+
+#: src/pacman/sync.c:178
+#, fuzzy
+msgid "Do you want to remove ALL packages from cache? [Y/n] "
+msgstr "Möchten Sie alte Pakete aus dem Puffer entfernen? [J/n] "
+
+#: src/pacman/sync.c:181
+#, c-format
+msgid "removing all packages from cache... "
+msgstr "Entferne alle Pakete aus dem Puffer... "
+
+#: src/pacman/sync.c:184
+#, fuzzy, c-format
+msgid "error: could not remove cache directory\n"
+msgstr "Konnte Puffer-Verzeichnis nicht entfernen\n"
+
+#: src/pacman/sync.c:189
+#, fuzzy, c-format
+msgid "error: could not create new cache directory\n"
+msgstr "Konnte neues Puffer-Verzeichnis nicht erstellen\n"
+
+#: src/pacman/sync.c:216
+#, fuzzy, c-format
+msgid "error: failed to synchronize %s: %s\n"
+msgstr "Konnte %s nicht synchronisieren: %s\n"
+
+#: src/pacman/sync.c:219
+#, fuzzy, c-format
+msgid "error: failed to update %s (%s)\n"
+msgstr "Konnte %s nicht aktualisieren (%s)\n"
+
+#: src/pacman/sync.c:223
+#, c-format
+msgid " %s is up to date\n"
+msgstr " %s ist aktuell\n"
+
+#: src/pacman/sync.c:366
+#, fuzzy, c-format
+msgid "error: repository '%s' does not exist\n"
+msgstr "Repositorium '%s' existiert nicht.\n"
+
+#: src/pacman/sync.c:381
+#, fuzzy, c-format
+msgid "error: package '%s' was not found in repository '%s'\n"
+msgstr "Paket '%s' wurde nicht in Repositorium '%s' gefunden.\n"
+
+#: src/pacman/sync.c:401
+#, fuzzy, c-format
+msgid "error: package '%s' was not found\n"
+msgstr "Paket '%s' wurde nicht gefunden.\n"
+
+#: src/pacman/sync.c:438
+#, fuzzy, c-format
+msgid "error: repository \"%s\" was not found.\n"
+msgstr "Repositorium \"%s\" wurde nicht gefunden.\n"
+
+#: src/pacman/sync.c:490
+#, c-format
+msgid ":: Synchronizing package databases...\n"
+msgstr ":: Synchronisiere Paketdatenbanken...\n"
+
+#: src/pacman/sync.c:493
+#, fuzzy, c-format
+msgid "error: failed to synchronize any databases\n"
+msgstr "Konnte keine Datenbank synchronisieren"
+
+#: src/pacman/sync.c:505
+#, c-format
+msgid ":: Starting full system upgrade...\n"
+msgstr ":: Starte komplette Systemaktualisierung...\n"
+
+#: src/pacman/sync.c:526
+#, c-format
+msgid ""
+":: pacman has detected a newer version of itself.\n"
+":: It is recommended that you upgrade pacman by itself\n"
+":: using 'pacman -S pacman', and then rerun the current\n"
+":: operation. If you wish to continue the operation and\n"
+":: not upgrade pacman separately, answer no.\n"
+msgstr ""
+
+#: src/pacman/sync.c:531
+msgid ":: Cancel current operation? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:533 src/pacman/sync.c:720
+#, fuzzy, c-format
+msgid "error: failed to release transaction (%s)\n"
+msgstr "Konnte den Vorgang (%s) nicht freigeben\n"
+
+#: src/pacman/sync.c:545
+#, fuzzy, c-format
+msgid "error: pacman: %s\n"
+msgstr "pacman: %s\n"
+
+#: src/pacman/sync.c:569
+#, fuzzy, c-format
+msgid "error: '%s': %s\n"
+msgstr "Fehler: "
+
+#: src/pacman/sync.c:588
+msgid ":: Install whole content? [Y/n] "
+msgstr ":: Gesamten Inhalt installieren? [J/n] "
+
+#: src/pacman/sync.c:595
+#, c-format
+msgid ":: Install %s from group %s? [Y/n] "
+msgstr ":: %s aus Gruppe %s installieren? [J/n] "
+
+#: src/pacman/sync.c:604
+#, fuzzy, c-format
+msgid "error: '%s': not found in sync db\n"
+msgstr "'%s': nicht in Synchronisations-Datenbank gefunden\n"
+
+#: src/pacman/sync.c:631
+#, fuzzy, c-format
+msgid ":: %s: conflicts with %s\n"
+msgstr ":: %s: Steht im Konflikt mit %s"
+
+#: src/pacman/sync.c:645
+#, c-format
+msgid " local database is up to date\n"
+msgstr " Lokale Datenbank ist aktuell\n"
+
+#: src/pacman/sync.c:657
+#, fuzzy, c-format
+msgid "Beginning download...\n"
+msgstr ""
+"\n"
+"Beginne Download ...\n"
+
+#: src/pacman/sync.c:660
+msgid "Proceed with download? [Y/n] "
+msgstr "Download fortsetzen? [J/n] "
+
+#: src/pacman/sync.c:664
+#, fuzzy, c-format
+msgid "Beginning upgrade process...\n"
+msgstr ""
+"\n"
+"Beginne Aktualisierungsprozess...\n"
+
+#: src/pacman/sync.c:667
+msgid "Proceed with installation? [Y/n] "
+msgstr "Installation fortsetzen? [J/n] "
+
+#: src/pacman/sync.c:708
+#, fuzzy, c-format
+msgid "Errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"Fehler aufgetreten, keine Pakete wurden aktualisiert.\n"
+
+#: src/pacman/util.c:356 src/pacman/util.c:388
+#, c-format
+msgid "None\n"
+msgstr "Nichts\n"
+
+#: src/pacman/util.c:454
+msgid "Remove:"
+msgstr "Entfernen:"
+
+#: src/pacman/util.c:458
+#, fuzzy, c-format
+msgid "Total Removed Size: %.2f MB\n"
+msgstr ""
+"\n"
+"Gesamtgröße der zu entfernenden Pakete: %.2f MB\n"
+
+#: src/pacman/util.c:465
+#, fuzzy, c-format
+msgid "Total Download Size: %.2f MB\n"
+msgstr "Gesamtgröße der installierten Pakete: %.2f MB\n"
+
+#: src/pacman/util.c:469
+#, c-format
+msgid "Total Installed Size: %.2f MB\n"
+msgstr "Gesamtgröße der installierten Pakete: %.2f MB\n"
+
+#: src/pacman/util.c:496
+msgid "Y"
+msgstr "J"
+
+#: src/pacman/util.c:496
+msgid "YES"
+msgstr "JA"
+
+#: src/pacman/util.c:557
+#, fuzzy, c-format
+msgid "debug: "
+msgstr "Fehlersuche"
+
+#: src/pacman/util.c:560
+#, c-format
+msgid "error: "
+msgstr "Fehler: "
+
+#: src/pacman/util.c:563
+#, c-format
+msgid "warning: "
+msgstr "Warnung: "
+
+#: src/pacman/util.c:568
+#, fuzzy, c-format
+msgid "function: "
+msgstr "Funktion"
+
+#: scripts/abs.sh.in:60 scripts/makepkg.sh.in:110 scripts/makepkg.sh.in:112
+#: scripts/repo-add.sh.in:50 scripts/repo-remove.sh.in:50
+msgid "ERROR:"
+msgstr ""
+
+#: scripts/abs.sh.in:65
+msgid "abs (pacman) %s - download a PKGBUILD tree from a CVS repository"
+msgstr ""
+
+#: scripts/abs.sh.in:66
+msgid "Usage %s [options] [repository...]"
+msgstr ""
+
+#: scripts/abs.sh.in:67 scripts/makepkg.sh.in:1055
+#, fuzzy
+msgid "Options:"
+msgstr "Optionen"
+
+#: scripts/abs.sh.in:68
+msgid " -p, --passive The connection is opened in passive mode."
+msgstr ""
+
+#: scripts/abs.sh.in:70
+msgid " -h, --help Display this help message then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:71
+msgid " -V, --version Display version information then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:73
+msgid ""
+"abs will synchronize build scripts from the CVS repository\\ninto %s. You "
+"can follow different package trees by\\nediting %s files. If no argument is "
+"given, abs\\nwill synchronize from supfiles specified in %s.\\n\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:79
+msgid "Report bugs to <%s>."
+msgstr ""
+
+#: scripts/abs.sh.in:84 scripts/gensync.sh.in:54 scripts/makepkg.sh.in:1088
+#: scripts/pacman-optimize.sh.in:59 scripts/repo-remove.sh.in:66
+msgid ""
+"Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:130 scripts/pacman-optimize.sh.in:100
+#, fuzzy
+msgid "%s does not exist or is not a directory."
+msgstr "'%s' ist kein gültiges Paketpuffer-Verzeichnis\n"
+
+#: scripts/abs.sh.in:133
+msgid "You do not have write permissions in %s."
+msgstr ""
+
+#: scripts/abs.sh.in:143
+msgid "Missing CVS synchronization utility. Install csup or cvsup."
+msgstr ""
+
+#: scripts/abs.sh.in:166
+#, fuzzy
+msgid "Updating %s..."
+msgstr "Aktualisiere %s... "
+
+#: scripts/gensync.sh.in:34
+msgid "Usage: %s <root> <destfile> [package_directory]"
+msgstr ""
+
+#: scripts/gensync.sh.in:35
+msgid ""
+"gensync will generate a sync database by reading all PKGBUILD files\\nfrom "
+"<root>. gensync builds the database in a temporary directory\\nand then "
+"compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:39
+msgid ""
+"gensync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:42
+msgid ""
+"note: The <destfile> name is important. It must be of the form\\n "
+"{treename}.db.tar.gz where {treename} is the name of the custom\\n "
+"package repository you configured in /etc/pacman.conf. The\\n generated "
+"database must reside in the same directory as your\\n custom packages "
+"(also configured in /etc/pacman.conf)\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:48
+msgid "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
+msgstr ""
+
+#: scripts/gensync.sh.in:102 scripts/updatesync.sh.in:101
+msgid "%s not found. Can not continue."
+msgstr ""
+
+#: scripts/gensync.sh.in:120
+msgid "invalid root dir: %s"
+msgstr ""
+
+#: scripts/gensync.sh.in:122
+msgid "gensync: building database entries, generating md5sums..."
+msgstr ""
+
+#: scripts/gensync.sh.in:131
+#, fuzzy
+msgid "failed to parse parse %s"
+msgstr "Konnte %s nicht aktualisieren (%s)\n"
+
+#: scripts/gensync.sh.in:142
+msgid "could not find %s-%s-%s-%s.%s - skipping"
+msgstr ""
+
+#: scripts/gensync.sh.in:152
+#, fuzzy
+msgid "creating repo DB..."
+msgstr "Räume auf... "
+
+#: scripts/makepkg.sh.in:101 scripts/makepkg.sh.in:103
+#: scripts/repo-add.sh.in:45 scripts/repo-remove.sh.in:45
+msgid "WARNING:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:143
+#, fuzzy
+msgid "Cleaning up..."
+msgstr "Räume auf... "
+
+#: scripts/makepkg.sh.in:193
+msgid ""
+"Options beginning with 'no' will be deprecated in the next version of "
+"makepkg!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:194
+msgid "Please replace 'no' with '!': %s -> %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:198
+msgid "Option 'keepdocs' may not work as intended. Please replace with 'docs'."
+msgstr ""
+
+#: scripts/makepkg.sh.in:286
+msgid "There is no agent set up to handle %s URLs. Check %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:287 scripts/makepkg.sh.in:296
+#: scripts/makepkg.sh.in:448 scripts/makepkg.sh.in:476
+#: scripts/makepkg.sh.in:522 scripts/makepkg.sh.in:610
+#: scripts/makepkg.sh.in:638 scripts/makepkg.sh.in:700
+#: scripts/makepkg.sh.in:767 scripts/makepkg.sh.in:1105
+#: scripts/makepkg.sh.in:1415 scripts/makepkg.sh.in:1419
+msgid "Aborting..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:295
+msgid "The download program %s is not installed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:311
+msgid "Pacman returned a fatal error (%i): %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:335
+#, fuzzy
+msgid "Installing missing dependencies..."
+msgstr "Löse Abhängigkeiten auf... "
+
+#: scripts/makepkg.sh.in:345
+msgid "Pacman failed to install missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:349
+#, fuzzy
+msgid "Building missing dependencies..."
+msgstr "Löse Abhängigkeiten auf... "
+
+#: scripts/makepkg.sh.in:354
+msgid "Source root cannot be found - please make sure it is specified in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:362
+msgid "Could not find '%s' under %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:378
+#, fuzzy
+msgid "Failed to build '%s'"
+msgstr "Fehler beim Lesen der Datei '%s': %s"
+
+#: scripts/makepkg.sh.in:411
+msgid "Failed to install all missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:414
+#, fuzzy
+msgid "Missing Dependencies:"
+msgstr "Löse Abhängigkeiten auf... "
+
+#: scripts/makepkg.sh.in:444
+#, fuzzy
+msgid "Retrieving Sources..."
+msgstr ":: Empfange Pakete von %s...\n"
+
+#: scripts/makepkg.sh.in:447
+msgid "You do not have write permission to store downloads in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:458
+msgid "Found %s in build dir"
+msgstr ""
+
+#: scripts/makepkg.sh.in:462
+msgid "Using cached copy of %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:470
+#, fuzzy
+msgid "Downloading %s..."
+msgstr "Aktualisiere %s... "
+
+#: scripts/makepkg.sh.in:475
+msgid "Failure while downloading %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:486
+#, fuzzy
+msgid "Generating checksums for source files..."
+msgstr "Fehler beim Berechnen der Prüfsummen für %s\n"
+
+#: scripts/makepkg.sh.in:495
+msgid "Invalid integrity algorithm '%s' specified."
+msgstr ""
+
+#: scripts/makepkg.sh.in:500 scripts/makepkg.sh.in:552
+msgid "Cannot find the '%s' program."
+msgstr ""
+
+#: scripts/makepkg.sh.in:521
+msgid "Unable to find source file %s to generate checksum."
+msgstr ""
+
+#: scripts/makepkg.sh.in:547
+msgid "Invalid integrity algorithm '%s' specified"
+msgstr ""
+
+#: scripts/makepkg.sh.in:558
+msgid "Validating source files with %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:568
+msgid "NOT FOUND"
+msgstr ""
+
+#: scripts/makepkg.sh.in:577
+msgid "Passed"
+msgstr ""
+
+#: scripts/makepkg.sh.in:579
+msgid "FAILED"
+msgstr ""
+
+#: scripts/makepkg.sh.in:587
+msgid "One or more files did not pass the validity check!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:591
+msgid "Integrity checks (%s) are missing or incomplete."
+msgstr ""
+
+#: scripts/makepkg.sh.in:597
+msgid "Extracting Sources..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:609
+msgid "Unable to find source file %s for extraction."
+msgstr ""
+
+#: scripts/makepkg.sh.in:637
+#, fuzzy
+msgid "Failed to extract %s"
+msgstr "Konnte Vorgang nicht vorbereiten (%s)\n"
+
+#: scripts/makepkg.sh.in:669
+msgid "Starting build()..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:699
+msgid "Build Failed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:708
+msgid "Tidying install..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:711
+#, fuzzy
+msgid "Removing info/doc files..."
+msgstr "Löse Abhängigkeiten auf... "
+
+#: scripts/makepkg.sh.in:717
+msgid "Moving usr/share/man files to usr/man..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:724
+msgid "Compressing man pages..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:742
+msgid "Stripping debugging symbols from binaries and libraries..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:754
+msgid "Removing libtool .la files..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:759
+#, fuzzy
+msgid "Removing empty directories..."
+msgstr "Löse Abhängigkeiten auf... "
+
+#: scripts/makepkg.sh.in:766
+msgid "Missing pkg/ directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:772
+#, fuzzy
+msgid "Creating package..."
+msgstr "Lade Paketdaten ... "
+
+#: scripts/makepkg.sh.in:782
+msgid "Generating .FILELIST file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:792
+msgid "Generating .PKGINFO file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:838
+msgid "Please add a license line to your %s!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:839
+msgid "Example for GPL'ed software: license=('GPL')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:847 scripts/makepkg.sh.in:942
+msgid "Adding install script..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:854
+#, fuzzy
+msgid "Adding package changelog..."
+msgstr "Lade Paketdaten ... "
+
+#: scripts/makepkg.sh.in:860
+#, fuzzy
+msgid "Compressing package..."
+msgstr "Lade Paketdaten ... "
+
+#: scripts/makepkg.sh.in:865
+#, fuzzy
+msgid "Failed to create package file."
+msgstr "Konnte Paket '%s' nicht laden (%s)\n"
+
+#: scripts/makepkg.sh.in:874
+msgid "Cannot find the xdelta binary! Is xdelta installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:904
+msgid "Making delta from version %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:918
+msgid "Recreating package tarball from delta to match md5 signatures"
+msgstr ""
+
+#: scripts/makepkg.sh.in:919
+msgid "NOTE: the delta should ONLY be distributed with this tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:923
+msgid "Could not generate the package from the delta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:927
+msgid "Delta was not able to be created."
+msgstr ""
+
+#: scripts/makepkg.sh.in:930
+msgid "No previous version found, skipping xdelta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:936
+#, fuzzy
+msgid "Creating source package..."
+msgstr "Suche nach aktualisierbaren Paketen..."
+
+#: scripts/makepkg.sh.in:938 scripts/makepkg.sh.in:950
+#: scripts/makepkg.sh.in:957
+#, fuzzy
+msgid "Adding %s..."
+msgstr "Aktualisiere %s... "
+
+#: scripts/makepkg.sh.in:945
+#, fuzzy
+msgid "Install script %s not found."
+msgstr "Installations-Skript : %s\n"
+
+#: scripts/makepkg.sh.in:965
+#, fuzzy
+msgid "Compressing source package..."
+msgstr "Suche nach aktualisierbaren Paketen..."
+
+#: scripts/makepkg.sh.in:967
+msgid "Failed to create source package file."
+msgstr ""
+
+#: scripts/makepkg.sh.in:975
+#, fuzzy
+msgid "Installing package with pacman -U..."
+msgstr "Lade Paketdaten ... "
+
+#: scripts/makepkg.sh.in:992
+msgid "Determining latest darcs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:995
+msgid "Determining latest cvs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:998
+msgid "Determining latest git revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1001
+msgid "Determining latest svn revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1004
+msgid "Determining latest bzr revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1007
+msgid "Determining latest hg revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1022
+#, fuzzy
+msgid "Version found: %s"
+msgstr "Version : %s\n"
+
+#: scripts/makepkg.sh.in:1053
+msgid "Usage: %s [options]"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1056
+msgid " -A, --ignorearch Ignore incomplete arch field in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1057
+msgid " -b, --builddeps Build missing dependencies from source"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1058
+msgid " -c, --clean Clean up work files after build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1059
+msgid " -C, --cleancache Clean up source files from the cache"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1060
+#, fuzzy
+msgid " -d, --nodeps Skip all dependency checks"
+msgstr " -d, --nodeps Überspringt die Abhängigkeitsprüfung\n"
+
+#: scripts/makepkg.sh.in:1061
+msgid " -e, --noextract Do not extract source files (use existing src/ dir)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1062
+#, fuzzy
+msgid " -f, --force Overwrite existing package"
+msgstr ""
+" -f, --force Installation erzwingen, Dateikonflikte überschreiben\n"
+
+#: scripts/makepkg.sh.in:1063
+msgid " -g, --geninteg Generate integrity checks for source files"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1064
+msgid " -h, --help This help"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1065
+msgid " -i, --install Install package after successful build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1066
+#, fuzzy
+msgid " -L, --log Log package build process"
+msgstr " -i, --info Zeigt Paketinformationen an\n"
+
+#: scripts/makepkg.sh.in:1067
+msgid " -m, --nocolor Disable colorized output messages"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1068
+msgid " -o, --nobuild Download and extract files only"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1069
+msgid " -p <buildscript> Use an alternate build script (instead of '%s')"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1070
+#, fuzzy
+msgid ""
+" -r, --rmdeps Remove installed dependencies after a successful build"
+msgstr " -e, --dependsonly Nur Abhängigkeiten installieren\n"
+
+#: scripts/makepkg.sh.in:1072
+msgid " -R, --repackage Repackage contents of pkg/ without building"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1073
+#, fuzzy
+msgid " -s, --syncdeps Install missing dependencies with pacman"
+msgstr " -e, --dependsonly Nur Abhängigkeiten installieren\n"
+
+#: scripts/makepkg.sh.in:1074
+msgid " --asroot Allow makepkg to run as root user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1075
+msgid " --source Do not build package; generate a source-only tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1077
+msgid "These options can be passed to pacman:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1079
+#, fuzzy
+msgid ""
+" --noconfirm Do not ask for confirmation when resolving "
+"dependencies"
+msgstr " --noconfirm Niemals nach einer Bestätigung fragen\n"
+
+#: scripts/makepkg.sh.in:1080
+#, fuzzy
+msgid ""
+" --noprogressbar Do not show a progress bar when downloading files"
+msgstr ""
+" --noprogressbar Keine Fortschrittsanzeige anzeigen, wenn Dateien\n"
+" heruntergeladen werden\n"
+
+#: scripts/makepkg.sh.in:1082
+msgid "If -p is not specified, makepkg will look for '%s'"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1104
+#, fuzzy
+msgid "%s not found."
+msgstr "Paket \"%s\" nicht gefunden\n"
+
+#: scripts/makepkg.sh.in:1177
+msgid "Sudo is used by default now. The --usesudo option is deprecated!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1192
+msgid "Cleaning up ALL files from %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1193
+msgid " Are you sure you wish to do this? [Y/n] "
+msgstr ""
+
+#: scripts/makepkg.sh.in:1199
+msgid "Problem removing files; you may not have correct permissions in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1203
+msgid "Source cache cleaned."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1208
+msgid "No files have been removed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1213
+msgid "Source destination must be defined in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1214
+msgid "In addition, please run makepkg -C outside of your cache directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1220
+msgid "BUILDSCRIPT is undefined! Ensure you have updated %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1227
+msgid "Running makepkg as root is a BAD idea and can cause"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1228
+msgid "permanent, catastrophic damage to your system. If you"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1229
+msgid "wish to run as root, please use the --asroot option."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1233
+msgid "The --asroot option is meant for the root user only."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1234
+msgid "Please rerun makepkg without the --asroot flag."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1238
+msgid "Fakeroot must be installed if using the 'fakeroot' option"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1239
+msgid "in the BUILDENV array in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1243
+msgid "Running makepkg as an unprivileged user will result in non-root"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1244
+msgid "ownership of the packaged files. Try using the fakeroot environment by"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1245
+msgid "placing 'fakeroot' in the BUILDENV array in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1250
+msgid "Do not use the '-F' option. This option is only for use by makepkg."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1259
+msgid "Cannot find the sudo binary! Is sudo installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1260
+msgid "Missing dependencies cannot be installed or removed as a normal user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1261
+msgid "without sudo; install and configure sudo to auto-resolve dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1271
+#, fuzzy
+msgid "%s does not exist."
+msgstr "Repositorium '%s' existiert nicht.\n"
+
+#: scripts/makepkg.sh.in:1286 scripts/makepkg.sh.in:1290
+#, fuzzy
+msgid "%s is not allowed to be empty."
+msgstr "'%s' ist kein gültiger db-Pfad\n"
+
+#: scripts/makepkg.sh.in:1294 scripts/makepkg.sh.in:1298
+msgid "%s is not allowed to contain hyphens."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1308 scripts/makepkg.sh.in:1313
+msgid "%s is not available for the '%s' architecture."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1309 scripts/makepkg.sh.in:1314
+msgid "Note that many packages may need a line added to their %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1310 scripts/makepkg.sh.in:1315
+msgid "such as arch=('%s')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1320
+#, fuzzy
+msgid "Install scriptlet (%s) does not exist."
+msgstr "Repositorium '%s' existiert nicht.\n"
+
+#: scripts/makepkg.sh.in:1330
+msgid "A package has already been built, installing existing package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1334 scripts/makepkg.sh.in:1366
+msgid "A package has already been built. (use -f to overwrite)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1343 scripts/makepkg.sh.in:1442
+msgid "Skipping build."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1352
+msgid "Leaving fakeroot environment."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1356
+#, fuzzy
+msgid "Making package: %s"
+msgstr "Lade Paketdaten ... "
+
+#: scripts/makepkg.sh.in:1359
+msgid "Running makepkg as root..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1370
+msgid "Source package created: %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1377
+#, fuzzy
+msgid "Skipping dependency checks."
+msgstr "Prüfe Abhängigkeiten... "
+
+#: scripts/makepkg.sh.in:1384
+#, fuzzy
+msgid "Checking Runtime Dependencies..."
+msgstr "Prüfe Abhängigkeiten... "
+
+#: scripts/makepkg.sh.in:1387
+#, fuzzy
+msgid "Checking Buildtime Dependencies..."
+msgstr "Prüfe Abhängigkeiten... "
+
+#: scripts/makepkg.sh.in:1391
+#, fuzzy
+msgid "Could not resolve all dependencies."
+msgstr "Löse Abhängigkeiten auf... "
+
+#: scripts/makepkg.sh.in:1395
+msgid "pacman was not found in PATH; skipping dependency checks."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1409
+msgid "Skipping source retrieval -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1410
+msgid "Skipping source integrity checks -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1411
+msgid "Skipping source extraction -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1414
+msgid "The source directory is empty, there is nothing to build!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1418
+msgid "The package directory is empty, there is nothing to repackage!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1429
+msgid "Sources are ready."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1434
+msgid "Removing existing pkg/ directory..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1451
+msgid "Entering fakeroot environment..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1464
+msgid "Finished making: %s"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:44
+msgid "Usage: %s [pacman_db_root]"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:45
+msgid ""
+"pacman-optimize is a little hack that should improve the performance\\nof "
+"pacman when reading/writing to its filesystem-based database.\\n\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:48
+msgid ""
+"Because pacman uses many small files to keep track of packages,\\nthere is a "
+"tendency for these files to become fragmented over time.\\nThis script "
+"attempts to relocate these small files into one\\ncontinuous location on "
+"your hard drive. The result is that the hard\\ndrive should be able to read "
+"them faster, since the hard drive head\\ndoes not have to move around the "
+"disk as much.\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:91
+msgid "diff tool was not found, please install diffutils."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:96
+msgid "Pacman lock file was found. Cannot run while pacman is running."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:104
+msgid "You must have correct permissions to optimize the database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:108
+msgid "ERROR: Can not create temp directory for database building."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:114
+msgid "MD5sum'ing the old database..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:118
+#, fuzzy
+msgid "Tar'ing up %s..."
+msgstr "Räume auf... "
+
+#: scripts/pacman-optimize.sh.in:123
+msgid "Tar'ing up %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:127
+msgid "Making and MD5sum'ing the new db..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:132
+msgid "Untar'ing %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:138
+#, fuzzy
+msgid "Checking integrity..."
+msgstr "Prüfe Paketintegrität... "
+
+#: scripts/pacman-optimize.sh.in:144
+msgid "Integrity check FAILED, reverting to old database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:149
+msgid "Putting the new database in place..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:158
+msgid "Finished. Your pacman database has been optimized."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:159
+msgid "For full benefits of pacman-optimize, run 'sync' now."
+msgstr ""
+
+#: scripts/repo-add.sh.in:56
+msgid "Usage: %s <path-to-db> [--force] <package> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:57
+msgid ""
+"repo-add will update a package database by reading a package file."
+"\\nMultiple packages to add can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:60
+msgid ""
+"The --force flag will add a 'force' entry to the sync database, which"
+"\\ntells pacman to skip its internal version number checking and update"
+"\\nthe package regardless.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:64
+msgid "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
+msgstr ""
+
+#: scripts/repo-add.sh.in:69
+msgid ""
+"Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:173
+msgid "Invalid package file '%s'."
+msgstr ""
+
+#: scripts/repo-add.sh.in:182 scripts/repo-remove.sh.in:91
+#, fuzzy
+msgid "Removing existing package '%s'..."
+msgstr ":: Empfange Pakete von %s...\n"
+
+#: scripts/repo-add.sh.in:192
+msgid "Creating 'desc' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:202
+msgid "Computing md5 checksums..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:214
+#, fuzzy
+msgid "Creating 'depends' db entry..."
+msgstr "Löse Abhängigkeiten auf... "
+
+#: scripts/repo-add.sh.in:230
+msgid "Creating 'deltas' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:236
+msgid "Added delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:238
+msgid "Could not add delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:276 scripts/repo-remove.sh.in:123
+msgid "%s not found. Cannot continue."
+msgstr ""
+
+#: scripts/repo-add.sh.in:286 scripts/repo-remove.sh.in:133
+msgid "Cannot create temp directory for database building."
+msgstr ""
+
+#: scripts/repo-add.sh.in:297 scripts/repo-remove.sh.in:142
+msgid "Repository file '%s' is not a proper pacman database."
+msgstr ""
+
+#: scripts/repo-add.sh.in:300 scripts/repo-remove.sh.in:145
+msgid "Extracting database to a temporary location..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:306
+msgid "'%s' is not a package file, skipping"
+msgstr ""
+
+#: scripts/repo-add.sh.in:308
+#, fuzzy
+msgid "Adding package '%s'"
+msgstr "Lade Paketdaten ... "
+
+#: scripts/repo-add.sh.in:315
+#, fuzzy
+msgid "Package '%s' not found."
+msgstr "Paket '%s' wurde nicht gefunden.\n"
+
+#: scripts/repo-add.sh.in:322
+msgid "Creating updated database file %s"
+msgstr ""
+
+#: scripts/repo-add.sh.in:332 scripts/repo-remove.sh.in:170
+msgid "No compression set."
+msgstr ""
+
+#: scripts/repo-add.sh.in:340 scripts/repo-remove.sh.in:178
+msgid "No packages modified, nothing to do."
+msgstr ""
+
+#: scripts/repo-remove.sh.in:55
+msgid "repo-remove %s\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:56
+msgid "usage: %s <path-to-db> <packagename> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:57
+msgid ""
+"repo-remove will update a package database by removing the package name"
+"\\nspecified on the command line from the given repo database. Multiple"
+"\\npackages to remove can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:61
+msgid "Example: repo-remove /path/to/repo.db.tar.gz kernel26"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:149
+#, fuzzy
+msgid "Searching for package '%s'..."
+msgstr "Suche nach aktualisierbaren Paketen..."
+
+#: scripts/repo-remove.sh.in:154
+#, fuzzy
+msgid "Package matching '%s' not found."
+msgstr "Paket '%s' wurde nicht gefunden.\n"
+
+#: scripts/repo-remove.sh.in:161
+msgid "Creating updated database file '%s'..."
+msgstr ""
+
+#: scripts/updatesync.sh.in:35
+msgid "Usage: %s <action> <destfile> <option> [package_directory]"
+msgstr ""
+
+#: scripts/updatesync.sh.in:36
+msgid ""
+"updatesync will update a sync database by reading a PKGBUILD and\\nmodifying "
+"the destfile. updatesync updates the database in a temporary\\ndirectory and "
+"then compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:40
+msgid "There are two types of actions:\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:41
+msgid ""
+"upd - Will update a package's entry or create it if it doesn't exist."
+"\\n It takes the package's PKGBUILD as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:42
+msgid ""
+"del - Will remove a package's entry from the db. It takes the package's"
+"\\n name as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:44
+msgid ""
+"updatesync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:47
+msgid "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
+msgstr ""
+
+#: scripts/updatesync.sh.in:53
+msgid ""
+"Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:123
+#, fuzzy
+msgid "%s not found"
+msgstr "Paket \"%s\" nicht gefunden\n"
+
+#: scripts/updatesync.sh.in:129
+#, fuzzy
+msgid "failed to parse %s"
+msgstr "Konnte Konfiguration (%s) nicht lesen\n"
+
+#: scripts/updatesync.sh.in:136
+msgid "could not find %s-%s-%s-%s.%s - aborting"
+msgstr ""
+
+#~ msgid ":: %.1f MB required, have %.1f MB"
+#~ msgstr ":: %.1f MB werden benötigt, %.1f MB stehen zur Verfügung"
+
+#~ msgid "error"
+#~ msgstr "Fehler"
+
+#~ msgid "warning"
+#~ msgstr "Warnung"
+
+#~ msgid "Removes :"
+#~ msgstr "Entfernt :"
+
+#~ msgid "Build Type : %s\n"
+#~ msgstr "Bauart : %s\n"
+
+#~ msgid "SHA1 Sum : %s"
+#~ msgstr "SHA1-Summe : %s"
+
+#~ msgid "usage: %s {-R --remove} [options] <package>\n"
+#~ msgstr "Verwendung: %s {-R --remove} [Optionen] <Paket>\n"
+
+#~ msgid ""
+#~ " --ask <number> pre-specify answers for questions (see manpage)\n"
+#~ msgstr ""
+#~ " --ask <Nummer> Antworten für Fragen vorherbestimmen (Siehe "
+#~ "manpage)\n"
+
+#~ msgid "'%s' is not a valid root path\n"
+#~ msgstr "'%s' ist kein gültiger root-Pfad\n"
+
+#~ msgid "Targets :"
+#~ msgstr "Pakete :"
+
+#~ msgid "no package file was specified for --file\n"
+#~ msgstr "Es wurde kein Paket für --file angegeben\n"
+
+#~ msgid ":: %s is required by %s\n"
+#~ msgstr ":: %s wird benötigt von %s\n"
+
+#~ msgid "synchronizing package lists"
+#~ msgstr "Synchronisiere Paketlisten"
+
+#~ msgid "starting full system upgrade"
+#~ msgstr "Starte komplette Systemaktualisierung"
+
+#~ msgid ""
+#~ "\n"
+#~ ":: pacman has detected a newer version of the \"pacman\" package.\n"
+#~ msgstr ""
+#~ "\n"
+#~ ":: pacman hat eine neuere Version von \"pacman\" gefunden.\n"
+
+#~ msgid ":: It is recommended that you allow pacman to upgrade itself\n"
+#~ msgstr ":: Es wird empfohlen, zuerst pacman zu aktualisieren und\n"
+
+#~ msgid ""
+#~ ":: first, then you can re-run the operation with the newer version.\n"
+#~ msgstr ":: danach Ihre Eingabe mit der neueren Version zu wiederholen.\n"
+
+#~ msgid ":: Upgrade pacman first? [Y/n] "
+#~ msgstr ":: Zuerst pacman aktualisieren? [J/n] "
+
+#~ msgid "requires"
+#~ msgstr "Benötigt"
+
+#~ msgid "installed %s (%s)"
+#~ msgstr "%s (%s) installiert"
+
+#~ msgid "removed %s (%s)"
+#~ msgstr "%s (%s) entfernt"
+
+#~ msgid "upgraded %s (%s -> %s)"
+#~ msgstr "%s (%s -> %s) aktualisiert"
+
+#~ msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
+#~ msgstr ""
+#~ ":: %s-%s: Lokale Version ist aktuell. Trotzdem aktualisieren? [J/n] "
+
+#~ msgid ""
+#~ "\n"
+#~ "Total Package Size: %.2f MB\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Gesamte Paketgröße: %.2f MB\n"
diff --git a/po/en_GB.po b/po/en_GB.po
new file mode 100644
index 00000000..236f7451
--- /dev/null
+++ b/po/en_GB.po
@@ -0,0 +1,2204 @@
+# English (British) translations for Pacman package manager package.
+# Copyright (C) 2007 Judd Vinet <jvinet@zeroflux.org>
+# This file is distributed under the same license as the Pacman package manager package.
+# Jeff Bailes <thepizzaking@gmail.com>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Pacman package manager 3.0.0\n"
+"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: 2007-12-03 15:20+1000\n"
+"Last-Translator: Jeff Bailes <thepizzaking@gmail.com>\n"
+"Language-Team: English <en_gb@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/pacman/add.c:42
+#: src/pacman/remove.c:44
+#, c-format
+msgid "failed to release transaction (%s)\n"
+msgstr "failed to release transaction (%s)\n"
+
+#: src/pacman/add.c:79
+#: src/pacman/query.c:372
+#: src/pacman/remove.c:65
+#: src/pacman/sync.c:753
+msgid "no targets specified (use -h for help)\n"
+msgstr "no targets specified (use -h for help)\n"
+
+#: src/pacman/add.c:106
+#: src/pacman/sync.c:508
+#, c-format
+msgid "error: %s\n"
+msgstr "error: %s\n"
+
+#: src/pacman/add.c:109
+#: src/pacman/remove.c:100
+#: src/pacman/sync.c:482
+#, c-format
+msgid ""
+" if you're sure a package manager is not already\n"
+" running, you can remove %s.\n"
+msgstr ""
+" if you're sure a package manager is not already\n"
+" running, you can remove %s.\n"
+
+#: src/pacman/add.c:116
+#: src/pacman/remove.c:108
+#, c-format
+msgid "loading package data... "
+msgstr "loading package data... "
+
+#: src/pacman/add.c:120
+#, c-format
+msgid "error: failed to add target '%s' (%s)"
+msgstr "error: failed to add target '%s' (%s)"
+
+#: src/pacman/add.c:126
+#: src/pacman/remove.c:120
+#: src/pacman/sync.c:174
+#: src/pacman/sync.c:192
+#, c-format
+msgid "done.\n"
+msgstr "done.\n"
+
+#: src/pacman/add.c:131
+#: src/pacman/remove.c:124
+#: src/pacman/sync.c:614
+#, c-format
+msgid "error: failed to prepare transaction (%s)\n"
+msgstr "error: failed to prepare transaction (%s)\n"
+
+#: src/pacman/add.c:143
+#: src/pacman/remove.c:132
+#: src/pacman/sync.c:623
+#, c-format
+msgid ":: %s: requires %s\n"
+msgstr ":: %s: requires %s\n"
+
+#: src/pacman/add.c:151
+#, c-format
+msgid ":: %s: conflicts with %s"
+msgstr ":: %s: conflicts with %s"
+
+#: src/pacman/add.c:160
+#: src/pacman/sync.c:686
+#, c-format
+msgid "%s exists in both '%s' and '%s'\n"
+msgstr "%s exists in both '%s' and '%s'\n"
+
+#: src/pacman/add.c:166
+#: src/pacman/sync.c:692
+#, c-format
+msgid "%s: %s exists in filesystem\n"
+msgstr "%s: %s exists in filesystem\n"
+
+#: src/pacman/add.c:172
+#, c-format
+msgid ""
+"\n"
+"errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"errors occurred, no packages were upgraded.\n"
+
+#: src/pacman/add.c:186
+#: src/pacman/remove.c:171
+#: src/pacman/sync.c:677
+#, c-format
+msgid "error: failed to commit transaction (%s)\n"
+msgstr "error: failed to commit transaction (%s)\n"
+
+#: src/pacman/callback.c:163
+#, c-format
+msgid "checking dependencies...\n"
+msgstr "checking dependencies...\n"
+
+#: src/pacman/callback.c:167
+#, c-format
+msgid "checking for file conflicts...\n"
+msgstr "checking for file conflicts...\n"
+
+#: src/pacman/callback.c:171
+#, c-format
+msgid "resolving dependencies...\n"
+msgstr "resolving dependencies...\n"
+
+#: src/pacman/callback.c:174
+#, c-format
+msgid "looking for inter-conflicts...\n"
+msgstr "looking for inter-conflicts...\n"
+
+#: src/pacman/callback.c:178
+#, c-format
+msgid "installing %s...\n"
+msgstr "installing %s...\n"
+
+#: src/pacman/callback.c:189
+#, c-format
+msgid "removing %s...\n"
+msgstr "removing %s...\n"
+
+#: src/pacman/callback.c:200
+#, c-format
+msgid "upgrading %s...\n"
+msgstr "upgrading %s...\n"
+
+#: src/pacman/callback.c:211
+#, c-format
+msgid "checking package integrity...\n"
+msgstr "checking package integrity...\n"
+
+#: src/pacman/callback.c:214
+#, c-format
+msgid "checking delta integrity...\n"
+msgstr "checking delta integrity...\n"
+
+#: src/pacman/callback.c:217
+#, c-format
+msgid "applying deltas...\n"
+msgstr "applying deltas...\n"
+
+#: src/pacman/callback.c:220
+#, c-format
+msgid "generating %s with %s... "
+msgstr "generating %s with %s... "
+
+#: src/pacman/callback.c:223
+#, c-format
+msgid "success!\n"
+msgstr "success!\n"
+
+#: src/pacman/callback.c:226
+#, c-format
+msgid "failed.\n"
+msgstr "failed.\n"
+
+#: src/pacman/callback.c:235
+#, c-format
+msgid ":: Retrieving packages from %s...\n"
+msgstr ":: Retrieving packages from %s...\n"
+
+#: src/pacman/callback.c:263
+#, c-format
+msgid ":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+msgstr ":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+
+#: src/pacman/callback.c:268
+#, c-format
+msgid ":: %s is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+msgstr ":: %s is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+
+#: src/pacman/callback.c:274
+#, c-format
+msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
+msgstr ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
+
+#: src/pacman/callback.c:279
+#, c-format
+msgid ":: Replace %s with %s/%s? [Y/n] "
+msgstr ":: Replace %s with %s/%s? [Y/n] "
+
+#: src/pacman/callback.c:286
+#, c-format
+msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
+msgstr ":: %s conflicts with %s. Remove %s? [Y/n] "
+
+#: src/pacman/callback.c:294
+#, c-format
+msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
+msgstr ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
+
+#: src/pacman/callback.c:304
+#, c-format
+msgid ":: File %s is corrupted. Do you want to delete it? [Y/n] "
+msgstr ":: File %s is corrupted. Do you want to delete it? [Y/n] "
+
+#: src/pacman/callback.c:354
+msgid "installing"
+msgstr "installing"
+
+#: src/pacman/callback.c:357
+msgid "upgrading"
+msgstr "upgrading"
+
+#: src/pacman/callback.c:360
+msgid "removing"
+msgstr "removing"
+
+#: src/pacman/callback.c:363
+msgid "checking for file conflicts"
+msgstr "checking for file conflicts"
+
+#: src/pacman/package.c:68
+msgid "Explicitly installed"
+msgstr "Explicitly installed"
+
+#: src/pacman/package.c:71
+msgid "Installed as a dependency for another package"
+msgstr "Installed as a dependency for another package"
+
+#: src/pacman/package.c:74
+msgid "Unknown"
+msgstr "Unknown"
+
+#: src/pacman/package.c:89
+msgid "Description : "
+msgstr "Description : "
+
+#: src/pacman/package.c:93
+msgid "Filename :"
+msgstr "Filename :"
+
+#: src/pacman/package.c:95
+msgid "Name :"
+msgstr "Name :"
+
+#: src/pacman/package.c:96
+msgid "Version :"
+msgstr "Version :"
+
+#: src/pacman/package.c:97
+msgid "URL :"
+msgstr "URL :"
+
+#: src/pacman/package.c:98
+msgid "Licenses :"
+msgstr "Licences :"
+
+#: src/pacman/package.c:99
+msgid "Groups :"
+msgstr "Groups :"
+
+#: src/pacman/package.c:100
+msgid "Provides :"
+msgstr "Provides :"
+
+#: src/pacman/package.c:101
+msgid "Depends On :"
+msgstr "Depends On :"
+
+#: src/pacman/package.c:102
+msgid "Optional Deps :"
+msgstr "Optional Deps :"
+
+#: src/pacman/package.c:105
+msgid "Required By :"
+msgstr "Required By :"
+
+#: src/pacman/package.c:108
+msgid "Conflicts With :"
+msgstr "Conflicts With :"
+
+#: src/pacman/package.c:109
+msgid "Replaces :"
+msgstr "Replaces :"
+
+#: src/pacman/package.c:111
+#, c-format
+msgid "Download Size : %6.2f K\n"
+msgstr "Download Size : %6.2f K\n"
+
+#: src/pacman/package.c:115
+#, c-format
+msgid "Compressed Size: %6.2f K\n"
+msgstr "Compressed Size: %6.2f K\n"
+
+#: src/pacman/package.c:119
+#, c-format
+msgid "Installed Size : %6.2f K\n"
+msgstr "Installed Size : %6.2f K\n"
+
+#: src/pacman/package.c:121
+msgid "Packager :"
+msgstr "Packager :"
+
+#: src/pacman/package.c:122
+msgid "Architecture :"
+msgstr "Architecture :"
+
+#: src/pacman/package.c:123
+msgid "Build Date :"
+msgstr "Build Date :"
+
+#: src/pacman/package.c:125
+msgid "Install Date :"
+msgstr "Install Date :"
+
+#: src/pacman/package.c:126
+msgid "Install Reason :"
+msgstr "Install Reason :"
+
+#: src/pacman/package.c:129
+msgid "Install Script :"
+msgstr "Install Script :"
+
+#: src/pacman/package.c:130
+msgid "Yes"
+msgstr "Yes"
+
+#: src/pacman/package.c:130
+msgid "No"
+msgstr "No"
+
+#: src/pacman/package.c:135
+msgid "MD5 Sum :"
+msgstr "MD5 Sum :"
+
+#: src/pacman/package.c:159
+msgid "Repository :"
+msgstr "Repository :"
+
+#: src/pacman/package.c:169
+#, c-format
+msgid "Backup Files:\n"
+msgstr "Backup Files:\n"
+
+#: src/pacman/package.c:189
+#, c-format
+msgid "error: could not calculate checksums for %s\n"
+msgstr "error: could not calculate checksums for %s\n"
+
+#: src/pacman/package.c:197
+#, c-format
+msgid "MODIFIED\t%s\n"
+msgstr "MODIFIED\t%s\n"
+
+#: src/pacman/package.c:199
+#, c-format
+msgid "Not Modified\t%s\n"
+msgstr "Not Modified\t%s\n"
+
+#: src/pacman/package.c:203
+#, c-format
+msgid "MISSING\t\t%s\n"
+msgstr "MISSING\t\t%s\n"
+
+#: src/pacman/package.c:209
+#, c-format
+msgid "(none)\n"
+msgstr "(none)\n"
+
+#: src/pacman/package.c:244
+#, c-format
+msgid "error: no changelog available for '%s'.\n"
+msgstr "error: no changelog available for '%s'.\n"
+
+#: src/pacman/pacman.c:62
+msgid "options"
+msgstr "options"
+
+#: src/pacman/pacman.c:63
+msgid "file"
+msgstr "file"
+
+#: src/pacman/pacman.c:64
+msgid "package"
+msgstr "package"
+
+#: src/pacman/pacman.c:65
+msgid "usage"
+msgstr "usage"
+
+#: src/pacman/pacman.c:66
+msgid "operation"
+msgstr "operation"
+
+#: src/pacman/pacman.c:78
+#, c-format
+msgid ""
+"\n"
+"use '%s --help' with other options for more syntax\n"
+msgstr ""
+"\n"
+"use '%s --help' with other options for more syntax\n"
+
+#: src/pacman/pacman.c:83
+#: src/pacman/pacman.c:97
+#: src/pacman/pacman.c:119
+#, c-format
+msgid " --asdeps install packages as non-explicitly installed\n"
+msgstr " --asdeps install packages as non-explicitly installed\n"
+
+#: src/pacman/pacman.c:84
+#: src/pacman/pacman.c:90
+#: src/pacman/pacman.c:98
+#: src/pacman/pacman.c:121
+#, c-format
+msgid " -d, --nodeps skip dependency checks\n"
+msgstr " -d, --nodeps skip dependency checks\n"
+
+#: src/pacman/pacman.c:85
+#: src/pacman/pacman.c:99
+#: src/pacman/pacman.c:123
+#, c-format
+msgid " -f, --force force install, overwrite conflicting files\n"
+msgstr " -f, --force force install, overwrite conflicting files\n"
+
+#: src/pacman/pacman.c:89
+#, c-format
+msgid " -c, --cascade remove packages and all packages that depend on them\n"
+msgstr " -c, --cascade remove packages and all packages that depend on them\n"
+
+#: src/pacman/pacman.c:91
+#, c-format
+msgid " -k, --dbonly only remove database entry, do not remove files\n"
+msgstr " -k, --dbonly only remove database entry, do not remove files\n"
+
+#: src/pacman/pacman.c:92
+#, c-format
+msgid " -n, --nosave remove configuration files as well\n"
+msgstr " -n, --nosave remove configuration files as well\n"
+
+#: src/pacman/pacman.c:93
+#, c-format
+msgid " -s, --recursive remove dependencies also (that won't break packages)\n"
+msgstr " -s, --recursive remove dependencies also (that won't break packages)\n"
+
+#: src/pacman/pacman.c:103
+#, c-format
+msgid " -c, --changelog view the changelog of a package\n"
+msgstr " -c, --changelog view the changelog of a package\n"
+
+#: src/pacman/pacman.c:104
+#, c-format
+msgid " -d, --deps list all packages installed as dependencies\n"
+msgstr " -d, --deps list all packages installed as dependencies\n"
+
+#: src/pacman/pacman.c:105
+#, c-format
+msgid " -e, --explicit list all packages explicitly installed\n"
+msgstr " -e, --explicit list all packages explicitly installed\n"
+
+#: src/pacman/pacman.c:106
+#: src/pacman/pacman.c:124
+#, c-format
+msgid " -g, --groups view all members of a package group\n"
+msgstr " -g, --groups view all members of a package group\n"
+
+#: src/pacman/pacman.c:107
+#, c-format
+msgid " -i, --info view package information (-ii for backup files)\n"
+msgstr " -i, --info view package information (-ii for backup files)\n"
+
+#: src/pacman/pacman.c:108
+#, c-format
+msgid " -l, --list list the contents of the queried package\n"
+msgstr " -l, --list list the contents of the queried package\n"
+
+#: src/pacman/pacman.c:109
+#, c-format
+msgid " -m, --foreign list installed packages not found in sync db(s)\n"
+msgstr ""
+" -m, --foreign list installed packages not found in sync db(s)\n"
+"(s)\n"
+
+#: src/pacman/pacman.c:110
+#, c-format
+msgid " -o, --owns <file> query the package that owns <file>\n"
+msgstr " -o, --owns <file> query the package that owns <file>\n"
+
+#: src/pacman/pacman.c:111
+#, c-format
+msgid " -p, --file <package> query a package file instead of the database\n"
+msgstr " -p, --file <package> query a package file instead of the database\n"
+
+#: src/pacman/pacman.c:112
+#, c-format
+msgid " -s, --search <regex> search locally-installed packages for matching strings\n"
+msgstr " -s, --search <regex> search locally-installed packages for matching strings\n"
+
+#: src/pacman/pacman.c:113
+#, c-format
+msgid " -t, --orphans list all packages not required by any package\n"
+msgstr " -t, --orphans list all packages not required by any package\n"
+
+#: src/pacman/pacman.c:114
+#, c-format
+msgid " -u, --upgrades list all packages that can be upgraded\n"
+msgstr " -u, --upgrades list all packages that can be upgraded\n"
+
+#: src/pacman/pacman.c:115
+#: src/pacman/pacman.c:136
+#, c-format
+msgid " -q --quiet show less information for query and search\n"
+msgstr " -q --quiet show less information for query and search\n"
+
+#: src/pacman/pacman.c:120
+#, c-format
+msgid " -c, --clean remove old packages from cache directory (-cc for all)\n"
+msgstr " -c, --clean remove old packages from cache directory (-cc for all)\n"
+
+#: src/pacman/pacman.c:122
+#, c-format
+msgid " -e, --dependsonly install dependencies only\n"
+msgstr " -e, --dependsonly install dependencies only\n"
+
+#: src/pacman/pacman.c:125
+#, c-format
+msgid " -i, --info view package information\n"
+msgstr " -i, --info view package information\n"
+
+#: src/pacman/pacman.c:126
+#, c-format
+msgid " -l, --list <repo> view a list of packages in a repo\n"
+msgstr " -l, --list <repo> view a list of packages in a repo\n"
+
+#: src/pacman/pacman.c:127
+#, c-format
+msgid " -p, --print-uris print out URIs for given packages and their dependencies\n"
+msgstr " -p, --print-uris print out URIs for given packages and their dependencies\n"
+
+#: src/pacman/pacman.c:128
+#, c-format
+msgid " -s, --search <regex> search remote repositories for matching strings\n"
+msgstr " -s, --search <regex> search remote repositories for matching strings\n"
+
+#: src/pacman/pacman.c:129
+#, c-format
+msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
+msgstr " -u, --sysupgrade upgrade all packages that are out of date\n"
+
+#: src/pacman/pacman.c:130
+#, c-format
+msgid " -w, --downloadonly download packages but do not install/upgrade anything\n"
+msgstr " -w, --downloadonly download packages but do not install/upgrade anything\n"
+
+#: src/pacman/pacman.c:131
+#, c-format
+msgid " -y, --refresh download fresh package databases from the server\n"
+msgstr " -y, --refresh download fresh package databases from the server\n"
+
+#: src/pacman/pacman.c:132
+#, c-format
+msgid " --needed only install outdated or not yet installed packages\n"
+msgstr " --needed only install outdated or not yet installed packages\n"
+
+#: src/pacman/pacman.c:133
+#, c-format
+msgid " --ignore <pkg> ignore a package upgrade (can be used more than once)\n"
+msgstr " --ignore <pkg> ignore a package upgrade (can be used more than once)\n"
+
+#: src/pacman/pacman.c:134
+#, c-format
+msgid ""
+" --ignoregroup <grp>\n"
+" ignore a group upgrade (can be used more than once)\n"
+msgstr ""
+" --ignoregroup <grp>\n"
+" ignore a group upgrade (can be used more than once)\n"
+
+#: src/pacman/pacman.c:138
+#, c-format
+msgid " --config <path> set an alternate configuration file\n"
+msgstr " --config <path> set an alternate configuration file\n"
+
+#: src/pacman/pacman.c:139
+#, c-format
+msgid " --logfile <path> set an alternate log file\n"
+msgstr " --logfile <path> set an alternate log file\n"
+
+#: src/pacman/pacman.c:140
+#, c-format
+msgid " --noconfirm do not ask for any confirmation\n"
+msgstr " --noconfirm do not ask for any confirmation\n"
+
+#: src/pacman/pacman.c:141
+#, c-format
+msgid " --noprogressbar do not show a progress bar when downloading files\n"
+msgstr " --noprogressbar do not show a progress bar when downloading files\n"
+
+#: src/pacman/pacman.c:142
+#, c-format
+msgid " --noscriptlet do not execute the install scriptlet if one exists\n"
+msgstr " --noscriptlet do not execute the install scriptlet if one exists\n"
+
+#: src/pacman/pacman.c:143
+#, c-format
+msgid " -v, --verbose be verbose\n"
+msgstr " -v, --verbose be verbose\n"
+
+#: src/pacman/pacman.c:144
+#, c-format
+msgid " -r, --root <path> set an alternate installation root\n"
+msgstr " -r, --root <path> set an alternate installation root\n"
+
+#: src/pacman/pacman.c:145
+#, c-format
+msgid " -b, --dbpath <path> set an alternate database location\n"
+msgstr " -b, --dbpath <path> set an alternate database location\n"
+
+#: src/pacman/pacman.c:146
+#, c-format
+msgid " --cachedir <dir> set an alternate package cache location\n"
+msgstr " --cachedir <dir> set an alternate package cache location\n"
+
+#: src/pacman/pacman.c:159
+#, c-format
+msgid ""
+" This program may be freely redistributed under\n"
+" the terms of the GNU General Public License\n"
+msgstr ""
+" This program may be freely redistributed under\n"
+" the terms of the GNU General Public License\n"
+
+#: src/pacman/pacman.c:250
+#, c-format
+msgid "problem setting rootdir '%s' (%s)\n"
+msgstr "problem setting rootdir '%s' (%s)\n"
+
+#: src/pacman/pacman.c:267
+#, c-format
+msgid "problem setting dbpath '%s' (%s)\n"
+msgstr "problem setting dbpath '%s' (%s)\n"
+
+#: src/pacman/pacman.c:275
+#, c-format
+msgid "problem setting logfile '%s' (%s)\n"
+msgstr "problem setting logfile '%s' (%s)\n"
+
+#: src/pacman/pacman.c:384
+#, c-format
+msgid "'%s' is not a valid debug level\n"
+msgstr "'%s' is not a valid debug level\n"
+
+#: src/pacman/pacman.c:398
+#: src/pacman/pacman.c:677
+#, c-format
+msgid "problem adding cachedir '%s' (%s)\n"
+msgstr "problem adding cachedir '%s' (%s)\n"
+
+#: src/pacman/pacman.c:484
+msgid "only one operation may be used at a time\n"
+msgstr "only one operation may be used at a time\n"
+
+#: src/pacman/pacman.c:544
+#, c-format
+msgid "config file %s could not be read.\n"
+msgstr "config file %s could not be read.\n"
+
+#: src/pacman/pacman.c:580
+#, c-format
+msgid "config file %s, line %d: bad section name.\n"
+msgstr "config file %s, line %d: bad section name.\n"
+
+#: src/pacman/pacman.c:602
+#, c-format
+msgid "config file %s, line %d: syntax error in config file- missing key.\n"
+msgstr "config file %s, line %d: syntax error in config file- missing key.\n"
+
+#: src/pacman/pacman.c:612
+#, c-format
+msgid "config file %s, line %d: 'Include' directive must belong to a section.\n"
+msgstr "config file %s, line %d: 'Include' directive must belong to a section.\n"
+
+#: src/pacman/pacman.c:640
+#: src/pacman/pacman.c:702
+#: src/pacman/pacman.c:717
+#, c-format
+msgid "config file %s, line %d: directive '%s' not recognized.\n"
+msgstr "config file %s, line %d: directive '%s' not recognised.\n"
+
+#: src/pacman/pacman.c:787
+#, c-format
+msgid "failed to initialize alpm library (%s)\n"
+msgstr "failed to initialise alpm library (%s)\n"
+
+#: src/pacman/pacman.c:824
+msgid "you cannot perform this operation unless you are root.\n"
+msgstr "you cannot perform this operation unless you are root.\n"
+
+#: src/pacman/pacman.c:847
+#, c-format
+msgid "could not register 'local' database (%s)\n"
+msgstr "could not register 'local' database (%s)\n"
+
+#: src/pacman/pacman.c:873
+msgid "no operation specified (use -h for help)\n"
+msgstr "no operation specified (use -h for help)\n"
+
+#: src/pacman/query.c:67
+#, c-format
+msgid "error: no file was specified for --owns\n"
+msgstr "error: no file was specified for --owns\n"
+
+#: src/pacman/query.c:80
+#, c-format
+msgid "error: failed to read file '%s': %s\n"
+msgstr "error: failed to read file '%s': %s\n"
+
+#: src/pacman/query.c:87
+#, c-format
+msgid "error: cannot determine ownership of a directory\n"
+msgstr "error: cannot determine ownership of a directory\n"
+
+#: src/pacman/query.c:95
+#, c-format
+msgid "error: cannot determine real path for '%s': %s\n"
+msgstr "error: cannot determine real path for '%s': %s\n"
+
+#: src/pacman/query.c:117
+#, c-format
+msgid "%s is owned by %s %s\n"
+msgstr "%s is owned by %s %s\n"
+
+#: src/pacman/query.c:125
+#, c-format
+msgid "error: No package owns %s\n"
+msgstr "error: No package owns %s\n"
+
+#: src/pacman/query.c:221
+#, c-format
+msgid "error: group \"%s\" was not found\n"
+msgstr "error: group \"%s\" was not found\n"
+
+#: src/pacman/query.c:232
+#, c-format
+msgid "Checking for package upgrades... \n"
+msgstr "Checking for package upgrades... \n"
+
+#: src/pacman/query.c:243
+#, c-format
+msgid "no upgrades found.\n"
+msgstr "no upgrades found.\n"
+
+#: src/pacman/query.c:362
+#: src/pacman/sync.c:743
+msgid "no usable package repositories configured.\n"
+msgstr "no usable package repositories configured.\n"
+
+#: src/pacman/query.c:406
+#, c-format
+msgid "error: package \"%s\" not found\n"
+msgstr "error: package \"%s\" not found\n"
+
+#: src/pacman/remove.c:78
+#: src/pacman/sync.c:583
+#, c-format
+msgid ":: group %s:\n"
+msgstr ":: group %s:\n"
+
+#: src/pacman/remove.c:80
+msgid " Remove whole content? [Y/n] "
+msgstr " Remove whole content? [Y/n] "
+
+#: src/pacman/remove.c:84
+#, c-format
+msgid ":: Remove %s from group %s? [Y/n] "
+msgstr ":: Remove %s from group %s? [Y/n] "
+
+#: src/pacman/remove.c:97
+#: src/pacman/sync.c:479
+#: src/pacman/sync.c:540
+#, c-format
+msgid "error: failed to init transaction (%s)\n"
+msgstr "error: failed to init transaction (%s)\n"
+
+#: src/pacman/remove.c:113
+#, c-format
+msgid "error: failed to add target '%s' (%s)\n"
+msgstr "error: failed to add target '%s' (%s)\n"
+
+#: src/pacman/remove.c:158
+#: src/pacman/util.c:462
+msgid "Targets:"
+msgstr "Targets:"
+
+#: src/pacman/remove.c:161
+msgid ""
+"\n"
+"Do you want to remove these packages? [Y/n] "
+msgstr ""
+"\n"
+"Do you want to remove these packages? [Y/n] "
+
+#: src/pacman/sync.c:52
+#, c-format
+msgid "error: could not access database directory\n"
+msgstr "error: could not access database directory\n"
+
+#: src/pacman/sync.c:83
+#, c-format
+msgid "Do you want to remove %s? [Y/n] "
+msgstr "Do you want to remove %s? [Y/n] "
+
+#: src/pacman/sync.c:88
+#, c-format
+msgid "error: could not remove repository directory\n"
+msgstr "error: could not remove repository directory\n"
+
+#: src/pacman/sync.c:101
+#, c-format
+msgid "Database directory: %s\n"
+msgstr "Database directory: %s\n"
+
+#: src/pacman/sync.c:102
+msgid "Do you want to remove unused repositories? [Y/n] "
+msgstr "Do you want to remove unused repositories? [Y/n] "
+
+#: src/pacman/sync.c:112
+#, c-format
+msgid "Database directory cleaned up\n"
+msgstr "Database directory cleaned up\n"
+
+#: src/pacman/sync.c:130
+#: src/pacman/sync.c:177
+#, c-format
+msgid "Cache directory: %s\n"
+msgstr "Cache directory: %s\n"
+
+#: src/pacman/sync.c:131
+msgid "Do you want to remove uninstalled packages from cache? [Y/n] "
+msgstr "Do you want to remove uninstalled packages from cache? [Y/n] "
+
+#: src/pacman/sync.c:134
+#, c-format
+msgid "removing old packages from cache... "
+msgstr "removing old packages from cache... "
+
+#: src/pacman/sync.c:138
+#, c-format
+msgid "error: could not access cache directory\n"
+msgstr "error: could not access cache directory\n"
+
+#: src/pacman/sync.c:178
+msgid "Do you want to remove ALL packages from cache? [Y/n] "
+msgstr "Do you want to remove ALL packages from cache? [Y/n] "
+
+#: src/pacman/sync.c:181
+#, c-format
+msgid "removing all packages from cache... "
+msgstr "removing all packages from cache... "
+
+#: src/pacman/sync.c:184
+#, c-format
+msgid "error: could not remove cache directory\n"
+msgstr "error: could not remove cache directory\n"
+
+#: src/pacman/sync.c:189
+#, c-format
+msgid "error: could not create new cache directory\n"
+msgstr "error: could not create new cache directory\n"
+
+#: src/pacman/sync.c:216
+#, c-format
+msgid "error: failed to synchronize %s: %s\n"
+msgstr "error: failed to synchronise %s: %s\n"
+
+#: src/pacman/sync.c:219
+#, c-format
+msgid "error: failed to update %s (%s)\n"
+msgstr "error: failed to update %s (%s)\n"
+
+#: src/pacman/sync.c:223
+#, c-format
+msgid " %s is up to date\n"
+msgstr " %s is up to date\n"
+
+#: src/pacman/sync.c:366
+#, c-format
+msgid "error: repository '%s' does not exist\n"
+msgstr "error: repository '%s' does not exist\n"
+
+#: src/pacman/sync.c:381
+#, c-format
+msgid "error: package '%s' was not found in repository '%s'\n"
+msgstr "error: package '%s' was not found in repository '%s'\n"
+
+#: src/pacman/sync.c:401
+#, c-format
+msgid "error: package '%s' was not found\n"
+msgstr "error: package '%s' was not found\n"
+
+#: src/pacman/sync.c:438
+#, c-format
+msgid "error: repository \"%s\" was not found.\n"
+msgstr "error: repository \"%s\" was not found.\n"
+
+#: src/pacman/sync.c:490
+#, c-format
+msgid ":: Synchronizing package databases...\n"
+msgstr ":: Synchronising package databases...\n"
+
+#: src/pacman/sync.c:493
+#, c-format
+msgid "error: failed to synchronize any databases\n"
+msgstr "error: failed to synchronise any databases\n"
+
+#: src/pacman/sync.c:505
+#, c-format
+msgid ":: Starting full system upgrade...\n"
+msgstr ":: Starting full system upgrade...\n"
+
+#: src/pacman/sync.c:526
+#, c-format
+msgid ""
+":: pacman has detected a newer version of itself.\n"
+":: It is recommended that you upgrade pacman by itself\n"
+":: using 'pacman -S pacman', and then rerun the current\n"
+":: operation. If you wish to continue the operation and\n"
+":: not upgrade pacman separately, answer no.\n"
+msgstr ""
+":: pacman has detected a newer version of itself.\n"
+":: It is recommended that you upgrade pacman by itself\n"
+":: using 'pacman -S pacman', and then rerun the current\n"
+":: operation. If you wish to continue the operation and\n"
+":: not upgrade pacman separately, answer no.\n"
+
+#: src/pacman/sync.c:531
+msgid ":: Cancel current operation? [Y/n] "
+msgstr ":: Cancel current operation? [Y/n] "
+
+#: src/pacman/sync.c:533
+#: src/pacman/sync.c:720
+#, c-format
+msgid "error: failed to release transaction (%s)\n"
+msgstr "error: failed to release transaction (%s)\n"
+
+#: src/pacman/sync.c:545
+#, c-format
+msgid "error: pacman: %s\n"
+msgstr "error: pacman: %s\n"
+
+#: src/pacman/sync.c:569
+#, c-format
+msgid "error: '%s': %s\n"
+msgstr "error: '%s': %s\n"
+
+#: src/pacman/sync.c:588
+msgid ":: Install whole content? [Y/n] "
+msgstr ":: Install whole content? [Y/n] "
+
+#: src/pacman/sync.c:595
+#, c-format
+msgid ":: Install %s from group %s? [Y/n] "
+msgstr ":: Install %s from group %s? [Y/n] "
+
+#: src/pacman/sync.c:604
+#, c-format
+msgid "error: '%s': not found in sync db\n"
+msgstr "error: '%s': not found in sync db\n"
+
+#: src/pacman/sync.c:631
+#, c-format
+msgid ":: %s: conflicts with %s\n"
+msgstr ":: %s: conflicts with %s\n"
+
+#: src/pacman/sync.c:645
+#, c-format
+msgid " local database is up to date\n"
+msgstr " local database is up to date\n"
+
+#: src/pacman/sync.c:657
+#, c-format
+msgid "Beginning download...\n"
+msgstr "Beginning download...\n"
+
+#: src/pacman/sync.c:660
+msgid "Proceed with download? [Y/n] "
+msgstr "Proceed with download? [Y/n] "
+
+#: src/pacman/sync.c:664
+#, c-format
+msgid "Beginning upgrade process...\n"
+msgstr "Beginning upgrade process...\n"
+
+#: src/pacman/sync.c:667
+msgid "Proceed with installation? [Y/n] "
+msgstr "Proceed with installation? [Y/n] "
+
+#: src/pacman/sync.c:708
+#, c-format
+msgid "Errors occurred, no packages were upgraded.\n"
+msgstr "Errors occurred, no packages were upgraded.\n"
+
+#: src/pacman/util.c:356
+#: src/pacman/util.c:388
+#, c-format
+msgid "None\n"
+msgstr "None\n"
+
+#: src/pacman/util.c:454
+msgid "Remove:"
+msgstr "Remove:"
+
+#: src/pacman/util.c:458
+#, c-format
+msgid "Total Removed Size: %.2f MB\n"
+msgstr "Total Removed Size: %.2f MB\n"
+
+#: src/pacman/util.c:465
+#, c-format
+msgid "Total Download Size: %.2f MB\n"
+msgstr "Total Download Size: %.2f MB\n"
+
+#: src/pacman/util.c:469
+#, c-format
+msgid "Total Installed Size: %.2f MB\n"
+msgstr "Total Installed Size: %.2f MB\n"
+
+#: src/pacman/util.c:496
+msgid "Y"
+msgstr "Y"
+
+#: src/pacman/util.c:496
+msgid "YES"
+msgstr "YES"
+
+#: src/pacman/util.c:557
+#, c-format
+msgid "debug: "
+msgstr "debug: "
+
+#: src/pacman/util.c:560
+#, c-format
+msgid "error: "
+msgstr "error: "
+
+#: src/pacman/util.c:563
+#, c-format
+msgid "warning: "
+msgstr "warning: "
+
+#: src/pacman/util.c:568
+#, c-format
+msgid "function: "
+msgstr "function: "
+
+#: scripts/abs.sh.in:60
+#: scripts/makepkg.sh.in:110
+#: scripts/makepkg.sh.in:112
+#: scripts/repo-add.sh.in:50
+#: scripts/repo-remove.sh.in:50
+msgid "ERROR:"
+msgstr "ERROR:"
+
+#: scripts/abs.sh.in:65
+msgid "abs (pacman) %s - download a PKGBUILD tree from a CVS repository"
+msgstr "abs (pacman) %s - download a PKGBUILD tree from a CVS repository"
+
+#: scripts/abs.sh.in:66
+msgid "Usage %s [options] [repository...]"
+msgstr "Usage %s [options] [repository...]"
+
+#: scripts/abs.sh.in:67
+#: scripts/makepkg.sh.in:1055
+msgid "Options:"
+msgstr "Options:"
+
+#: scripts/abs.sh.in:68
+msgid " -p, --passive The connection is opened in passive mode."
+msgstr " -p, --passive The connection is opened in passive mode."
+
+#: scripts/abs.sh.in:70
+msgid " -h, --help Display this help message then exit."
+msgstr " -h, --help Display this help message then exit."
+
+#: scripts/abs.sh.in:71
+msgid " -V, --version Display version information then exit."
+msgstr " -V, --version Display version information then exit."
+
+#: scripts/abs.sh.in:73
+msgid ""
+"abs will synchronize build scripts from the CVS repository\\n"
+"into %s. You can follow different package trees by\\n"
+"editing %s files. If no argument is given, abs\\n"
+"will synchronize from supfiles specified in %s.\\n"
+"\\n"
+msgstr ""
+"abs will synchronise build scripts from the CVS repository\\n"
+"into %s. You can follow different package trees by\\n"
+"editing %s files. If no argument is given, abs\\n"
+"will synchronise from supfiles specified in %s.\\n"
+"\\n"
+
+#: scripts/abs.sh.in:79
+msgid "Report bugs to <%s>."
+msgstr "Report bugs to <%s>."
+
+#: scripts/abs.sh.in:84
+#: scripts/gensync.sh.in:54
+#: scripts/makepkg.sh.in:1088
+#: scripts/pacman-optimize.sh.in:59
+#: scripts/repo-remove.sh.in:66
+msgid ""
+"Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\\n"
+"\\n"
+"This is free software; see the source for copying conditions.\\n"
+"There is NO WARRANTY, to the extent permitted by law.\\n"
+msgstr ""
+"Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\\n"
+"\\n"
+"This is free software; see the source for copying conditions.\\n"
+"There is NO WARRANTY, to the extent permitted by law.\\n"
+
+#: scripts/abs.sh.in:130
+#: scripts/pacman-optimize.sh.in:100
+msgid "%s does not exist or is not a directory."
+msgstr "%s does not exist or is not a directory."
+
+#: scripts/abs.sh.in:133
+msgid "You do not have write permissions in %s."
+msgstr "You do not have write permissions in %s."
+
+#: scripts/abs.sh.in:143
+msgid "Missing CVS synchronization utility. Install csup or cvsup."
+msgstr "Missing CVS synchronisation utility. Install csup or cvsup."
+
+#: scripts/abs.sh.in:166
+msgid "Updating %s..."
+msgstr "Updating %s..."
+
+#: scripts/gensync.sh.in:34
+msgid "Usage: %s <root> <destfile> [package_directory]"
+msgstr "Usage: %s <root> <destfile> [package_directory]"
+
+#: scripts/gensync.sh.in:35
+msgid ""
+"gensync will generate a sync database by reading all PKGBUILD files\\n"
+"from <root>. gensync builds the database in a temporary directory\\n"
+"and then compresses it to <destfile>.\\n"
+"\\n"
+msgstr ""
+"gensync will generate a sync database by reading all PKGBUILD files\\n"
+"from <root>. gensync builds the database in a temporary directory\\n"
+"and then compresses it to <destfile>.\\n"
+"\\n"
+
+#: scripts/gensync.sh.in:39
+msgid ""
+"gensync will calculate md5sums of packages in the same directory as\\n"
+"<destfile>, unless an alternate [package_directory] is specified.\\n"
+"\\n"
+msgstr ""
+"gensync will calculate md5sums of packages in the same directory as\\n"
+"<destfile>, unless an alternate [package_directory] is specified.\\n"
+"\\n"
+
+#: scripts/gensync.sh.in:42
+msgid ""
+"note: The <destfile> name is important. It must be of the form\\n"
+" {treename}.db.tar.gz where {treename} is the name of the custom\\n"
+" package repository you configured in /etc/pacman.conf. The\\n"
+" generated database must reside in the same directory as your\\n"
+" custom packages (also configured in /etc/pacman.conf)\\n"
+"\\n"
+msgstr ""
+"note: The <destfile> name is important. It must be of the form\\n"
+" {treename}.db.tar.gz where {treename} is the name of the custom\\n"
+" package repository you configured in /etc/pacman.conf. The\\n"
+" generated database must reside in the same directory as your\\n"
+" custom packages (also configured in /etc/pacman.conf)\\n"
+"\\n"
+
+#: scripts/gensync.sh.in:48
+msgid "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
+msgstr "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
+
+#: scripts/gensync.sh.in:102
+#: scripts/updatesync.sh.in:101
+msgid "%s not found. Can not continue."
+msgstr "%s not found. Can not continue."
+
+#: scripts/gensync.sh.in:120
+msgid "invalid root dir: %s"
+msgstr "invalid root dir: %s"
+
+#: scripts/gensync.sh.in:122
+msgid "gensync: building database entries, generating md5sums..."
+msgstr "gensync: building database entries, generating md5sums..."
+
+#: scripts/gensync.sh.in:131
+msgid "failed to parse parse %s"
+msgstr "failed to parse parse %s"
+
+#: scripts/gensync.sh.in:142
+msgid "could not find %s-%s-%s-%s.%s - skipping"
+msgstr "could not find %s-%s-%s-%s.%s - skipping"
+
+#: scripts/gensync.sh.in:152
+msgid "creating repo DB..."
+msgstr "creating repo DB..."
+
+#: scripts/makepkg.sh.in:101
+#: scripts/makepkg.sh.in:103
+#: scripts/repo-add.sh.in:45
+#: scripts/repo-remove.sh.in:45
+msgid "WARNING:"
+msgstr "WARNING:"
+
+#: scripts/makepkg.sh.in:143
+msgid "Cleaning up..."
+msgstr "Cleaning up..."
+
+#: scripts/makepkg.sh.in:193
+msgid "Options beginning with 'no' will be deprecated in the next version of makepkg!"
+msgstr "Options beginning with 'no' will be deprecated in the next version of makepkg!"
+
+#: scripts/makepkg.sh.in:194
+msgid "Please replace 'no' with '!': %s -> %s."
+msgstr "Please replace 'no' with '!': %s -> %s."
+
+#: scripts/makepkg.sh.in:198
+msgid "Option 'keepdocs' may not work as intended. Please replace with 'docs'."
+msgstr "Option 'keepdocs' may not work as intended. Please replace with 'docs'."
+
+#: scripts/makepkg.sh.in:286
+msgid "There is no agent set up to handle %s URLs. Check %s."
+msgstr "There is no agent set up to handle %s URLs. Check %s."
+
+#: scripts/makepkg.sh.in:287
+#: scripts/makepkg.sh.in:296
+#: scripts/makepkg.sh.in:448
+#: scripts/makepkg.sh.in:476
+#: scripts/makepkg.sh.in:522
+#: scripts/makepkg.sh.in:610
+#: scripts/makepkg.sh.in:638
+#: scripts/makepkg.sh.in:700
+#: scripts/makepkg.sh.in:767
+#: scripts/makepkg.sh.in:1105
+#: scripts/makepkg.sh.in:1415
+#: scripts/makepkg.sh.in:1419
+msgid "Aborting..."
+msgstr "Aborting..."
+
+#: scripts/makepkg.sh.in:295
+msgid "The download program %s is not installed."
+msgstr "The download program %s is not installed."
+
+#: scripts/makepkg.sh.in:311
+msgid "Pacman returned a fatal error (%i): %s"
+msgstr "Pacman returned a fatal error (%i): %s"
+
+#: scripts/makepkg.sh.in:335
+msgid "Installing missing dependencies..."
+msgstr "Installing missing dependencies..."
+
+#: scripts/makepkg.sh.in:345
+msgid "Pacman failed to install missing dependencies."
+msgstr "Pacman failed to install missing dependencies."
+
+#: scripts/makepkg.sh.in:349
+msgid "Building missing dependencies..."
+msgstr "Building missing dependencies..."
+
+#: scripts/makepkg.sh.in:354
+msgid "Source root cannot be found - please make sure it is specified in %s."
+msgstr "Source root cannot be found - please make sure it is specified in %s."
+
+#: scripts/makepkg.sh.in:362
+msgid "Could not find '%s' under %s"
+msgstr "Could not find '%s' under %s"
+
+#: scripts/makepkg.sh.in:378
+msgid "Failed to build '%s'"
+msgstr "Failed to build '%s'"
+
+#: scripts/makepkg.sh.in:411
+msgid "Failed to install all missing dependencies."
+msgstr "Failed to install all missing dependencies."
+
+#: scripts/makepkg.sh.in:414
+msgid "Missing Dependencies:"
+msgstr "Missing Dependencies:"
+
+#: scripts/makepkg.sh.in:444
+msgid "Retrieving Sources..."
+msgstr "Retrieving Sources..."
+
+#: scripts/makepkg.sh.in:447
+msgid "You do not have write permission to store downloads in %s."
+msgstr "You do not have write permission to store downloads in %s."
+
+#: scripts/makepkg.sh.in:458
+msgid "Found %s in build dir"
+msgstr "Found %s in build dir"
+
+#: scripts/makepkg.sh.in:462
+msgid "Using cached copy of %s"
+msgstr "Using cached copy of %s"
+
+#: scripts/makepkg.sh.in:470
+msgid "Downloading %s..."
+msgstr "Downloading %s..."
+
+#: scripts/makepkg.sh.in:475
+msgid "Failure while downloading %s"
+msgstr "Failure while downloading %s"
+
+#: scripts/makepkg.sh.in:486
+msgid "Generating checksums for source files..."
+msgstr "Generating checksums for source files..."
+
+#: scripts/makepkg.sh.in:495
+msgid "Invalid integrity algorithm '%s' specified."
+msgstr "Invalid integrity algorithm '%s' specified."
+
+#: scripts/makepkg.sh.in:500
+#: scripts/makepkg.sh.in:552
+msgid "Cannot find the '%s' program."
+msgstr "Cannot find the '%s' program."
+
+#: scripts/makepkg.sh.in:521
+msgid "Unable to find source file %s to generate checksum."
+msgstr "Unable to find source file %s to generate checksum."
+
+#: scripts/makepkg.sh.in:547
+msgid "Invalid integrity algorithm '%s' specified"
+msgstr "Invalid integrity algorithm '%s' specified"
+
+#: scripts/makepkg.sh.in:558
+msgid "Validating source files with %s..."
+msgstr "Validating source files with %s..."
+
+#: scripts/makepkg.sh.in:568
+msgid "NOT FOUND"
+msgstr "NOT FOUND"
+
+#: scripts/makepkg.sh.in:577
+msgid "Passed"
+msgstr "Passed"
+
+#: scripts/makepkg.sh.in:579
+msgid "FAILED"
+msgstr "FAILED"
+
+#: scripts/makepkg.sh.in:587
+msgid "One or more files did not pass the validity check!"
+msgstr "One or more files did not pass the validity check!"
+
+#: scripts/makepkg.sh.in:591
+msgid "Integrity checks (%s) are missing or incomplete."
+msgstr "Integrity checks (%s) are missing or incomplete."
+
+#: scripts/makepkg.sh.in:597
+msgid "Extracting Sources..."
+msgstr "Extracting Sources..."
+
+#: scripts/makepkg.sh.in:609
+msgid "Unable to find source file %s for extraction."
+msgstr "Unable to find source file %s for extraction."
+
+#: scripts/makepkg.sh.in:637
+msgid "Failed to extract %s"
+msgstr "Failed to extract %s"
+
+#: scripts/makepkg.sh.in:669
+msgid "Starting build()..."
+msgstr "Starting build()..."
+
+#: scripts/makepkg.sh.in:699
+msgid "Build Failed."
+msgstr "Build Failed."
+
+#: scripts/makepkg.sh.in:708
+msgid "Tidying install..."
+msgstr "Tidying install..."
+
+#: scripts/makepkg.sh.in:711
+msgid "Removing info/doc files..."
+msgstr "Removing info/doc files..."
+
+#: scripts/makepkg.sh.in:717
+msgid "Moving usr/share/man files to usr/man..."
+msgstr "Moving usr/share/man files to usr/man..."
+
+#: scripts/makepkg.sh.in:724
+msgid "Compressing man pages..."
+msgstr "Compressing man pages..."
+
+#: scripts/makepkg.sh.in:742
+msgid "Stripping debugging symbols from binaries and libraries..."
+msgstr "Stripping debugging symbols from binaries and libraries..."
+
+#: scripts/makepkg.sh.in:754
+msgid "Removing libtool .la files..."
+msgstr "Removing libtool .la files..."
+
+#: scripts/makepkg.sh.in:759
+msgid "Removing empty directories..."
+msgstr "Removing empty directories..."
+
+#: scripts/makepkg.sh.in:766
+msgid "Missing pkg/ directory."
+msgstr "Missing pkg/ directory."
+
+#: scripts/makepkg.sh.in:772
+msgid "Creating package..."
+msgstr "Creating package..."
+
+#: scripts/makepkg.sh.in:782
+msgid "Generating .FILELIST file..."
+msgstr "Generating .FILELIST file..."
+
+#: scripts/makepkg.sh.in:792
+msgid "Generating .PKGINFO file..."
+msgstr "Generating .PKGINFO file..."
+
+#: scripts/makepkg.sh.in:838
+msgid "Please add a license line to your %s!"
+msgstr "Please add a license line to your %s!"
+
+#: scripts/makepkg.sh.in:839
+msgid "Example for GPL'ed software: license=('GPL')."
+msgstr "Example for GPL'ed software: license=('GPL')."
+
+#: scripts/makepkg.sh.in:847
+#: scripts/makepkg.sh.in:942
+msgid "Adding install script..."
+msgstr "Adding install script..."
+
+#: scripts/makepkg.sh.in:854
+msgid "Adding package changelog..."
+msgstr "Adding package changelog..."
+
+#: scripts/makepkg.sh.in:860
+msgid "Compressing package..."
+msgstr "Compressing package..."
+
+#: scripts/makepkg.sh.in:865
+msgid "Failed to create package file."
+msgstr "Failed to create package file."
+
+#: scripts/makepkg.sh.in:874
+msgid "Cannot find the xdelta binary! Is xdelta installed?"
+msgstr "Cannot find the xdelta binary! Is xdelta installed?"
+
+#: scripts/makepkg.sh.in:904
+msgid "Making delta from version %s..."
+msgstr "Making delta from version %s..."
+
+#: scripts/makepkg.sh.in:918
+msgid "Recreating package tarball from delta to match md5 signatures"
+msgstr "Recreating package tarball from delta to match md5 signatures"
+
+#: scripts/makepkg.sh.in:919
+msgid "NOTE: the delta should ONLY be distributed with this tarball"
+msgstr "NOTE: the delta should ONLY be distributed with this tarball"
+
+#: scripts/makepkg.sh.in:923
+msgid "Could not generate the package from the delta."
+msgstr "Could not generate the package from the delta."
+
+#: scripts/makepkg.sh.in:927
+msgid "Delta was not able to be created."
+msgstr "Delta was not able to be created."
+
+#: scripts/makepkg.sh.in:930
+msgid "No previous version found, skipping xdelta."
+msgstr "No previous version found, skipping xdelta."
+
+#: scripts/makepkg.sh.in:936
+msgid "Creating source package..."
+msgstr "Creating source package..."
+
+#: scripts/makepkg.sh.in:938
+#: scripts/makepkg.sh.in:950
+#: scripts/makepkg.sh.in:957
+msgid "Adding %s..."
+msgstr "Adding %s..."
+
+#: scripts/makepkg.sh.in:945
+msgid "Install script %s not found."
+msgstr "Install script %s not found."
+
+#: scripts/makepkg.sh.in:965
+msgid "Compressing source package..."
+msgstr "Compressing source package..."
+
+#: scripts/makepkg.sh.in:967
+msgid "Failed to create source package file."
+msgstr "Failed to create source package file."
+
+#: scripts/makepkg.sh.in:975
+msgid "Installing package with pacman -U..."
+msgstr "Installing package with pacman -U..."
+
+#: scripts/makepkg.sh.in:992
+msgid "Determining latest darcs revision..."
+msgstr "Determining latest darcs revision..."
+
+#: scripts/makepkg.sh.in:995
+msgid "Determining latest cvs revision..."
+msgstr "Determining latest cvs revision..."
+
+#: scripts/makepkg.sh.in:998
+msgid "Determining latest git revision..."
+msgstr "Determining latest git revision..."
+
+#: scripts/makepkg.sh.in:1001
+msgid "Determining latest svn revision..."
+msgstr "Determining latest svn revision..."
+
+#: scripts/makepkg.sh.in:1004
+msgid "Determining latest bzr revision..."
+msgstr "Determining latest bzr revision..."
+
+#: scripts/makepkg.sh.in:1007
+msgid "Determining latest hg revision..."
+msgstr "Determining latest hg revision..."
+
+#: scripts/makepkg.sh.in:1022
+msgid "Version found: %s"
+msgstr "Version found: %s"
+
+#: scripts/makepkg.sh.in:1053
+msgid "Usage: %s [options]"
+msgstr "Usage: %s [options]"
+
+#: scripts/makepkg.sh.in:1056
+msgid " -A, --ignorearch Ignore incomplete arch field in %s"
+msgstr " -A, --ignorearch Ignore incomplete arch field in %s"
+
+#: scripts/makepkg.sh.in:1057
+msgid " -b, --builddeps Build missing dependencies from source"
+msgstr " -b, --builddeps Build missing dependencies from source"
+
+#: scripts/makepkg.sh.in:1058
+msgid " -c, --clean Clean up work files after build"
+msgstr " -c, --clean Clean up work files after build"
+
+#: scripts/makepkg.sh.in:1059
+msgid " -C, --cleancache Clean up source files from the cache"
+msgstr " -C, --cleancache Clean up source files from the cache"
+
+#: scripts/makepkg.sh.in:1060
+msgid " -d, --nodeps Skip all dependency checks"
+msgstr " -d, --nodeps Skip all dependency checks"
+
+#: scripts/makepkg.sh.in:1061
+msgid " -e, --noextract Do not extract source files (use existing src/ dir)"
+msgstr " -e, --noextract Do not extract source files (use existing src/ dir)"
+
+#: scripts/makepkg.sh.in:1062
+msgid " -f, --force Overwrite existing package"
+msgstr " -f, --force Overwrite existing package"
+
+#: scripts/makepkg.sh.in:1063
+msgid " -g, --geninteg Generate integrity checks for source files"
+msgstr " -g, --geninteg Generate integrity checks for source files"
+
+#: scripts/makepkg.sh.in:1064
+msgid " -h, --help This help"
+msgstr " -h, --help This help"
+
+#: scripts/makepkg.sh.in:1065
+msgid " -i, --install Install package after successful build"
+msgstr " -i, --install Install package after successful build"
+
+#: scripts/makepkg.sh.in:1066
+msgid " -L, --log Log package build process"
+msgstr " -L, --log Log package build process"
+
+#: scripts/makepkg.sh.in:1067
+msgid " -m, --nocolor Disable colorized output messages"
+msgstr " -m, --nocolor Disable colourised output messages"
+
+#: scripts/makepkg.sh.in:1068
+msgid " -o, --nobuild Download and extract files only"
+msgstr " -o, --nobuild Download and extract files only"
+
+#: scripts/makepkg.sh.in:1069
+msgid " -p <buildscript> Use an alternate build script (instead of '%s')"
+msgstr " -p <buildscript> Use an alternate build script (instead of '%s')"
+
+#: scripts/makepkg.sh.in:1070
+msgid " -r, --rmdeps Remove installed dependencies after a successful build"
+msgstr " -r, --rmdeps Remove installed dependencies after a successful build"
+
+#: scripts/makepkg.sh.in:1072
+msgid " -R, --repackage Repackage contents of pkg/ without building"
+msgstr " -R, --repackage Repackage contents of pkg/ without building"
+
+#: scripts/makepkg.sh.in:1073
+msgid " -s, --syncdeps Install missing dependencies with pacman"
+msgstr " -s, --syncdeps Install missing dependencies with pacman"
+
+#: scripts/makepkg.sh.in:1074
+msgid " --asroot Allow makepkg to run as root user"
+msgstr " --asroot Allow makepkg to run as root user"
+
+#: scripts/makepkg.sh.in:1075
+msgid " --source Do not build package; generate a source-only tarball"
+msgstr " --source Do not build package; generate a source-only tarball"
+
+#: scripts/makepkg.sh.in:1077
+msgid "These options can be passed to pacman:"
+msgstr "These options can be passed to pacman:"
+
+#: scripts/makepkg.sh.in:1079
+msgid " --noconfirm Do not ask for confirmation when resolving dependencies"
+msgstr " --noconfirm Do not ask for confirmation when resolving dependencies"
+
+#: scripts/makepkg.sh.in:1080
+msgid " --noprogressbar Do not show a progress bar when downloading files"
+msgstr " --noprogressbar Do not show a progress bar when downloading files"
+
+#: scripts/makepkg.sh.in:1082
+msgid "If -p is not specified, makepkg will look for '%s'"
+msgstr "If -p is not specified, makepkg will look for '%s'"
+
+#: scripts/makepkg.sh.in:1104
+msgid "%s not found."
+msgstr "%s not found."
+
+#: scripts/makepkg.sh.in:1177
+msgid "Sudo is used by default now. The --usesudo option is deprecated!"
+msgstr "Sudo is used by default now. The --usesudo option is deprecated!"
+
+#: scripts/makepkg.sh.in:1192
+msgid "Cleaning up ALL files from %s."
+msgstr "Cleaning up ALL files from %s."
+
+#: scripts/makepkg.sh.in:1193
+msgid " Are you sure you wish to do this? [Y/n] "
+msgstr " Are you sure you wish to do this? [Y/n] "
+
+#: scripts/makepkg.sh.in:1199
+msgid "Problem removing files; you may not have correct permissions in %s"
+msgstr "Problem removing files; you may not have correct permissions in %s"
+
+#: scripts/makepkg.sh.in:1203
+msgid "Source cache cleaned."
+msgstr "Source cache cleaned."
+
+#: scripts/makepkg.sh.in:1208
+msgid "No files have been removed."
+msgstr "No files have been removed."
+
+#: scripts/makepkg.sh.in:1213
+msgid "Source destination must be defined in makepkg.conf."
+msgstr "Source destination must be defined in makepkg.conf."
+
+#: scripts/makepkg.sh.in:1214
+msgid "In addition, please run makepkg -C outside of your cache directory."
+msgstr "In addition, please run makepkg -C outside of your cache directory."
+
+#: scripts/makepkg.sh.in:1220
+msgid "BUILDSCRIPT is undefined! Ensure you have updated %s."
+msgstr "BUILDSCRIPT is undefined! Ensure you have updated %s."
+
+#: scripts/makepkg.sh.in:1227
+msgid "Running makepkg as root is a BAD idea and can cause"
+msgstr "Running makepkg as root is a BAD idea and can cause"
+
+#: scripts/makepkg.sh.in:1228
+msgid "permanent, catastrophic damage to your system. If you"
+msgstr "permanent, catastrophic damage to your system. If you"
+
+#: scripts/makepkg.sh.in:1229
+msgid "wish to run as root, please use the --asroot option."
+msgstr "wish to run as root, please use the --asroot option."
+
+#: scripts/makepkg.sh.in:1233
+msgid "The --asroot option is meant for the root user only."
+msgstr "The --asroot option is meant for the root user only."
+
+#: scripts/makepkg.sh.in:1234
+msgid "Please rerun makepkg without the --asroot flag."
+msgstr "Please rerun makepkg without the --asroot flag."
+
+#: scripts/makepkg.sh.in:1238
+msgid "Fakeroot must be installed if using the 'fakeroot' option"
+msgstr "Fakeroot must be installed if using the 'fakeroot' option"
+
+#: scripts/makepkg.sh.in:1239
+msgid "in the BUILDENV array in %s."
+msgstr "in the BUILDENV array in %s."
+
+#: scripts/makepkg.sh.in:1243
+msgid "Running makepkg as an unprivileged user will result in non-root"
+msgstr "Running makepkg as an unprivileged user will result in non-root"
+
+#: scripts/makepkg.sh.in:1244
+msgid "ownership of the packaged files. Try using the fakeroot environment by"
+msgstr "ownership of the packaged files. Try using the fakeroot environment by"
+
+#: scripts/makepkg.sh.in:1245
+msgid "placing 'fakeroot' in the BUILDENV array in makepkg.conf."
+msgstr "placing 'fakeroot' in the BUILDENV array in makepkg.conf."
+
+#: scripts/makepkg.sh.in:1250
+msgid "Do not use the '-F' option. This option is only for use by makepkg."
+msgstr "Do not use the '-F' option. This option is only for use by makepkg."
+
+#: scripts/makepkg.sh.in:1259
+msgid "Cannot find the sudo binary! Is sudo installed?"
+msgstr "Cannot find the sudo binary! Is sudo installed?"
+
+#: scripts/makepkg.sh.in:1260
+msgid "Missing dependencies cannot be installed or removed as a normal user"
+msgstr "Missing dependencies cannot be installed or removed as a normal user"
+
+#: scripts/makepkg.sh.in:1261
+msgid "without sudo; install and configure sudo to auto-resolve dependencies."
+msgstr "without sudo; install and configure sudo to auto-resolve dependencies."
+
+#: scripts/makepkg.sh.in:1271
+msgid "%s does not exist."
+msgstr "%s does not exist."
+
+#: scripts/makepkg.sh.in:1286
+#: scripts/makepkg.sh.in:1290
+msgid "%s is not allowed to be empty."
+msgstr "%s is not allowed to be empty."
+
+#: scripts/makepkg.sh.in:1294
+#: scripts/makepkg.sh.in:1298
+msgid "%s is not allowed to contain hyphens."
+msgstr "%s is not allowed to contain hyphens."
+
+#: scripts/makepkg.sh.in:1308
+#: scripts/makepkg.sh.in:1313
+msgid "%s is not available for the '%s' architecture."
+msgstr "%s is not available for the '%s' architecture."
+
+#: scripts/makepkg.sh.in:1309
+#: scripts/makepkg.sh.in:1314
+msgid "Note that many packages may need a line added to their %s"
+msgstr "Note that many packages may need a line added to their %s"
+
+#: scripts/makepkg.sh.in:1310
+#: scripts/makepkg.sh.in:1315
+msgid "such as arch=('%s')."
+msgstr "such as arch=('%s')."
+
+#: scripts/makepkg.sh.in:1320
+msgid "Install scriptlet (%s) does not exist."
+msgstr "Install scriptlet (%s) does not exist."
+
+#: scripts/makepkg.sh.in:1330
+msgid "A package has already been built, installing existing package..."
+msgstr "A package has already been built, installing existing package..."
+
+#: scripts/makepkg.sh.in:1334
+#: scripts/makepkg.sh.in:1366
+msgid "A package has already been built. (use -f to overwrite)"
+msgstr "A package has already been built. (use -f to overwrite)"
+
+#: scripts/makepkg.sh.in:1343
+#: scripts/makepkg.sh.in:1442
+msgid "Skipping build."
+msgstr "Skipping build."
+
+#: scripts/makepkg.sh.in:1352
+msgid "Leaving fakeroot environment."
+msgstr "Leaving fakeroot environment."
+
+#: scripts/makepkg.sh.in:1356
+msgid "Making package: %s"
+msgstr "Making package: %s"
+
+#: scripts/makepkg.sh.in:1359
+msgid "Running makepkg as root..."
+msgstr "Running makepkg as root..."
+
+#: scripts/makepkg.sh.in:1370
+msgid "Source package created: %s"
+msgstr "Source package created: %s"
+
+#: scripts/makepkg.sh.in:1377
+msgid "Skipping dependency checks."
+msgstr "Skipping dependency checks."
+
+#: scripts/makepkg.sh.in:1384
+msgid "Checking Runtime Dependencies..."
+msgstr "Checking Runtime Dependencies..."
+
+#: scripts/makepkg.sh.in:1387
+msgid "Checking Buildtime Dependencies..."
+msgstr "Checking Buildtime Dependencies..."
+
+#: scripts/makepkg.sh.in:1391
+msgid "Could not resolve all dependencies."
+msgstr "Could not resolve all dependencies."
+
+#: scripts/makepkg.sh.in:1395
+msgid "pacman was not found in PATH; skipping dependency checks."
+msgstr "pacman was not found in PATH; skipping dependency checks."
+
+#: scripts/makepkg.sh.in:1409
+msgid "Skipping source retrieval -- using existing src/ tree"
+msgstr "Skipping source retrieval -- using existing src/ tree"
+
+#: scripts/makepkg.sh.in:1410
+msgid "Skipping source integrity checks -- using existing src/ tree"
+msgstr "Skipping source integrity checks -- using existing src/ tree"
+
+#: scripts/makepkg.sh.in:1411
+msgid "Skipping source extraction -- using existing src/ tree"
+msgstr "Skipping source extraction -- using existing src/ tree"
+
+#: scripts/makepkg.sh.in:1414
+msgid "The source directory is empty, there is nothing to build!"
+msgstr "The source directory is empty, there is nothing to build!"
+
+#: scripts/makepkg.sh.in:1418
+msgid "The package directory is empty, there is nothing to repackage!"
+msgstr "The package directory is empty, there is nothing to repackage!"
+
+#: scripts/makepkg.sh.in:1429
+msgid "Sources are ready."
+msgstr "Sources are ready."
+
+#: scripts/makepkg.sh.in:1434
+msgid "Removing existing pkg/ directory..."
+msgstr "Removing existing pkg/ directory..."
+
+#: scripts/makepkg.sh.in:1451
+msgid "Entering fakeroot environment..."
+msgstr "Entering fakeroot environment..."
+
+#: scripts/makepkg.sh.in:1464
+msgid "Finished making: %s"
+msgstr "Finished making: %s"
+
+#: scripts/pacman-optimize.sh.in:44
+msgid "Usage: %s [pacman_db_root]"
+msgstr "Usage: %s [pacman_db_root]"
+
+#: scripts/pacman-optimize.sh.in:45
+msgid ""
+"pacman-optimize is a little hack that should improve the performance\\n"
+"of pacman when reading/writing to its filesystem-based database.\\n"
+"\\n"
+msgstr ""
+"pacman-optimize is a little hack that should improve the performance\\n"
+"of pacman when reading/writing to its filesystem-based database.\\n"
+"\\n"
+
+#: scripts/pacman-optimize.sh.in:48
+msgid ""
+"Because pacman uses many small files to keep track of packages,\\n"
+"there is a tendency for these files to become fragmented over time.\\n"
+"This script attempts to relocate these small files into one\\n"
+"continuous location on your hard drive. The result is that the hard\\n"
+"drive should be able to read them faster, since the hard drive head\\n"
+"does not have to move around the disk as much.\\n"
+msgstr ""
+"Because pacman uses many small files to keep track of packages,\\n"
+"there is a tendency for these files to become fragmented over time.\\n"
+"This script attempts to relocate these small files into one\\n"
+"continuous location on your hard drive. The result is that the hard\\n"
+"drive should be able to read them faster, since the hard drive head\\n"
+"does not have to move around the disk as much.\\n"
+
+#: scripts/pacman-optimize.sh.in:91
+msgid "diff tool was not found, please install diffutils."
+msgstr "diff tool was not found, please install diffutils."
+
+#: scripts/pacman-optimize.sh.in:96
+msgid "Pacman lock file was found. Cannot run while pacman is running."
+msgstr "Pacman lock file was found. Cannot run while pacman is running."
+
+#: scripts/pacman-optimize.sh.in:104
+msgid "You must have correct permissions to optimize the database."
+msgstr "You must have correct permissions to optimise the database."
+
+#: scripts/pacman-optimize.sh.in:108
+msgid "ERROR: Can not create temp directory for database building."
+msgstr "ERROR: Can not create temp directory for database building."
+
+#: scripts/pacman-optimize.sh.in:114
+msgid "MD5sum'ing the old database..."
+msgstr "MD5sum'ing the old database..."
+
+#: scripts/pacman-optimize.sh.in:118
+msgid "Tar'ing up %s..."
+msgstr "Tar'ing up %s..."
+
+#: scripts/pacman-optimize.sh.in:123
+msgid "Tar'ing up %s failed."
+msgstr "Tar'ing up %s failed."
+
+#: scripts/pacman-optimize.sh.in:127
+msgid "Making and MD5sum'ing the new db..."
+msgstr "Making and MD5sum'ing the new db..."
+
+#: scripts/pacman-optimize.sh.in:132
+msgid "Untar'ing %s failed."
+msgstr "Untar'ing %s failed."
+
+#: scripts/pacman-optimize.sh.in:138
+msgid "Checking integrity..."
+msgstr "Checking integrity..."
+
+#: scripts/pacman-optimize.sh.in:144
+msgid "Integrity check FAILED, reverting to old database."
+msgstr "Integrity check FAILED, reverting to old database."
+
+#: scripts/pacman-optimize.sh.in:149
+msgid "Putting the new database in place..."
+msgstr "Putting the new database in place..."
+
+#: scripts/pacman-optimize.sh.in:158
+msgid "Finished. Your pacman database has been optimized."
+msgstr "Finished. Your pacman database has been optimised."
+
+#: scripts/pacman-optimize.sh.in:159
+msgid "For full benefits of pacman-optimize, run 'sync' now."
+msgstr "For full benefits of pacman-optimize, run 'sync' now."
+
+#: scripts/repo-add.sh.in:56
+msgid ""
+"Usage: %s <path-to-db> [--force] <package> ...\\n"
+"\\n"
+msgstr ""
+"Usage: %s <path-to-db> [--force] <package> ...\\n"
+"\\n"
+
+#: scripts/repo-add.sh.in:57
+msgid ""
+"repo-add will update a package database by reading a package file.\\n"
+"Multiple packages to add can be specified on the command line.\\n"
+"\\n"
+msgstr ""
+"repo-add will update a package database by reading a package file.\\n"
+"Multiple packages to add can be specified on the command line.\\n"
+"\\n"
+
+#: scripts/repo-add.sh.in:60
+msgid ""
+"The --force flag will add a 'force' entry to the sync database, which\\n"
+"tells pacman to skip its internal version number checking and update\\n"
+"the package regardless.\\n"
+"\\n"
+msgstr ""
+"The --force flag will add a 'force' entry to the sync database, which\\n"
+"tells pacman to skip its internal version number checking and update\\n"
+"the package regardless.\\n"
+"\\n"
+
+#: scripts/repo-add.sh.in:64
+msgid "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
+msgstr "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
+
+#: scripts/repo-add.sh.in:69
+msgid ""
+"Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\\n"
+"\\n"
+"This is free software; see the source for copying conditions.\\n"
+"There is NO WARRANTY, to the extent permitted by law.\\n"
+msgstr ""
+"Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\\n"
+"\\n"
+"This is free software; see the source for copying conditions.\\n"
+"There is NO WARRANTY, to the extent permitted by law.\\n"
+
+#: scripts/repo-add.sh.in:173
+msgid "Invalid package file '%s'."
+msgstr "Invalid package file '%s'."
+
+#: scripts/repo-add.sh.in:182
+#: scripts/repo-remove.sh.in:91
+msgid "Removing existing package '%s'..."
+msgstr "Removing existing package '%s'..."
+
+#: scripts/repo-add.sh.in:192
+msgid "Creating 'desc' db entry..."
+msgstr "Creating 'desc' db entry..."
+
+#: scripts/repo-add.sh.in:202
+msgid "Computing md5 checksums..."
+msgstr "Computing md5 checksums..."
+
+#: scripts/repo-add.sh.in:214
+msgid "Creating 'depends' db entry..."
+msgstr "Creating 'depends' db entry..."
+
+#: scripts/repo-add.sh.in:230
+msgid "Creating 'deltas' db entry..."
+msgstr "Creating 'deltas' db entry..."
+
+#: scripts/repo-add.sh.in:236
+msgid "Added delta '%s'"
+msgstr "Added delta '%s'"
+
+#: scripts/repo-add.sh.in:238
+msgid "Could not add delta '%s'"
+msgstr "Could not add delta '%s'"
+
+#: scripts/repo-add.sh.in:276
+#: scripts/repo-remove.sh.in:123
+msgid "%s not found. Cannot continue."
+msgstr "%s not found. Cannot continue."
+
+#: scripts/repo-add.sh.in:286
+#: scripts/repo-remove.sh.in:133
+msgid "Cannot create temp directory for database building."
+msgstr "Cannot create temp directory for database building."
+
+#: scripts/repo-add.sh.in:297
+#: scripts/repo-remove.sh.in:142
+msgid "Repository file '%s' is not a proper pacman database."
+msgstr "Repository file '%s' is not a proper pacman database."
+
+#: scripts/repo-add.sh.in:300
+#: scripts/repo-remove.sh.in:145
+msgid "Extracting database to a temporary location..."
+msgstr "Extracting database to a temporary location..."
+
+#: scripts/repo-add.sh.in:306
+msgid "'%s' is not a package file, skipping"
+msgstr "'%s' is not a package file, skipping"
+
+#: scripts/repo-add.sh.in:308
+msgid "Adding package '%s'"
+msgstr "Adding package '%s'"
+
+#: scripts/repo-add.sh.in:315
+msgid "Package '%s' not found."
+msgstr "Package '%s' not found."
+
+#: scripts/repo-add.sh.in:322
+msgid "Creating updated database file %s"
+msgstr "Creating updated database file %s"
+
+#: scripts/repo-add.sh.in:332
+#: scripts/repo-remove.sh.in:170
+msgid "No compression set."
+msgstr "No compression set."
+
+#: scripts/repo-add.sh.in:340
+#: scripts/repo-remove.sh.in:178
+msgid "No packages modified, nothing to do."
+msgstr "No packages modified, nothing to do."
+
+#: scripts/repo-remove.sh.in:55
+msgid ""
+"repo-remove %s\\n"
+"\\n"
+msgstr ""
+"repo-remove %s\\n"
+"\\n"
+
+#: scripts/repo-remove.sh.in:56
+msgid ""
+"usage: %s <path-to-db> <packagename> ...\\n"
+"\\n"
+msgstr ""
+"usage: %s <path-to-db> <packagename> ...\\n"
+"\\n"
+
+#: scripts/repo-remove.sh.in:57
+msgid ""
+"repo-remove will update a package database by removing the package name\\n"
+"specified on the command line from the given repo database. Multiple\\n"
+"packages to remove can be specified on the command line.\\n"
+"\\n"
+msgstr ""
+"repo-remove will update a package database by removing the package name\\n"
+"specified on the command line from the given repo database. Multiple\\n"
+"packages to remove can be specified on the command line.\\n"
+"\\n"
+
+#: scripts/repo-remove.sh.in:61
+msgid "Example: repo-remove /path/to/repo.db.tar.gz kernel26"
+msgstr "Example: repo-remove /path/to/repo.db.tar.gz kernel26"
+
+#: scripts/repo-remove.sh.in:149
+msgid "Searching for package '%s'..."
+msgstr "Searching for package '%s'..."
+
+#: scripts/repo-remove.sh.in:154
+msgid "Package matching '%s' not found."
+msgstr "Package matching '%s' not found."
+
+#: scripts/repo-remove.sh.in:161
+msgid "Creating updated database file '%s'..."
+msgstr "Creating updated database file '%s'..."
+
+#: scripts/updatesync.sh.in:35
+msgid "Usage: %s <action> <destfile> <option> [package_directory]"
+msgstr "Usage: %s <action> <destfile> <option> [package_directory]"
+
+#: scripts/updatesync.sh.in:36
+msgid ""
+"updatesync will update a sync database by reading a PKGBUILD and\\n"
+"modifying the destfile. updatesync updates the database in a temporary\\n"
+"directory and then compresses it to <destfile>.\\n"
+"\\n"
+msgstr ""
+"updatesync will update a sync database by reading a PKGBUILD and\\n"
+"modifying the destfile. updatesync updates the database in a temporary\\n"
+"directory and then compresses it to <destfile>.\\n"
+"\\n"
+
+#: scripts/updatesync.sh.in:40
+msgid ""
+"There are two types of actions:\\n"
+"\\n"
+msgstr ""
+"There are two types of actions:\\n"
+"\\n"
+
+#: scripts/updatesync.sh.in:41
+msgid ""
+"upd - Will update a package's entry or create it if it doesn't exist.\\n"
+" It takes the package's PKGBUILD as an option.\\n"
+msgstr ""
+"upd - Will update a package's entry or create it if it doesn't exist.\\n"
+" It takes the package's PKGBUILD as an option.\\n"
+
+#: scripts/updatesync.sh.in:42
+msgid ""
+"del - Will remove a package's entry from the db. It takes the package's\\n"
+" name as an option.\\n"
+msgstr ""
+"del - Will remove a package's entry from the db. It takes the package's\\n"
+" name as an option.\\n"
+
+#: scripts/updatesync.sh.in:44
+msgid ""
+"updatesync will calculate md5sums of packages in the same directory as\\n"
+"<destfile>, unless an alternate [package_directory] is specified.\\n"
+"\\n"
+msgstr ""
+"updatesync will calculate md5sums of packages in the same directory as\\n"
+"<destfile>, unless an alternate [package_directory] is specified.\\n"
+"\\n"
+
+#: scripts/updatesync.sh.in:47
+msgid "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
+msgstr "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
+
+#: scripts/updatesync.sh.in:53
+msgid ""
+"Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\\n"
+"\\n"
+"This is free software; see the source for copying conditions.\\n"
+"There is NO WARRANTY, to the extent permitted by law.\\n"
+msgstr ""
+"Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\\n"
+"\\n"
+"This is free software; see the source for copying conditions.\\n"
+"There is NO WARRANTY, to the extent permitted by law.\\n"
+
+#: scripts/updatesync.sh.in:123
+msgid "%s not found"
+msgstr "%s not found"
+
+#: scripts/updatesync.sh.in:129
+msgid "failed to parse %s"
+msgstr "failed to parse %s"
+
+#: scripts/updatesync.sh.in:136
+msgid "could not find %s-%s-%s-%s.%s - aborting"
+msgstr "could not find %s-%s-%s-%s.%s - aborting"
+
+#~ msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
+#~ msgstr ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
+#~ msgid "usage: %s {-R --remove} [options] <package>\n"
+#~ msgstr "usage: %s {-R --remove} [options] <package>\n"
+#~ msgid "Total Package Size: %.2f MB\n"
+#~ msgstr "Total Package Size: %.2f MB\n"
+#~ msgid ""
+#~ " --ask <number> pre-specify answers for questions (see manpage)\n"
+#~ msgstr ""
+#~ " --ask <number> pre-specify answers for questions (see manpage)\n"
+#~ msgid "Do you want to remove all packages from cache? [Y/n] "
+#~ msgstr "Do you want to remove all packages from cache? [Y/n] "
+
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 00000000..7224a12c
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,2265 @@
+# translation of es.po to Spanish
+# Spanish translation for pacman package.
+# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
+# This file is distributed under the same license as the Pacman package manager package.
+#
+# Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: es\n"
+"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: 2007-07-23 00:22-0400\n"
+"Last-Translator: Juan Pablo González Tognarelli <jotapesan@gmail.com>\n"
+"Language-Team: <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
+"X-Poedit-Country: CHILE\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: src/pacman/add.c:42 src/pacman/remove.c:44
+#, fuzzy, c-format
+msgid "failed to release transaction (%s)\n"
+msgstr "fallo al preparar operación (%s)\n"
+
+#: src/pacman/add.c:79 src/pacman/query.c:372 src/pacman/remove.c:65
+#: src/pacman/sync.c:753
+msgid "no targets specified (use -h for help)\n"
+msgstr "no se especificaron objetivos (use -h para ayuda)\n"
+
+#: src/pacman/add.c:106 src/pacman/sync.c:508
+#, c-format
+msgid "error: %s\n"
+msgstr ""
+
+#: src/pacman/add.c:109 src/pacman/remove.c:100 src/pacman/sync.c:482
+#, fuzzy, c-format
+msgid ""
+" if you're sure a package manager is not already\n"
+" running, you can remove %s.\n"
+msgstr ""
+" Si está seguro que no se está ejecutando pacman,\n"
+" puede eliminar %s%s\n"
+
+#: src/pacman/add.c:116 src/pacman/remove.c:108
+#, c-format
+msgid "loading package data... "
+msgstr "Cargando información del paquete..."
+
+#: src/pacman/add.c:120
+#, fuzzy, c-format
+msgid "error: failed to add target '%s' (%s)"
+msgstr "fallo al procesar '%s' (%s)"
+
+#: src/pacman/add.c:126 src/pacman/remove.c:120 src/pacman/sync.c:174
+#: src/pacman/sync.c:192
+#, c-format
+msgid "done.\n"
+msgstr "Hecho.\n"
+
+#: src/pacman/add.c:131 src/pacman/remove.c:124 src/pacman/sync.c:614
+#, fuzzy, c-format
+msgid "error: failed to prepare transaction (%s)\n"
+msgstr "fallo al preparar operación (%s)\n"
+
+#: src/pacman/add.c:143 src/pacman/remove.c:132 src/pacman/sync.c:623
+#, fuzzy, c-format
+msgid ":: %s: requires %s\n"
+msgstr ":: %s: necesita %s"
+
+#: src/pacman/add.c:151
+#, c-format
+msgid ":: %s: conflicts with %s"
+msgstr ":: %s: posee conflictos con %s"
+
+#: src/pacman/add.c:160 src/pacman/sync.c:686
+#, c-format
+msgid "%s exists in both '%s' and '%s'\n"
+msgstr "%s existe en '%s' y '%s'\n"
+
+#: src/pacman/add.c:166 src/pacman/sync.c:692
+#, c-format
+msgid "%s: %s exists in filesystem\n"
+msgstr "%s: %s existe en el sistema de archivos\n"
+
+#: src/pacman/add.c:172
+#, fuzzy, c-format
+msgid ""
+"\n"
+"errors occurred, no packages were upgraded.\n"
+msgstr "ocurrieron errores, no se actualizaron paquetes\n"
+
+#: src/pacman/add.c:186 src/pacman/remove.c:171 src/pacman/sync.c:677
+#, fuzzy, c-format
+msgid "error: failed to commit transaction (%s)\n"
+msgstr "no se pudo iniciar la operación (%s)\n"
+
+#: src/pacman/callback.c:163
+#, fuzzy, c-format
+msgid "checking dependencies...\n"
+msgstr "comprobando dependencias... "
+
+#: src/pacman/callback.c:167
+#, fuzzy, c-format
+msgid "checking for file conflicts...\n"
+msgstr "verificando existencia de conflictos entre archivos... "
+
+#: src/pacman/callback.c:171
+#, fuzzy, c-format
+msgid "resolving dependencies...\n"
+msgstr "resolviendo dependencias... "
+
+#: src/pacman/callback.c:174
+#, fuzzy, c-format
+msgid "looking for inter-conflicts...\n"
+msgstr "verificando conflictos... "
+
+#: src/pacman/callback.c:178
+#, fuzzy, c-format
+msgid "installing %s...\n"
+msgstr "instalando %s..."
+
+#: src/pacman/callback.c:189
+#, fuzzy, c-format
+msgid "removing %s...\n"
+msgstr "quitando %s..."
+
+#: src/pacman/callback.c:200
+#, fuzzy, c-format
+msgid "upgrading %s...\n"
+msgstr "actualizando %s... "
+
+#: src/pacman/callback.c:211
+#, fuzzy, c-format
+msgid "checking package integrity...\n"
+msgstr "Verificando la integridad de los paquetes... "
+
+#: src/pacman/callback.c:214
+#, fuzzy, c-format
+msgid "checking delta integrity...\n"
+msgstr "Verificando la integridad de los paquetes... "
+
+#: src/pacman/callback.c:217
+#, c-format
+msgid "applying deltas...\n"
+msgstr ""
+
+#: src/pacman/callback.c:220
+#, fuzzy, c-format
+msgid "generating %s with %s... "
+msgstr "actualizando %s... "
+
+#: src/pacman/callback.c:223
+#, c-format
+msgid "success!\n"
+msgstr ""
+
+#: src/pacman/callback.c:226
+#, c-format
+msgid "failed.\n"
+msgstr "falló.\n"
+
+#: src/pacman/callback.c:235
+#, c-format
+msgid ":: Retrieving packages from %s...\n"
+msgstr ":: Descargando paquetes desde %s...\n"
+
+#: src/pacman/callback.c:263
+#, fuzzy, c-format
+msgid ""
+":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway? [Y/"
+"n] "
+msgstr ""
+":: %1$s requiere %2$s que en los paquetes a ignorar (IgnorePkg). ¿Instalar %2"
+"$s? [Y/n] "
+
+#: src/pacman/callback.c:268
+#, fuzzy, c-format
+msgid ":: %s is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+msgstr ":: %s está en IgnorePkg. ¿Instalar de todas formas? [Y/n] "
+
+#: src/pacman/callback.c:274
+#, c-format
+msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
+msgstr ":: %s está indicado como HoldPkg. ¿Quitar de todas formas? [Y/n] "
+
+#: src/pacman/callback.c:279
+#, c-format
+msgid ":: Replace %s with %s/%s? [Y/n] "
+msgstr ":: ¿Reemplazar %s con %s/%s? [Y/n] "
+
+#: src/pacman/callback.c:286
+#, c-format
+msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
+msgstr ":: %s provoca conflictos con %s. ¿Quitar %s? [Y/n]"
+
+#: src/pacman/callback.c:294
+#, c-format
+msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
+msgstr ""
+":: %s-%s: la versión local es mas reciente. ¿Actualizar de todas formas? [Y/"
+"n] "
+
+#: src/pacman/callback.c:304
+#, fuzzy, c-format
+msgid ":: File %s is corrupted. Do you want to delete it? [Y/n] "
+msgstr ":: El Archivo %s está corrupto. Desea borrarlo? [Y/n] "
+
+#: src/pacman/callback.c:354
+msgid "installing"
+msgstr "instalando"
+
+#: src/pacman/callback.c:357
+msgid "upgrading"
+msgstr "actualizando"
+
+#: src/pacman/callback.c:360
+msgid "removing"
+msgstr "quitando"
+
+#: src/pacman/callback.c:363
+msgid "checking for file conflicts"
+msgstr "verificando conflictos entre archivos"
+
+#: src/pacman/package.c:68
+msgid "Explicitly installed"
+msgstr ""
+
+#: src/pacman/package.c:71
+msgid "Installed as a dependency for another package"
+msgstr ""
+
+#: src/pacman/package.c:74
+msgid "Unknown"
+msgstr ""
+
+#: src/pacman/package.c:89
+msgid "Description : "
+msgstr ""
+
+#: src/pacman/package.c:93
+#, fuzzy
+msgid "Filename :"
+msgstr "Licencia :"
+
+#: src/pacman/package.c:95
+#, fuzzy
+msgid "Name :"
+msgstr "Elimina :"
+
+#: src/pacman/package.c:96
+#, fuzzy
+msgid "Version :"
+msgstr "Versión : %s\n"
+
+#: src/pacman/package.c:97
+#, fuzzy
+msgid "URL :"
+msgstr "URL : %s\n"
+
+#: src/pacman/package.c:98
+#, fuzzy
+msgid "Licenses :"
+msgstr "Licencia :"
+
+#: src/pacman/package.c:99
+msgid "Groups :"
+msgstr "Grupos :"
+
+#: src/pacman/package.c:100
+msgid "Provides :"
+msgstr "Provee :"
+
+#: src/pacman/package.c:101
+msgid "Depends On :"
+msgstr "Depende De :"
+
+#: src/pacman/package.c:102
+msgid "Optional Deps :"
+msgstr ""
+
+#: src/pacman/package.c:105
+msgid "Required By :"
+msgstr "Requerido por :"
+
+#: src/pacman/package.c:108
+msgid "Conflicts With :"
+msgstr "Conflictos con :"
+
+#: src/pacman/package.c:109
+msgid "Replaces :"
+msgstr "Reemplaza :"
+
+#: src/pacman/package.c:111
+#, c-format
+msgid "Download Size : %6.2f K\n"
+msgstr "Tamaño de la descarga : %6.2f K\n"
+
+#: src/pacman/package.c:115
+#, fuzzy, c-format
+msgid "Compressed Size: %6.2f K\n"
+msgstr "Tamaño instalado : %6.2f K\n"
+
+#: src/pacman/package.c:119
+#, c-format
+msgid "Installed Size : %6.2f K\n"
+msgstr "Tamaño instalado : %6.2f K\n"
+
+#: src/pacman/package.c:121
+#, fuzzy
+msgid "Packager :"
+msgstr "Empaquetador : %s\n"
+
+#: src/pacman/package.c:122
+#, fuzzy
+msgid "Architecture :"
+msgstr "Arquitectura : %s\n"
+
+#: src/pacman/package.c:123
+#, fuzzy
+msgid "Build Date :"
+msgstr "Fecha de compilación : %s %s\n"
+
+#: src/pacman/package.c:125
+#, fuzzy
+msgid "Install Date :"
+msgstr "Fecha de instalación : %s %s\n"
+
+#: src/pacman/package.c:126
+#, fuzzy
+msgid "Install Reason :"
+msgstr "Tipo de instalación : %s\n"
+
+#: src/pacman/package.c:129
+#, fuzzy
+msgid "Install Script :"
+msgstr "Script de instalación: %s\n"
+
+#: src/pacman/package.c:130
+msgid "Yes"
+msgstr "Si"
+
+#: src/pacman/package.c:130
+msgid "No"
+msgstr "No"
+
+#: src/pacman/package.c:135
+#, fuzzy
+msgid "MD5 Sum :"
+msgstr "Hash MD5 Sum : %s"
+
+#: src/pacman/package.c:159
+#, fuzzy
+msgid "Repository :"
+msgstr "Repositorio : %s\n"
+
+#: src/pacman/package.c:169
+#, c-format
+msgid "Backup Files:\n"
+msgstr "Archivos de respaldo:\n"
+
+#: src/pacman/package.c:189
+#, fuzzy, c-format
+msgid "error: could not calculate checksums for %s\n"
+msgstr "error calculando la verificación para %s\n"
+
+#: src/pacman/package.c:197
+#, c-format
+msgid "MODIFIED\t%s\n"
+msgstr "MODIFICADO\t%s\n"
+
+#: src/pacman/package.c:199
+#, c-format
+msgid "Not Modified\t%s\n"
+msgstr "No Modificado\t%s\n"
+
+#: src/pacman/package.c:203
+#, c-format
+msgid "MISSING\t\t%s\n"
+msgstr "FALTANTE\t\t%s\n"
+
+#: src/pacman/package.c:209
+#, c-format
+msgid "(none)\n"
+msgstr "(nada)\n"
+
+#: src/pacman/package.c:244
+#, fuzzy, c-format
+msgid "error: no changelog available for '%s'.\n"
+msgstr "No hay registro de cambios para '%s'.\n"
+
+#: src/pacman/pacman.c:62
+msgid "options"
+msgstr "opciones"
+
+#: src/pacman/pacman.c:63
+msgid "file"
+msgstr "archivo"
+
+#: src/pacman/pacman.c:64
+msgid "package"
+msgstr "paquete"
+
+#: src/pacman/pacman.c:65
+msgid "usage"
+msgstr "uso"
+
+#: src/pacman/pacman.c:66
+msgid "operation"
+msgstr "operación"
+
+#: src/pacman/pacman.c:78
+#, c-format
+msgid ""
+"\n"
+"use '%s --help' with other options for more syntax\n"
+msgstr ""
+"\n"
+"digite '%s --help' con otra opción para ayuda más específica\n"
+
+#: src/pacman/pacman.c:83 src/pacman/pacman.c:97 src/pacman/pacman.c:119
+#, fuzzy, c-format
+msgid " --asdeps install packages as non-explicitly installed\n"
+msgstr ""
+" -u, --upgrades muestra todos los paquetes que pueden ser "
+"actualizados\n"
+
+#: src/pacman/pacman.c:84 src/pacman/pacman.c:90 src/pacman/pacman.c:98
+#: src/pacman/pacman.c:121
+#, c-format
+msgid " -d, --nodeps skip dependency checks\n"
+msgstr " -d, --nodeps salta la verificación de dependencias \n"
+
+#: src/pacman/pacman.c:85 src/pacman/pacman.c:99 src/pacman/pacman.c:123
+#, c-format
+msgid " -f, --force force install, overwrite conflicting files\n"
+msgstr ""
+" -f, --force fuerza la instalación, sobreescribiendo los archivos "
+"en conflicto\n"
+
+#: src/pacman/pacman.c:89
+#, c-format
+msgid ""
+" -c, --cascade remove packages and all packages that depend on them\n"
+msgstr ""
+" -c, --cascade quita paquetes, junto a todos los que dependan de "
+"estos\n"
+
+#: src/pacman/pacman.c:91
+#, c-format
+msgid ""
+" -k, --dbonly only remove database entry, do not remove files\n"
+msgstr ""
+" -k, --dbonly sólo quita la referencia en la base de datos. No "
+"elimina archivos\n"
+
+#: src/pacman/pacman.c:92
+#, c-format
+msgid " -n, --nosave remove configuration files as well\n"
+msgstr " -n, --nosave quita también los archivos de configuración\n"
+
+#: src/pacman/pacman.c:93
+#, c-format
+msgid ""
+" -s, --recursive remove dependencies also (that won't break packages)\n"
+msgstr ""
+" -s, --recursive quita también las dependencias (que no quiebren a "
+"otros paquetes)\n"
+
+#: src/pacman/pacman.c:103
+#, c-format
+msgid " -c, --changelog view the changelog of a package\n"
+msgstr " -c, --changelog muestra el registro de cambios de un paquete\n"
+
+#: src/pacman/pacman.c:104
+#, fuzzy, c-format
+msgid " -d, --deps list all packages installed as dependencies\n"
+msgstr ""
+" -u, --upgrades muestra todos los paquetes que pueden ser "
+"actualizados\n"
+
+#: src/pacman/pacman.c:105
+#, fuzzy, c-format
+msgid " -e, --explicit list all packages explicitly installed\n"
+msgstr ""
+" -u, --upgrades muestra todos los paquetes que pueden ser "
+"actualizados\n"
+
+#: src/pacman/pacman.c:106 src/pacman/pacman.c:124
+#, c-format
+msgid " -g, --groups view all members of a package group\n"
+msgstr ""
+" -g, --groups muestra todos los elementos del grupo de paquetes \n"
+
+#: src/pacman/pacman.c:107
+#, fuzzy, c-format
+msgid ""
+" -i, --info view package information (-ii for backup files)\n"
+msgstr " -i, --info ver la información del paquete\n"
+
+#: src/pacman/pacman.c:108
+#, c-format
+msgid " -l, --list list the contents of the queried package\n"
+msgstr ""
+" -l, --list lista los archivos contenidos en los paquetes "
+"consultados\n"
+
+#: src/pacman/pacman.c:109
+#, c-format
+msgid ""
+" -m, --foreign list installed packages not found in sync db(s)\n"
+msgstr ""
+" -m, --foreign lista paquetes instalados no encontrados en las "
+"listas de paquetes\n"
+
+#: src/pacman/pacman.c:110
+#, c-format
+msgid " -o, --owns <file> query the package that owns <file>\n"
+msgstr ""
+" -o, --owns <file> consulta el paquete que contiene el archivo "
+"indicado\n"
+
+#: src/pacman/pacman.c:111
+#, c-format
+msgid " -p, --file <package> query a package file instead of the database\n"
+msgstr ""
+" -p, --file <paquete> consulta un archivo de paquetes en lugar de la base "
+"de datos\n"
+
+#: src/pacman/pacman.c:112
+#, c-format
+msgid ""
+" -s, --search <regex> search locally-installed packages for matching "
+"strings\n"
+msgstr ""
+" -s, --search <busca> busca paquetes instalados localmente que coincidan "
+"con la cadena\n"
+
+#: src/pacman/pacman.c:113
+#, fuzzy, c-format
+msgid " -t, --orphans list all packages not required by any package\n"
+msgstr ""
+" -e, --orphans lista todos los paquetes instalados como "
+"dependencias, que ya no lo son\n"
+" requerido por cualquier paquete\n"
+
+#: src/pacman/pacman.c:114
+#, c-format
+msgid " -u, --upgrades list all packages that can be upgraded\n"
+msgstr ""
+" -u, --upgrades muestra todos los paquetes que pueden ser "
+"actualizados\n"
+
+#: src/pacman/pacman.c:115 src/pacman/pacman.c:136
+#, c-format
+msgid " -q --quiet show less information for query and search\n"
+msgstr ""
+
+#: src/pacman/pacman.c:120
+#, c-format
+msgid ""
+" -c, --clean remove old packages from cache directory (-cc for "
+"all)\n"
+msgstr ""
+" -c, --clean elimina paquetes antiguos del directorio de la cache "
+"(-cc para todos los paquetes)\n"
+
+#: src/pacman/pacman.c:122
+#, c-format
+msgid " -e, --dependsonly install dependencies only\n"
+msgstr " -e, --dependsonly instala sólo dependencias\n"
+
+#: src/pacman/pacman.c:125
+#, c-format
+msgid " -i, --info view package information\n"
+msgstr " -i, --info ver la información del paquete\n"
+
+#: src/pacman/pacman.c:126
+#, c-format
+msgid " -l, --list <repo> view a list of packages in a repo\n"
+msgstr " -l, --list <repo> ve una lista de paquetes en un repositorio\n"
+
+#: src/pacman/pacman.c:127
+#, c-format
+msgid ""
+" -p, --print-uris print out URIs for given packages and their "
+"dependencies\n"
+msgstr ""
+" -p, --print-uris muestra las URIs (nombres de paquetes) para los "
+"archivos indicados y sus dependencias\n"
+
+#: src/pacman/pacman.c:128
+#, c-format
+msgid ""
+" -s, --search <regex> search remote repositories for matching strings\n"
+msgstr ""
+" -s, --search <busca> busca en los repositorios remotos por coincidencias "
+"de la cadena especificada.\n"
+
+#: src/pacman/pacman.c:129
+#, c-format
+msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
+msgstr ""
+" -u, --sysupgrade actualiza todos los paquetes que no están al día\n"
+
+#: src/pacman/pacman.c:130
+#, c-format
+msgid ""
+" -w, --downloadonly download packages but do not install/upgrade "
+"anything\n"
+msgstr ""
+" -w, --downloadonly sólo descarga los paquetes, sin instalar/actualizar "
+"nada\n"
+
+#: src/pacman/pacman.c:131
+#, c-format
+msgid ""
+" -y, --refresh download fresh package databases from the server\n"
+msgstr ""
+" -y, --refresh descarga bases de datos actualizadas desde el "
+"servidor\n"
+
+#: src/pacman/pacman.c:132
+#, c-format
+msgid ""
+" --needed only install outdated or not yet installed packages\n"
+msgstr ""
+
+#: src/pacman/pacman.c:133
+#, c-format
+msgid ""
+" --ignore <pkg> ignore a package upgrade (can be used more than "
+"once)\n"
+msgstr ""
+" --ignore <pkg> ignora una actualización de paquete (puede ser usado "
+"más de una vez)\n"
+
+#: src/pacman/pacman.c:134
+#, fuzzy, c-format
+msgid ""
+" --ignoregroup <grp>\n"
+" ignore a group upgrade (can be used more than once)\n"
+msgstr ""
+" --ignore <pkg> ignora una actualización de paquete (puede ser usado "
+"más de una vez)\n"
+
+#: src/pacman/pacman.c:138
+#, c-format
+msgid " --config <path> set an alternate configuration file\n"
+msgstr " --config <ruta> define un archivo de configuración alterno\n"
+
+#: src/pacman/pacman.c:139
+#, fuzzy, c-format
+msgid " --logfile <path> set an alternate log file\n"
+msgstr " --config <ruta> define un archivo de configuración alterno\n"
+
+#: src/pacman/pacman.c:140
+#, c-format
+msgid " --noconfirm do not ask for any confirmation\n"
+msgstr " --noconfirm no solicita confirmación alguna\n"
+
+#: src/pacman/pacman.c:141
+#, c-format
+msgid ""
+" --noprogressbar do not show a progress bar when downloading files\n"
+msgstr ""
+" --noprogressbar no muestra la barra de progreso cuando descarga "
+"archivos\n"
+
+#: src/pacman/pacman.c:142
+#, c-format
+msgid ""
+" --noscriptlet do not execute the install scriptlet if one exists\n"
+msgstr ""
+" --noscriptlet no ejecuta el script de instalación si existe alguno\n"
+
+#: src/pacman/pacman.c:143
+#, c-format
+msgid " -v, --verbose be verbose\n"
+msgstr " -v, --verbose mostrar todo\n"
+
+#: src/pacman/pacman.c:144
+#, c-format
+msgid " -r, --root <path> set an alternate installation root\n"
+msgstr " -r, --root <path> define una raiz alterna para la instalación\n"
+
+#: src/pacman/pacman.c:145
+#, c-format
+msgid " -b, --dbpath <path> set an alternate database location\n"
+msgstr ""
+" -b, --dbpath <path> define una localización alternativa de la base de "
+"datos\n"
+
+#: src/pacman/pacman.c:146
+#, c-format
+msgid " --cachedir <dir> set an alternate package cache location\n"
+msgstr ""
+" --cachedir <dir> define una ruta alternativa para la localización de "
+"los archivos\n"
+
+#: src/pacman/pacman.c:159
+#, c-format
+msgid ""
+" This program may be freely redistributed under\n"
+" the terms of the GNU General Public License\n"
+msgstr ""
+" Este programa puede ser libremente distribuido bajo\n"
+" los términos de la licencia GNU General Public "
+"License\n"
+
+#: src/pacman/pacman.c:250
+#, c-format
+msgid "problem setting rootdir '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:267
+#, c-format
+msgid "problem setting dbpath '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:275
+#, c-format
+msgid "problem setting logfile '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:384
+#, fuzzy, c-format
+msgid "'%s' is not a valid debug level\n"
+msgstr "'%s' no es un nivel de depuración válido"
+
+#: src/pacman/pacman.c:398 src/pacman/pacman.c:677
+#, fuzzy, c-format
+msgid "problem adding cachedir '%s' (%s)\n"
+msgstr "fallo al procesar '%s' (%s)\n"
+
+#: src/pacman/pacman.c:484
+msgid "only one operation may be used at a time\n"
+msgstr "sólo una operación puede utilizarse a la vez\n"
+
+#: src/pacman/pacman.c:544
+#, c-format
+msgid "config file %s could not be read.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:580
+#, c-format
+msgid "config file %s, line %d: bad section name.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:602
+#, c-format
+msgid "config file %s, line %d: syntax error in config file- missing key.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:612
+#, c-format
+msgid ""
+"config file %s, line %d: 'Include' directive must belong to a section.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:640 src/pacman/pacman.c:702 src/pacman/pacman.c:717
+#, c-format
+msgid "config file %s, line %d: directive '%s' not recognized.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:787
+#, c-format
+msgid "failed to initialize alpm library (%s)\n"
+msgstr "falló al iniciar la librería alpm (%s)\n"
+
+#: src/pacman/pacman.c:824
+msgid "you cannot perform this operation unless you are root.\n"
+msgstr "no puede realizar esta operación, a menos que sea root.\n"
+
+#: src/pacman/pacman.c:847
+#, c-format
+msgid "could not register 'local' database (%s)\n"
+msgstr "no se pudo registrar la base de datos 'local' (%s)\n"
+
+#: src/pacman/pacman.c:873
+msgid "no operation specified (use -h for help)\n"
+msgstr "no se especificó una operación (utilice -h para ayuda)\n"
+
+#: src/pacman/query.c:67
+#, fuzzy, c-format
+msgid "error: no file was specified for --owns\n"
+msgstr "no se indico un archivo para --owns\n"
+
+#: src/pacman/query.c:80
+#, fuzzy, c-format
+msgid "error: failed to read file '%s': %s\n"
+msgstr "no se pudo leer el archivo '%s': %s"
+
+#: src/pacman/query.c:87
+#, fuzzy, c-format
+msgid "error: cannot determine ownership of a directory\n"
+msgstr "no se pudo determinar el propietario de un directorio"
+
+#: src/pacman/query.c:95
+#, fuzzy, c-format
+msgid "error: cannot determine real path for '%s': %s\n"
+msgstr "no se pudo determinar la ruta verdadera para '%s': %s"
+
+#: src/pacman/query.c:117
+#, c-format
+msgid "%s is owned by %s %s\n"
+msgstr "%s es propiedad de %s %s\n"
+
+#: src/pacman/query.c:125
+#, fuzzy, c-format
+msgid "error: No package owns %s\n"
+msgstr "Ningún paquete posee %s\n"
+
+#: src/pacman/query.c:221
+#, fuzzy, c-format
+msgid "error: group \"%s\" was not found\n"
+msgstr "el grupo \"%s\" no fue encontrado\n"
+
+#: src/pacman/query.c:232
+#, fuzzy, c-format
+msgid "Checking for package upgrades... \n"
+msgstr "Verificando existencia de actualizaciones de paquetes..."
+
+#: src/pacman/query.c:243
+#, fuzzy, c-format
+msgid "no upgrades found.\n"
+msgstr "no se encontraron actualizaciones"
+
+#: src/pacman/query.c:362 src/pacman/sync.c:743
+msgid "no usable package repositories configured.\n"
+msgstr "no se encontraron repositorios útiles configurados.\n"
+
+#: src/pacman/query.c:406
+#, fuzzy, c-format
+msgid "error: package \"%s\" not found\n"
+msgstr "el paquete \"%s\" no fue encontrado\n"
+
+#: src/pacman/remove.c:78 src/pacman/sync.c:583
+#, c-format
+msgid ":: group %s:\n"
+msgstr ":: grupo %s:\n"
+
+#: src/pacman/remove.c:80
+msgid " Remove whole content? [Y/n] "
+msgstr " ¿Quitar todo el contenido? [Y/n] "
+
+#: src/pacman/remove.c:84
+#, c-format
+msgid ":: Remove %s from group %s? [Y/n] "
+msgstr ":: ¿Quitar %s del grupo %s? [Y/n] "
+
+#: src/pacman/remove.c:97 src/pacman/sync.c:479 src/pacman/sync.c:540
+#, fuzzy, c-format
+msgid "error: failed to init transaction (%s)\n"
+msgstr "no se pudo iniciar la operación (%s)\n"
+
+#: src/pacman/remove.c:113
+#, fuzzy, c-format
+msgid "error: failed to add target '%s' (%s)\n"
+msgstr "fallo al procesar '%s' (%s)\n"
+
+#: src/pacman/remove.c:158 src/pacman/util.c:462
+msgid "Targets:"
+msgstr "Se procesará:"
+
+#: src/pacman/remove.c:161
+msgid ""
+"\n"
+"Do you want to remove these packages? [Y/n] "
+msgstr ""
+"\n"
+"¿Quiere eliminar estos paquetes? [Y/n] "
+
+#: src/pacman/sync.c:52
+#, fuzzy, c-format
+msgid "error: could not access database directory\n"
+msgstr "no se pudo acceder al directorio de la cache\n"
+
+#: src/pacman/sync.c:83
+#, fuzzy, c-format
+msgid "Do you want to remove %s? [Y/n] "
+msgstr ""
+"\n"
+"¿Quiere eliminar estos paquetes? [Y/n] "
+
+#: src/pacman/sync.c:88
+#, fuzzy, c-format
+msgid "error: could not remove repository directory\n"
+msgstr "no se pudo eliminar el directorio de la cache\n"
+
+#: src/pacman/sync.c:101
+#, c-format
+msgid "Database directory: %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:102
+#, fuzzy
+msgid "Do you want to remove unused repositories? [Y/n] "
+msgstr ""
+"\n"
+"¿Quiere eliminar estos paquetes? [Y/n] "
+
+#: src/pacman/sync.c:112
+#, c-format
+msgid "Database directory cleaned up\n"
+msgstr ""
+
+#: src/pacman/sync.c:130 src/pacman/sync.c:177
+#, fuzzy, c-format
+msgid "Cache directory: %s\n"
+msgstr "Arquitectura : %s\n"
+
+#: src/pacman/sync.c:131
+#, fuzzy
+msgid "Do you want to remove uninstalled packages from cache? [Y/n] "
+msgstr "Desea borrar todos los paquetes de la cache? [Y/n] "
+
+#: src/pacman/sync.c:134
+#, c-format
+msgid "removing old packages from cache... "
+msgstr "quitando paquetes antiguos de la cache..."
+
+#: src/pacman/sync.c:138
+#, fuzzy, c-format
+msgid "error: could not access cache directory\n"
+msgstr "no se pudo acceder al directorio de la cache\n"
+
+#: src/pacman/sync.c:178
+#, fuzzy
+msgid "Do you want to remove ALL packages from cache? [Y/n] "
+msgstr "Desea quitar los paquetes antiguos de la cache? [Y/n] "
+
+#: src/pacman/sync.c:181
+#, c-format
+msgid "removing all packages from cache... "
+msgstr "quitando todos los paquetes de la cache... "
+
+#: src/pacman/sync.c:184
+#, fuzzy, c-format
+msgid "error: could not remove cache directory\n"
+msgstr "no se pudo eliminar el directorio de la cache\n"
+
+#: src/pacman/sync.c:189
+#, fuzzy, c-format
+msgid "error: could not create new cache directory\n"
+msgstr "no se pudo crear el nuevo directorio de la cache\n"
+
+#: src/pacman/sync.c:216
+#, fuzzy, c-format
+msgid "error: failed to synchronize %s: %s\n"
+msgstr "falló al sincronizar %s: %s\n"
+
+#: src/pacman/sync.c:219
+#, fuzzy, c-format
+msgid "error: failed to update %s (%s)\n"
+msgstr "falló al actualizar %s (%s)\n"
+
+#: src/pacman/sync.c:223
+#, c-format
+msgid " %s is up to date\n"
+msgstr " %s está actualizado\n"
+
+#: src/pacman/sync.c:366
+#, fuzzy, c-format
+msgid "error: repository '%s' does not exist\n"
+msgstr "el repositorio '%s' no existe\n"
+
+#: src/pacman/sync.c:381
+#, fuzzy, c-format
+msgid "error: package '%s' was not found in repository '%s'\n"
+msgstr "el paquete '%s' no fue encontrado en el repositorio '%s'\n"
+
+#: src/pacman/sync.c:401
+#, fuzzy, c-format
+msgid "error: package '%s' was not found\n"
+msgstr "El paquete '%s' no fue encontrado\n"
+
+#: src/pacman/sync.c:438
+#, fuzzy, c-format
+msgid "error: repository \"%s\" was not found.\n"
+msgstr "el repositorio \"%s\" no fue encontrado.\n"
+
+#: src/pacman/sync.c:490
+#, c-format
+msgid ":: Synchronizing package databases...\n"
+msgstr ":: Sincronizando las bases de datos de paquetes...\n"
+
+#: src/pacman/sync.c:493
+#, fuzzy, c-format
+msgid "error: failed to synchronize any databases\n"
+msgstr "falló al sincronizar cualquier base de datos."
+
+#: src/pacman/sync.c:505
+#, c-format
+msgid ":: Starting full system upgrade...\n"
+msgstr ":: iniciando actualización completa del sistema...\n"
+
+#: src/pacman/sync.c:526
+#, c-format
+msgid ""
+":: pacman has detected a newer version of itself.\n"
+":: It is recommended that you upgrade pacman by itself\n"
+":: using 'pacman -S pacman', and then rerun the current\n"
+":: operation. If you wish to continue the operation and\n"
+":: not upgrade pacman separately, answer no.\n"
+msgstr ""
+
+#: src/pacman/sync.c:531
+msgid ":: Cancel current operation? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:533 src/pacman/sync.c:720
+#, fuzzy, c-format
+msgid "error: failed to release transaction (%s)\n"
+msgstr "fallo al preparar operación (%s)\n"
+
+#: src/pacman/sync.c:545
+#, fuzzy, c-format
+msgid "error: pacman: %s\n"
+msgstr "pacman: %s\n"
+
+#: src/pacman/sync.c:569
+#, c-format
+msgid "error: '%s': %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:588
+msgid ":: Install whole content? [Y/n] "
+msgstr ":: ¿Instalar el todo el contenido? [Y/n] "
+
+#: src/pacman/sync.c:595
+#, c-format
+msgid ":: Install %s from group %s? [Y/n] "
+msgstr ":: ¿Instalar %s del grupo %s? [Y/n] "
+
+#: src/pacman/sync.c:604
+#, fuzzy, c-format
+msgid "error: '%s': not found in sync db\n"
+msgstr "'%s': no encontrado en la lista de paquetes\n"
+
+#: src/pacman/sync.c:631
+#, fuzzy, c-format
+msgid ":: %s: conflicts with %s\n"
+msgstr ":: %s: posee conflictos con %s"
+
+#: src/pacman/sync.c:645
+#, c-format
+msgid " local database is up to date\n"
+msgstr " el sistema está actualizado\n"
+
+#: src/pacman/sync.c:657
+#, fuzzy, c-format
+msgid "Beginning download...\n"
+msgstr ""
+"\n"
+"Empezando la descarga...\n"
+
+#: src/pacman/sync.c:660
+msgid "Proceed with download? [Y/n] "
+msgstr "¿Continuar con la descarga? [Y/n] "
+
+#: src/pacman/sync.c:664
+#, fuzzy, c-format
+msgid "Beginning upgrade process...\n"
+msgstr ""
+"\n"
+"Empezando proceso de actualización...\n"
+
+#: src/pacman/sync.c:667
+msgid "Proceed with installation? [Y/n] "
+msgstr "¿Continuar con la instalación? [Y/n] "
+
+#: src/pacman/sync.c:708
+#, fuzzy, c-format
+msgid "Errors occurred, no packages were upgraded.\n"
+msgstr "ocurrieron errores, no se actualizaron paquetes\n"
+
+#: src/pacman/util.c:356 src/pacman/util.c:388
+#, c-format
+msgid "None\n"
+msgstr "Nada\n"
+
+#: src/pacman/util.c:454
+msgid "Remove:"
+msgstr "Se quitará:"
+
+#: src/pacman/util.c:458
+#, fuzzy, c-format
+msgid "Total Removed Size: %.2f MB\n"
+msgstr ""
+"\n"
+"Tamaño total eliminado: %.2f MB\n"
+
+#: src/pacman/util.c:465
+#, fuzzy, c-format
+msgid "Total Download Size: %.2f MB\n"
+msgstr "Tamaño total instalado: %.2f MB\n"
+
+#: src/pacman/util.c:469
+#, c-format
+msgid "Total Installed Size: %.2f MB\n"
+msgstr "Tamaño total instalado: %.2f MB\n"
+
+#: src/pacman/util.c:496
+msgid "Y"
+msgstr ""
+
+#: src/pacman/util.c:496
+msgid "YES"
+msgstr ""
+
+#: src/pacman/util.c:557
+#, c-format
+msgid "debug: "
+msgstr ""
+
+#: src/pacman/util.c:560
+#, c-format
+msgid "error: "
+msgstr ""
+
+#: src/pacman/util.c:563
+#, c-format
+msgid "warning: "
+msgstr ""
+
+#: src/pacman/util.c:568
+#, c-format
+msgid "function: "
+msgstr ""
+
+#: scripts/abs.sh.in:60 scripts/makepkg.sh.in:110 scripts/makepkg.sh.in:112
+#: scripts/repo-add.sh.in:50 scripts/repo-remove.sh.in:50
+msgid "ERROR:"
+msgstr ""
+
+#: scripts/abs.sh.in:65
+msgid "abs (pacman) %s - download a PKGBUILD tree from a CVS repository"
+msgstr ""
+
+#: scripts/abs.sh.in:66
+msgid "Usage %s [options] [repository...]"
+msgstr ""
+
+#: scripts/abs.sh.in:67 scripts/makepkg.sh.in:1055
+#, fuzzy
+msgid "Options:"
+msgstr "opciones"
+
+#: scripts/abs.sh.in:68
+msgid " -p, --passive The connection is opened in passive mode."
+msgstr ""
+
+#: scripts/abs.sh.in:70
+msgid " -h, --help Display this help message then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:71
+msgid " -V, --version Display version information then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:73
+msgid ""
+"abs will synchronize build scripts from the CVS repository\\ninto %s. You "
+"can follow different package trees by\\nediting %s files. If no argument is "
+"given, abs\\nwill synchronize from supfiles specified in %s.\\n\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:79
+msgid "Report bugs to <%s>."
+msgstr ""
+
+#: scripts/abs.sh.in:84 scripts/gensync.sh.in:54 scripts/makepkg.sh.in:1088
+#: scripts/pacman-optimize.sh.in:59 scripts/repo-remove.sh.in:66
+msgid ""
+"Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:130 scripts/pacman-optimize.sh.in:100
+#, fuzzy
+msgid "%s does not exist or is not a directory."
+msgstr "'%s' no es un directorio de cache válido\n"
+
+#: scripts/abs.sh.in:133
+msgid "You do not have write permissions in %s."
+msgstr ""
+
+#: scripts/abs.sh.in:143
+msgid "Missing CVS synchronization utility. Install csup or cvsup."
+msgstr ""
+
+#: scripts/abs.sh.in:166
+#, fuzzy
+msgid "Updating %s..."
+msgstr "actualizando %s... "
+
+#: scripts/gensync.sh.in:34
+msgid "Usage: %s <root> <destfile> [package_directory]"
+msgstr ""
+
+#: scripts/gensync.sh.in:35
+msgid ""
+"gensync will generate a sync database by reading all PKGBUILD files\\nfrom "
+"<root>. gensync builds the database in a temporary directory\\nand then "
+"compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:39
+msgid ""
+"gensync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:42
+msgid ""
+"note: The <destfile> name is important. It must be of the form\\n "
+"{treename}.db.tar.gz where {treename} is the name of the custom\\n "
+"package repository you configured in /etc/pacman.conf. The\\n generated "
+"database must reside in the same directory as your\\n custom packages "
+"(also configured in /etc/pacman.conf)\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:48
+msgid "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
+msgstr ""
+
+#: scripts/gensync.sh.in:102 scripts/updatesync.sh.in:101
+msgid "%s not found. Can not continue."
+msgstr ""
+
+#: scripts/gensync.sh.in:120
+msgid "invalid root dir: %s"
+msgstr ""
+
+#: scripts/gensync.sh.in:122
+msgid "gensync: building database entries, generating md5sums..."
+msgstr ""
+
+#: scripts/gensync.sh.in:131
+#, fuzzy
+msgid "failed to parse parse %s"
+msgstr "falló al actualizar %s (%s)\n"
+
+#: scripts/gensync.sh.in:142
+msgid "could not find %s-%s-%s-%s.%s - skipping"
+msgstr ""
+
+#: scripts/gensync.sh.in:152
+#, fuzzy
+msgid "creating repo DB..."
+msgstr "limpiando..."
+
+#: scripts/makepkg.sh.in:101 scripts/makepkg.sh.in:103
+#: scripts/repo-add.sh.in:45 scripts/repo-remove.sh.in:45
+msgid "WARNING:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:143
+#, fuzzy
+msgid "Cleaning up..."
+msgstr "limpiando..."
+
+#: scripts/makepkg.sh.in:193
+msgid ""
+"Options beginning with 'no' will be deprecated in the next version of "
+"makepkg!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:194
+msgid "Please replace 'no' with '!': %s -> %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:198
+msgid "Option 'keepdocs' may not work as intended. Please replace with 'docs'."
+msgstr ""
+
+#: scripts/makepkg.sh.in:286
+msgid "There is no agent set up to handle %s URLs. Check %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:287 scripts/makepkg.sh.in:296
+#: scripts/makepkg.sh.in:448 scripts/makepkg.sh.in:476
+#: scripts/makepkg.sh.in:522 scripts/makepkg.sh.in:610
+#: scripts/makepkg.sh.in:638 scripts/makepkg.sh.in:700
+#: scripts/makepkg.sh.in:767 scripts/makepkg.sh.in:1105
+#: scripts/makepkg.sh.in:1415 scripts/makepkg.sh.in:1419
+msgid "Aborting..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:295
+msgid "The download program %s is not installed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:311
+msgid "Pacman returned a fatal error (%i): %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:335
+#, fuzzy
+msgid "Installing missing dependencies..."
+msgstr "resolviendo dependencias... "
+
+#: scripts/makepkg.sh.in:345
+msgid "Pacman failed to install missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:349
+#, fuzzy
+msgid "Building missing dependencies..."
+msgstr "resolviendo dependencias... "
+
+#: scripts/makepkg.sh.in:354
+msgid "Source root cannot be found - please make sure it is specified in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:362
+msgid "Could not find '%s' under %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:378
+#, fuzzy
+msgid "Failed to build '%s'"
+msgstr "no se pudo leer el archivo '%s': %s"
+
+#: scripts/makepkg.sh.in:411
+msgid "Failed to install all missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:414
+#, fuzzy
+msgid "Missing Dependencies:"
+msgstr "resolviendo dependencias... "
+
+#: scripts/makepkg.sh.in:444
+#, fuzzy
+msgid "Retrieving Sources..."
+msgstr ":: Descargando paquetes desde %s...\n"
+
+#: scripts/makepkg.sh.in:447
+msgid "You do not have write permission to store downloads in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:458
+msgid "Found %s in build dir"
+msgstr ""
+
+#: scripts/makepkg.sh.in:462
+msgid "Using cached copy of %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:470
+#, fuzzy
+msgid "Downloading %s..."
+msgstr "actualizando %s... "
+
+#: scripts/makepkg.sh.in:475
+msgid "Failure while downloading %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:486
+#, fuzzy
+msgid "Generating checksums for source files..."
+msgstr "error calculando la verificación para %s\n"
+
+#: scripts/makepkg.sh.in:495
+msgid "Invalid integrity algorithm '%s' specified."
+msgstr ""
+
+#: scripts/makepkg.sh.in:500 scripts/makepkg.sh.in:552
+msgid "Cannot find the '%s' program."
+msgstr ""
+
+#: scripts/makepkg.sh.in:521
+msgid "Unable to find source file %s to generate checksum."
+msgstr ""
+
+#: scripts/makepkg.sh.in:547
+msgid "Invalid integrity algorithm '%s' specified"
+msgstr ""
+
+#: scripts/makepkg.sh.in:558
+msgid "Validating source files with %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:568
+msgid "NOT FOUND"
+msgstr ""
+
+#: scripts/makepkg.sh.in:577
+msgid "Passed"
+msgstr ""
+
+#: scripts/makepkg.sh.in:579
+msgid "FAILED"
+msgstr ""
+
+#: scripts/makepkg.sh.in:587
+msgid "One or more files did not pass the validity check!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:591
+msgid "Integrity checks (%s) are missing or incomplete."
+msgstr ""
+
+#: scripts/makepkg.sh.in:597
+msgid "Extracting Sources..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:609
+msgid "Unable to find source file %s for extraction."
+msgstr ""
+
+#: scripts/makepkg.sh.in:637
+#, fuzzy
+msgid "Failed to extract %s"
+msgstr "fallo al preparar operación (%s)\n"
+
+#: scripts/makepkg.sh.in:669
+msgid "Starting build()..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:699
+msgid "Build Failed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:708
+msgid "Tidying install..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:711
+#, fuzzy
+msgid "Removing info/doc files..."
+msgstr "resolviendo dependencias... "
+
+#: scripts/makepkg.sh.in:717
+msgid "Moving usr/share/man files to usr/man..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:724
+msgid "Compressing man pages..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:742
+msgid "Stripping debugging symbols from binaries and libraries..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:754
+msgid "Removing libtool .la files..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:759
+#, fuzzy
+msgid "Removing empty directories..."
+msgstr "resolviendo dependencias... "
+
+#: scripts/makepkg.sh.in:766
+msgid "Missing pkg/ directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:772
+#, fuzzy
+msgid "Creating package..."
+msgstr "Cargando información del paquete..."
+
+#: scripts/makepkg.sh.in:782
+msgid "Generating .FILELIST file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:792
+msgid "Generating .PKGINFO file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:838
+msgid "Please add a license line to your %s!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:839
+msgid "Example for GPL'ed software: license=('GPL')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:847 scripts/makepkg.sh.in:942
+msgid "Adding install script..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:854
+#, fuzzy
+msgid "Adding package changelog..."
+msgstr "Cargando información del paquete..."
+
+#: scripts/makepkg.sh.in:860
+#, fuzzy
+msgid "Compressing package..."
+msgstr "Cargando información del paquete..."
+
+#: scripts/makepkg.sh.in:865
+#, fuzzy
+msgid "Failed to create package file."
+msgstr "error al cargar el paquete '%s' (%s)\n"
+
+#: scripts/makepkg.sh.in:874
+msgid "Cannot find the xdelta binary! Is xdelta installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:904
+msgid "Making delta from version %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:918
+msgid "Recreating package tarball from delta to match md5 signatures"
+msgstr ""
+
+#: scripts/makepkg.sh.in:919
+msgid "NOTE: the delta should ONLY be distributed with this tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:923
+msgid "Could not generate the package from the delta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:927
+msgid "Delta was not able to be created."
+msgstr ""
+
+#: scripts/makepkg.sh.in:930
+msgid "No previous version found, skipping xdelta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:936
+#, fuzzy
+msgid "Creating source package..."
+msgstr "Verificando existencia de actualizaciones de paquetes..."
+
+#: scripts/makepkg.sh.in:938 scripts/makepkg.sh.in:950
+#: scripts/makepkg.sh.in:957
+#, fuzzy
+msgid "Adding %s..."
+msgstr "actualizando %s... "
+
+#: scripts/makepkg.sh.in:945
+#, fuzzy
+msgid "Install script %s not found."
+msgstr "Script de instalación: %s\n"
+
+#: scripts/makepkg.sh.in:965
+#, fuzzy
+msgid "Compressing source package..."
+msgstr "Verificando existencia de actualizaciones de paquetes..."
+
+#: scripts/makepkg.sh.in:967
+msgid "Failed to create source package file."
+msgstr ""
+
+#: scripts/makepkg.sh.in:975
+#, fuzzy
+msgid "Installing package with pacman -U..."
+msgstr "Cargando información del paquete..."
+
+#: scripts/makepkg.sh.in:992
+msgid "Determining latest darcs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:995
+msgid "Determining latest cvs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:998
+msgid "Determining latest git revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1001
+msgid "Determining latest svn revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1004
+msgid "Determining latest bzr revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1007
+msgid "Determining latest hg revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1022
+#, fuzzy
+msgid "Version found: %s"
+msgstr "Versión : %s\n"
+
+#: scripts/makepkg.sh.in:1053
+msgid "Usage: %s [options]"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1056
+msgid " -A, --ignorearch Ignore incomplete arch field in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1057
+msgid " -b, --builddeps Build missing dependencies from source"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1058
+msgid " -c, --clean Clean up work files after build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1059
+msgid " -C, --cleancache Clean up source files from the cache"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1060
+#, fuzzy
+msgid " -d, --nodeps Skip all dependency checks"
+msgstr " -d, --nodeps salta la verificación de dependencias \n"
+
+#: scripts/makepkg.sh.in:1061
+msgid " -e, --noextract Do not extract source files (use existing src/ dir)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1062
+#, fuzzy
+msgid " -f, --force Overwrite existing package"
+msgstr ""
+" -f, --force fuerza la instalación, sobreescribiendo los archivos "
+"en conflicto\n"
+
+#: scripts/makepkg.sh.in:1063
+msgid " -g, --geninteg Generate integrity checks for source files"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1064
+msgid " -h, --help This help"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1065
+msgid " -i, --install Install package after successful build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1066
+#, fuzzy
+msgid " -L, --log Log package build process"
+msgstr " -i, --info ver la información del paquete\n"
+
+#: scripts/makepkg.sh.in:1067
+msgid " -m, --nocolor Disable colorized output messages"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1068
+msgid " -o, --nobuild Download and extract files only"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1069
+msgid " -p <buildscript> Use an alternate build script (instead of '%s')"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1070
+#, fuzzy
+msgid ""
+" -r, --rmdeps Remove installed dependencies after a successful build"
+msgstr " -e, --dependsonly instala sólo dependencias\n"
+
+#: scripts/makepkg.sh.in:1072
+msgid " -R, --repackage Repackage contents of pkg/ without building"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1073
+#, fuzzy
+msgid " -s, --syncdeps Install missing dependencies with pacman"
+msgstr " -e, --dependsonly instala sólo dependencias\n"
+
+#: scripts/makepkg.sh.in:1074
+msgid " --asroot Allow makepkg to run as root user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1075
+msgid " --source Do not build package; generate a source-only tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1077
+msgid "These options can be passed to pacman:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1079
+#, fuzzy
+msgid ""
+" --noconfirm Do not ask for confirmation when resolving "
+"dependencies"
+msgstr " --noconfirm no solicita confirmación alguna\n"
+
+#: scripts/makepkg.sh.in:1080
+#, fuzzy
+msgid ""
+" --noprogressbar Do not show a progress bar when downloading files"
+msgstr ""
+" --noprogressbar no muestra la barra de progreso cuando descarga "
+"archivos\n"
+
+#: scripts/makepkg.sh.in:1082
+msgid "If -p is not specified, makepkg will look for '%s'"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1104
+#, fuzzy
+msgid "%s not found."
+msgstr "el paquete \"%s\" no fue encontrado\n"
+
+#: scripts/makepkg.sh.in:1177
+msgid "Sudo is used by default now. The --usesudo option is deprecated!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1192
+msgid "Cleaning up ALL files from %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1193
+msgid " Are you sure you wish to do this? [Y/n] "
+msgstr ""
+
+#: scripts/makepkg.sh.in:1199
+msgid "Problem removing files; you may not have correct permissions in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1203
+msgid "Source cache cleaned."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1208
+msgid "No files have been removed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1213
+msgid "Source destination must be defined in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1214
+msgid "In addition, please run makepkg -C outside of your cache directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1220
+msgid "BUILDSCRIPT is undefined! Ensure you have updated %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1227
+msgid "Running makepkg as root is a BAD idea and can cause"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1228
+msgid "permanent, catastrophic damage to your system. If you"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1229
+msgid "wish to run as root, please use the --asroot option."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1233
+msgid "The --asroot option is meant for the root user only."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1234
+msgid "Please rerun makepkg without the --asroot flag."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1238
+msgid "Fakeroot must be installed if using the 'fakeroot' option"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1239
+msgid "in the BUILDENV array in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1243
+msgid "Running makepkg as an unprivileged user will result in non-root"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1244
+msgid "ownership of the packaged files. Try using the fakeroot environment by"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1245
+msgid "placing 'fakeroot' in the BUILDENV array in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1250
+msgid "Do not use the '-F' option. This option is only for use by makepkg."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1259
+msgid "Cannot find the sudo binary! Is sudo installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1260
+msgid "Missing dependencies cannot be installed or removed as a normal user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1261
+msgid "without sudo; install and configure sudo to auto-resolve dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1271
+#, fuzzy
+msgid "%s does not exist."
+msgstr "el repositorio '%s' no existe\n"
+
+#: scripts/makepkg.sh.in:1286 scripts/makepkg.sh.in:1290
+#, fuzzy
+msgid "%s is not allowed to be empty."
+msgstr "%s' no es una ruta de base de datos válida\n"
+
+#: scripts/makepkg.sh.in:1294 scripts/makepkg.sh.in:1298
+msgid "%s is not allowed to contain hyphens."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1308 scripts/makepkg.sh.in:1313
+msgid "%s is not available for the '%s' architecture."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1309 scripts/makepkg.sh.in:1314
+msgid "Note that many packages may need a line added to their %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1310 scripts/makepkg.sh.in:1315
+msgid "such as arch=('%s')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1320
+#, fuzzy
+msgid "Install scriptlet (%s) does not exist."
+msgstr "el repositorio '%s' no existe\n"
+
+#: scripts/makepkg.sh.in:1330
+msgid "A package has already been built, installing existing package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1334 scripts/makepkg.sh.in:1366
+msgid "A package has already been built. (use -f to overwrite)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1343 scripts/makepkg.sh.in:1442
+msgid "Skipping build."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1352
+msgid "Leaving fakeroot environment."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1356
+#, fuzzy
+msgid "Making package: %s"
+msgstr "Cargando información del paquete..."
+
+#: scripts/makepkg.sh.in:1359
+msgid "Running makepkg as root..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1370
+msgid "Source package created: %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1377
+#, fuzzy
+msgid "Skipping dependency checks."
+msgstr "comprobando dependencias... "
+
+#: scripts/makepkg.sh.in:1384
+#, fuzzy
+msgid "Checking Runtime Dependencies..."
+msgstr "comprobando dependencias... "
+
+#: scripts/makepkg.sh.in:1387
+#, fuzzy
+msgid "Checking Buildtime Dependencies..."
+msgstr "comprobando dependencias... "
+
+#: scripts/makepkg.sh.in:1391
+#, fuzzy
+msgid "Could not resolve all dependencies."
+msgstr "resolviendo dependencias... "
+
+#: scripts/makepkg.sh.in:1395
+msgid "pacman was not found in PATH; skipping dependency checks."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1409
+msgid "Skipping source retrieval -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1410
+msgid "Skipping source integrity checks -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1411
+msgid "Skipping source extraction -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1414
+msgid "The source directory is empty, there is nothing to build!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1418
+msgid "The package directory is empty, there is nothing to repackage!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1429
+msgid "Sources are ready."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1434
+msgid "Removing existing pkg/ directory..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1451
+msgid "Entering fakeroot environment..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1464
+msgid "Finished making: %s"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:44
+msgid "Usage: %s [pacman_db_root]"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:45
+msgid ""
+"pacman-optimize is a little hack that should improve the performance\\nof "
+"pacman when reading/writing to its filesystem-based database.\\n\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:48
+msgid ""
+"Because pacman uses many small files to keep track of packages,\\nthere is a "
+"tendency for these files to become fragmented over time.\\nThis script "
+"attempts to relocate these small files into one\\ncontinuous location on "
+"your hard drive. The result is that the hard\\ndrive should be able to read "
+"them faster, since the hard drive head\\ndoes not have to move around the "
+"disk as much.\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:91
+msgid "diff tool was not found, please install diffutils."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:96
+msgid "Pacman lock file was found. Cannot run while pacman is running."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:104
+msgid "You must have correct permissions to optimize the database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:108
+msgid "ERROR: Can not create temp directory for database building."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:114
+msgid "MD5sum'ing the old database..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:118
+#, fuzzy
+msgid "Tar'ing up %s..."
+msgstr "limpiando..."
+
+#: scripts/pacman-optimize.sh.in:123
+msgid "Tar'ing up %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:127
+msgid "Making and MD5sum'ing the new db..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:132
+msgid "Untar'ing %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:138
+#, fuzzy
+msgid "Checking integrity..."
+msgstr "Verificando la integridad de los paquetes... "
+
+#: scripts/pacman-optimize.sh.in:144
+msgid "Integrity check FAILED, reverting to old database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:149
+msgid "Putting the new database in place..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:158
+msgid "Finished. Your pacman database has been optimized."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:159
+msgid "For full benefits of pacman-optimize, run 'sync' now."
+msgstr ""
+
+#: scripts/repo-add.sh.in:56
+msgid "Usage: %s <path-to-db> [--force] <package> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:57
+msgid ""
+"repo-add will update a package database by reading a package file."
+"\\nMultiple packages to add can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:60
+msgid ""
+"The --force flag will add a 'force' entry to the sync database, which"
+"\\ntells pacman to skip its internal version number checking and update"
+"\\nthe package regardless.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:64
+msgid "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
+msgstr ""
+
+#: scripts/repo-add.sh.in:69
+msgid ""
+"Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:173
+msgid "Invalid package file '%s'."
+msgstr ""
+
+#: scripts/repo-add.sh.in:182 scripts/repo-remove.sh.in:91
+#, fuzzy
+msgid "Removing existing package '%s'..."
+msgstr ":: Descargando paquetes desde %s...\n"
+
+#: scripts/repo-add.sh.in:192
+msgid "Creating 'desc' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:202
+msgid "Computing md5 checksums..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:214
+#, fuzzy
+msgid "Creating 'depends' db entry..."
+msgstr "resolviendo dependencias... "
+
+#: scripts/repo-add.sh.in:230
+msgid "Creating 'deltas' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:236
+msgid "Added delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:238
+msgid "Could not add delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:276 scripts/repo-remove.sh.in:123
+msgid "%s not found. Cannot continue."
+msgstr ""
+
+#: scripts/repo-add.sh.in:286 scripts/repo-remove.sh.in:133
+msgid "Cannot create temp directory for database building."
+msgstr ""
+
+#: scripts/repo-add.sh.in:297 scripts/repo-remove.sh.in:142
+msgid "Repository file '%s' is not a proper pacman database."
+msgstr ""
+
+#: scripts/repo-add.sh.in:300 scripts/repo-remove.sh.in:145
+msgid "Extracting database to a temporary location..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:306
+msgid "'%s' is not a package file, skipping"
+msgstr ""
+
+#: scripts/repo-add.sh.in:308
+#, fuzzy
+msgid "Adding package '%s'"
+msgstr "Cargando información del paquete..."
+
+#: scripts/repo-add.sh.in:315
+#, fuzzy
+msgid "Package '%s' not found."
+msgstr "El paquete '%s' no fue encontrado\n"
+
+#: scripts/repo-add.sh.in:322
+msgid "Creating updated database file %s"
+msgstr ""
+
+#: scripts/repo-add.sh.in:332 scripts/repo-remove.sh.in:170
+msgid "No compression set."
+msgstr ""
+
+#: scripts/repo-add.sh.in:340 scripts/repo-remove.sh.in:178
+msgid "No packages modified, nothing to do."
+msgstr ""
+
+#: scripts/repo-remove.sh.in:55
+msgid "repo-remove %s\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:56
+msgid "usage: %s <path-to-db> <packagename> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:57
+msgid ""
+"repo-remove will update a package database by removing the package name"
+"\\nspecified on the command line from the given repo database. Multiple"
+"\\npackages to remove can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:61
+msgid "Example: repo-remove /path/to/repo.db.tar.gz kernel26"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:149
+#, fuzzy
+msgid "Searching for package '%s'..."
+msgstr "Verificando existencia de actualizaciones de paquetes..."
+
+#: scripts/repo-remove.sh.in:154
+#, fuzzy
+msgid "Package matching '%s' not found."
+msgstr "El paquete '%s' no fue encontrado\n"
+
+#: scripts/repo-remove.sh.in:161
+msgid "Creating updated database file '%s'..."
+msgstr ""
+
+#: scripts/updatesync.sh.in:35
+msgid "Usage: %s <action> <destfile> <option> [package_directory]"
+msgstr ""
+
+#: scripts/updatesync.sh.in:36
+msgid ""
+"updatesync will update a sync database by reading a PKGBUILD and\\nmodifying "
+"the destfile. updatesync updates the database in a temporary\\ndirectory and "
+"then compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:40
+msgid "There are two types of actions:\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:41
+msgid ""
+"upd - Will update a package's entry or create it if it doesn't exist."
+"\\n It takes the package's PKGBUILD as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:42
+msgid ""
+"del - Will remove a package's entry from the db. It takes the package's"
+"\\n name as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:44
+msgid ""
+"updatesync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:47
+msgid "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
+msgstr ""
+
+#: scripts/updatesync.sh.in:53
+msgid ""
+"Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:123
+#, fuzzy
+msgid "%s not found"
+msgstr "el paquete \"%s\" no fue encontrado\n"
+
+#: scripts/updatesync.sh.in:129
+#, fuzzy
+msgid "failed to parse %s"
+msgstr "falló al analizar la configuración (%s)\n"
+
+#: scripts/updatesync.sh.in:136
+msgid "could not find %s-%s-%s-%s.%s - aborting"
+msgstr ""
+
+#~ msgid "Build Type : %s\n"
+#~ msgstr "Tipo de compilación : %s\n"
+
+#~ msgid "SHA1 Sum : %s"
+#~ msgstr "Hash SHA1 : %s"
+
+#~ msgid "usage: %s {-R --remove} [options] <package>\n"
+#~ msgstr "uso: %s {-R --remove} [opciones] <paquete>\n"
+
+#~ msgid ""
+#~ " --ask <number> pre-specify answers for questions (see manpage)\n"
+#~ msgstr ""
+#~ " --ask <número> pre-define respuestas para preguntas (ver el "
+#~ "manual)\n"
+
+#~ msgid "'%s' is not a valid root path\n"
+#~ msgstr "'%s' no es una ruta de raíz válida\n"
+
+#~ msgid "Targets :"
+#~ msgstr "Objetivos : "
+
+#~ msgid "no package file was specified for --file\n"
+#~ msgstr "no se especificó un archivo de paquetes para --file\n"
+
+#~ msgid ":: %s is required by %s\n"
+#~ msgstr ":: %s es requerido por %s\n"
+
+#~ msgid "synchronizing package lists"
+#~ msgstr "sincronizando la lista de paquetes"
+
+#~ msgid "starting full system upgrade"
+#~ msgstr "iniciando la actualización completa del sistema"
+
+#~ msgid ""
+#~ "\n"
+#~ ":: pacman has detected a newer version of the \"pacman\" package.\n"
+#~ msgstr ""
+#~ "\n"
+#~ ":: pacman ha detectado una nueva versión del paquete \"pacman\".\n"
+
+#~ msgid ":: It is recommended that you allow pacman to upgrade itself\n"
+#~ msgstr ":: es recomendado que permita a pacman actualizarse a si mismo\n"
+
+#~ msgid ""
+#~ ":: first, then you can re-run the operation with the newer version.\n"
+#~ msgstr ""
+#~ ":: primero, después puedes volver a ejecutar la operación con la nueva "
+#~ "versión.\n"
+
+#~ msgid ":: Upgrade pacman first? [Y/n] "
+#~ msgstr ":: ¿Actualizar pacman primero? [Y/n] "
+
+#~ msgid "requires"
+#~ msgstr "necesita"
+
+#~ msgid "installed %s (%s)"
+#~ msgstr "instalado %s (%s)"
+
+#~ msgid "removed %s (%s)"
+#~ msgstr "eliminado %s (%s)"
+
+#~ msgid "upgraded %s (%s -> %s)"
+#~ msgstr "actualizado %s (%s -> %s)"
+
+#~ msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
+#~ msgstr ""
+#~ ":: %s-%s: la versión local está actualizada. ¿Actualizar de todas formas? "
+#~ "[Y/n] "
+
+#~ msgid ""
+#~ "\n"
+#~ "Total Package Size: %.2f MB\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Tamaño total de paquetes: %.2f MB\n"
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 00000000..8eb80ab8
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,2673 @@
+# French translations for Pacman package manager package.
+# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
+# This file is distributed under the same license as the Pacman package manager package.
+# Enda <enda@netou.com>, 2006
+#
+# This is a revision of pacman's French translation by nam <37ii11@altern.org>
+# on the basis of the work of solsTiCe d'hiver <solstice.dhiver@laposte.net>
+msgid ""
+msgstr ""
+"Project-Id-Version: pacman\n"
+"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: 2007-04-20 15:02+0100\n"
+"Last-Translator: nam <37ii11@altern.org>\n"
+"Language-Team: solsTiCe d'Hiver <solstice.dhiver@laposte.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: French\n"
+"X-Poedit-Country: FRANCE\n"
+
+#: src/pacman/add.c:42 src/pacman/remove.c:44
+#, c-format
+msgid "failed to release transaction (%s)\n"
+msgstr "la libération de la transaction a échoué (%s)\n"
+
+#: src/pacman/add.c:79 src/pacman/query.c:372 src/pacman/remove.c:65
+#: src/pacman/sync.c:753
+msgid "no targets specified (use -h for help)\n"
+msgstr "aucune cible spécifiée (utiliser -h pour obtenir de l'aide)\n"
+
+#: src/pacman/add.c:106 src/pacman/sync.c:508
+#, fuzzy, c-format
+msgid "error: %s\n"
+msgstr "Erreur: "
+
+#: src/pacman/add.c:109 src/pacman/remove.c:100 src/pacman/sync.c:482
+#, fuzzy, c-format
+msgid ""
+" if you're sure a package manager is not already\n"
+" running, you can remove %s.\n"
+msgstr ""
+" Si vous êtes sûr que le gestionnaire de paquet n'est pas déjà\n"
+" en cours de fonctionnement, vous pouvez supprimer %s%s\n"
+
+#: src/pacman/add.c:116 src/pacman/remove.c:108
+#, c-format
+msgid "loading package data... "
+msgstr "Chargement des données du paquet... "
+
+#: src/pacman/add.c:120
+#, fuzzy, c-format
+msgid "error: failed to add target '%s' (%s)"
+msgstr "l'ajout de la cible '%s' (%s) a échoué"
+
+# "fait" est incompréhensible
+#: src/pacman/add.c:126 src/pacman/remove.c:120 src/pacman/sync.c:174
+#: src/pacman/sync.c:192
+#, c-format
+msgid "done.\n"
+msgstr "terminé.\n"
+
+#: src/pacman/add.c:131 src/pacman/remove.c:124 src/pacman/sync.c:614
+#, fuzzy, c-format
+msgid "error: failed to prepare transaction (%s)\n"
+msgstr "la préparation de la transaction a échoué (%s)\n"
+
+#: src/pacman/add.c:143 src/pacman/remove.c:132 src/pacman/sync.c:623
+#, fuzzy, c-format
+msgid ":: %s: requires %s\n"
+msgstr ":: %s: requiert %s"
+
+#: src/pacman/add.c:151
+#, c-format
+msgid ":: %s: conflicts with %s"
+msgstr ":: %s: est en conflit avec %s"
+
+#: src/pacman/add.c:160 src/pacman/sync.c:686
+#, c-format
+msgid "%s exists in both '%s' and '%s'\n"
+msgstr "%s est présent à la fois dans '%s' et '%s'\n"
+
+# id.
+#: src/pacman/add.c:166 src/pacman/sync.c:692
+#, c-format
+msgid "%s: %s exists in filesystem\n"
+msgstr "%s: %s est déjà présent dans le système de fichiers\n"
+
+#: src/pacman/add.c:172
+#, c-format
+msgid ""
+"\n"
+"errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"Des erreurs se sont produites, aucun paquet n'a été mis à jour.\n"
+
+#: src/pacman/add.c:186 src/pacman/remove.c:171 src/pacman/sync.c:677
+#, fuzzy, c-format
+msgid "error: failed to commit transaction (%s)\n"
+msgstr "la validation de la transaction a échoué (%s)\n"
+
+#: src/pacman/callback.c:163
+#, fuzzy, c-format
+msgid "checking dependencies...\n"
+msgstr "Vérification des dépendances... "
+
+#: src/pacman/callback.c:167
+#, fuzzy, c-format
+msgid "checking for file conflicts...\n"
+msgstr "Recherche des conflits de fichiers... "
+
+#: src/pacman/callback.c:171
+#, fuzzy, c-format
+msgid "resolving dependencies...\n"
+msgstr "Résolution des dépendances... "
+
+# la formulation anglaise non plus n'est pas claire...
+#: src/pacman/callback.c:174
+#, fuzzy, c-format
+msgid "looking for inter-conflicts...\n"
+msgstr "Recherche des conflits possibles entre paquets... "
+
+#: src/pacman/callback.c:178
+#, fuzzy, c-format
+msgid "installing %s...\n"
+msgstr "Installation de %s... "
+
+#: src/pacman/callback.c:189
+#, fuzzy, c-format
+msgid "removing %s...\n"
+msgstr "Désinstallation de %s... "
+
+#: src/pacman/callback.c:200
+#, fuzzy, c-format
+msgid "upgrading %s...\n"
+msgstr "Mise à jour de %s... "
+
+#: src/pacman/callback.c:211
+#, fuzzy, c-format
+msgid "checking package integrity...\n"
+msgstr "Analyse de l'intégrité des paquets... "
+
+#: src/pacman/callback.c:214
+#, fuzzy, c-format
+msgid "checking delta integrity...\n"
+msgstr "Analyse de l'intégrité des paquets... "
+
+#: src/pacman/callback.c:217
+#, c-format
+msgid "applying deltas...\n"
+msgstr ""
+
+#: src/pacman/callback.c:220
+#, fuzzy, c-format
+msgid "generating %s with %s... "
+msgstr "Mise à jour de %s... "
+
+#: src/pacman/callback.c:223
+#, c-format
+msgid "success!\n"
+msgstr ""
+
+#: src/pacman/callback.c:226
+#, c-format
+msgid "failed.\n"
+msgstr "Échec.\n"
+
+# pas du tout littéral, mais plus compréhensible
+#: src/pacman/callback.c:235
+#, c-format
+msgid ":: Retrieving packages from %s...\n"
+msgstr ":: Récupération des paquets du dépôt %s...\n"
+
+# plus clair
+#: src/pacman/callback.c:263
+#, fuzzy, c-format
+msgid ""
+":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway? [Y/"
+"n] "
+msgstr ""
+":: %1$s requiert %2$s, défini comme paquet à ignorer (IgnorePkg). Installer %"
+"2$s tout de même? [O/n] "
+
+#: src/pacman/callback.c:268
+#, fuzzy, c-format
+msgid ":: %s is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+msgstr ""
+":: %s est défini comme paquet à ignorer (IgnorePkg). L'installer tout de "
+"même? [O/n] "
+
+#: src/pacman/callback.c:274
+#, c-format
+msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
+msgstr ""
+":: %s est indiqué comme paquet à conserver (HoldPkg). Le supprimer tout de "
+"même? [O/n] "
+
+#: src/pacman/callback.c:279
+#, c-format
+msgid ":: Replace %s with %s/%s? [Y/n] "
+msgstr ":: Remplacer %s avec %s/%s? [O/n] "
+
+# pour être cohérent
+#: src/pacman/callback.c:286
+#, c-format
+msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
+msgstr ":: %s est en conflit avec %s. Supprimer %s? [O/n] "
+
+#: src/pacman/callback.c:294
+#, c-format
+msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
+msgstr ""
+":: %s-%s: la version locale est plus récente. Mettre à jour tout de même? [O/"
+"n] "
+
+#: src/pacman/callback.c:304
+#, fuzzy, c-format
+msgid ":: File %s is corrupted. Do you want to delete it? [Y/n] "
+msgstr ":: L'archive %s est corrompue. Voulez vous l'effacer? [O/n] "
+
+#: src/pacman/callback.c:354
+msgid "installing"
+msgstr "Installation"
+
+#: src/pacman/callback.c:357
+msgid "upgrading"
+msgstr "Mise à jour"
+
+#: src/pacman/callback.c:360
+msgid "removing"
+msgstr "Désinstallation"
+
+#: src/pacman/callback.c:363
+msgid "checking for file conflicts"
+msgstr "Analyse des conflits entre fichiers"
+
+#: src/pacman/package.c:68
+msgid "Explicitly installed"
+msgstr "Explicitement installé"
+
+#: src/pacman/package.c:71
+msgid "Installed as a dependency for another package"
+msgstr "Installé comme dépendance d'un autre paquet"
+
+#: src/pacman/package.c:74
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: src/pacman/package.c:89
+msgid "Description : "
+msgstr "Description : "
+
+#: src/pacman/package.c:93
+#, fuzzy
+msgid "Filename :"
+msgstr "Licence :"
+
+#: src/pacman/package.c:95
+#, fuzzy
+msgid "Name :"
+msgstr "Nom : %s\n"
+
+#: src/pacman/package.c:96
+#, fuzzy
+msgid "Version :"
+msgstr "Version : %s\n"
+
+#: src/pacman/package.c:97
+#, fuzzy
+msgid "URL :"
+msgstr "URL : %s\n"
+
+#: src/pacman/package.c:98
+#, fuzzy
+msgid "Licenses :"
+msgstr "Licence :"
+
+#: src/pacman/package.c:99
+msgid "Groups :"
+msgstr "Groupes :"
+
+#: src/pacman/package.c:100
+msgid "Provides :"
+msgstr "Fournit :"
+
+#: src/pacman/package.c:101
+msgid "Depends On :"
+msgstr "Dépend de :"
+
+#: src/pacman/package.c:102
+msgid "Optional Deps :"
+msgstr ""
+
+#: src/pacman/package.c:105
+msgid "Required By :"
+msgstr "Requis par :"
+
+# Plus compréhensible...
+#: src/pacman/package.c:108
+msgid "Conflicts With :"
+msgstr "Incompatible avec :"
+
+#: src/pacman/package.c:109
+msgid "Replaces :"
+msgstr "Remplace :"
+
+#: src/pacman/package.c:111
+#, c-format
+msgid "Download Size : %6.2f K\n"
+msgstr "A télécharger : %6.2f K\n"
+
+#: src/pacman/package.c:115
+#, fuzzy, c-format
+msgid "Compressed Size: %6.2f K\n"
+msgstr "Taille (installé) : %6.2f K\n"
+
+#: src/pacman/package.c:119
+#, c-format
+msgid "Installed Size : %6.2f K\n"
+msgstr "Taille (installé) : %6.2f K\n"
+
+# qu'en dites-vous?
+#: src/pacman/package.c:121
+#, fuzzy
+msgid "Packager :"
+msgstr "Paqueteur : %s\n"
+
+#: src/pacman/package.c:122
+#, fuzzy
+msgid "Architecture :"
+msgstr "Architecture : %s\n"
+
+# En français, "construire" un programme n'a pas beaucoup de sens, on le compile
+#: src/pacman/package.c:123
+#, fuzzy
+msgid "Build Date :"
+msgstr "Compilé le : %s %s\n"
+
+#: src/pacman/package.c:125
+#, fuzzy
+msgid "Install Date :"
+msgstr "Installé le : %s %s\n"
+
+#: src/pacman/package.c:126
+#, fuzzy
+msgid "Install Reason :"
+msgstr "Motif d'installation : %s\n"
+
+#: src/pacman/package.c:129
+#, fuzzy
+msgid "Install Script :"
+msgstr "Script d'installation : %s\n"
+
+#: src/pacman/package.c:130
+msgid "Yes"
+msgstr "Oui"
+
+#: src/pacman/package.c:130
+msgid "No"
+msgstr "Non"
+
+#: src/pacman/package.c:135
+#, fuzzy
+msgid "MD5 Sum :"
+msgstr "somme MD5 : %s"
+
+#: src/pacman/package.c:159
+#, fuzzy
+msgid "Repository :"
+msgstr "Dépôt : %s\n"
+
+#: src/pacman/package.c:169
+#, c-format
+msgid "Backup Files:\n"
+msgstr "Fichiers de sauvegarde:\n"
+
+#: src/pacman/package.c:189
+#, fuzzy, c-format
+msgid "error: could not calculate checksums for %s\n"
+msgstr "erreur lors du calcul des sommes de contrôle pour %s\n"
+
+#: src/pacman/package.c:197
+#, c-format
+msgid "MODIFIED\t%s\n"
+msgstr "MODIFIÉ\t%s\n"
+
+#: src/pacman/package.c:199
+#, c-format
+msgid "Not Modified\t%s\n"
+msgstr "Non modifié\t%s\n"
+
+#: src/pacman/package.c:203
+#, c-format
+msgid "MISSING\t\t%s\n"
+msgstr "MANQUANT:\t\t%s\n"
+
+#: src/pacman/package.c:209
+#, c-format
+msgid "(none)\n"
+msgstr "(Aucun)\n"
+
+#: src/pacman/package.c:244
+#, fuzzy, c-format
+msgid "error: no changelog available for '%s'.\n"
+msgstr "Changelog: non disponible pour '%s'.\n"
+
+#: src/pacman/pacman.c:62
+#, fuzzy
+msgid "options"
+msgstr "Options:\n"
+
+#: src/pacman/pacman.c:63
+#, fuzzy
+msgid "file"
+msgstr "Échec.\n"
+
+#: src/pacman/pacman.c:64
+msgid "package"
+msgstr ""
+
+#: src/pacman/pacman.c:65
+msgid "usage"
+msgstr ""
+
+#: src/pacman/pacman.c:66
+#, fuzzy
+msgid "operation"
+msgstr "Options:\n"
+
+#: src/pacman/pacman.c:78
+#, c-format
+msgid ""
+"\n"
+"use '%s --help' with other options for more syntax\n"
+msgstr ""
+"\n"
+"Utilisez '%s --help' avec d'autres options pour une syntaxe plus détaillée.\n"
+
+#: src/pacman/pacman.c:83 src/pacman/pacman.c:97 src/pacman/pacman.c:119
+#, fuzzy, c-format
+msgid " --asdeps install packages as non-explicitly installed\n"
+msgstr ""
+" -u, --sysupgrade liste tous les paquets pouvant être mis à jour\n"
+
+#: src/pacman/pacman.c:84 src/pacman/pacman.c:90 src/pacman/pacman.c:98
+#: src/pacman/pacman.c:121
+#, c-format
+msgid " -d, --nodeps skip dependency checks\n"
+msgstr " -d, --nodeps ne vérifie pas les dépendances\n"
+
+#: src/pacman/pacman.c:85 src/pacman/pacman.c:99 src/pacman/pacman.c:123
+#, c-format
+msgid " -f, --force force install, overwrite conflicting files\n"
+msgstr ""
+" -f, --force force l'installation, en écrasant les fichiers en "
+"conflit\n"
+
+# .
+#: src/pacman/pacman.c:89
+#, c-format
+msgid ""
+" -c, --cascade remove packages and all packages that depend on them\n"
+msgstr ""
+" -c, --cascade supprime les paquets ainsi que tous ceux qui en "
+"dépendent\n"
+
+#: src/pacman/pacman.c:91
+#, c-format
+msgid ""
+" -k, --dbonly only remove database entry, do not remove files\n"
+msgstr ""
+" -k, --dbonly supprime uniquement les entrées dans la base de "
+"données, et non les fichiers\n"
+
+#: src/pacman/pacman.c:92
+#, c-format
+msgid " -n, --nosave remove configuration files as well\n"
+msgstr ""
+" -n, --nosave supprime également les fichiers de configuration\n"
+
+# Formule modifiée, sens préservé!
+#: src/pacman/pacman.c:93
+#, c-format
+msgid ""
+" -s, --recursive remove dependencies also (that won't break packages)\n"
+msgstr ""
+" -s, --recursive supprime également les paquets qui ne dépendent "
+"que de celui-ci\n"
+
+# pour être cohérent
+#: src/pacman/pacman.c:103
+#, c-format
+msgid " -c, --changelog view the changelog of a package\n"
+msgstr " -c, --changelog affiche le Changelog du paquet\n"
+
+#: src/pacman/pacman.c:104
+#, fuzzy, c-format
+msgid " -d, --deps list all packages installed as dependencies\n"
+msgstr ""
+" -u, --sysupgrade liste tous les paquets pouvant être mis à jour\n"
+
+#: src/pacman/pacman.c:105
+#, fuzzy, c-format
+msgid " -e, --explicit list all packages explicitly installed\n"
+msgstr ""
+" -u, --sysupgrade liste tous les paquets pouvant être mis à jour\n"
+
+# id.
+#: src/pacman/pacman.c:106 src/pacman/pacman.c:124
+#, c-format
+msgid " -g, --groups view all members of a package group\n"
+msgstr ""
+" -g, --groups affiche tous les éléments d'un groupe de paquet\n"
+
+#: src/pacman/pacman.c:107
+#, fuzzy, c-format
+msgid ""
+" -i, --info view package information (-ii for backup files)\n"
+msgstr ""
+" -i, --info affiche les informations concernant un paquet\n"
+
+#: src/pacman/pacman.c:108
+#, c-format
+msgid " -l, --list list the contents of the queried package\n"
+msgstr " -l, --list liste le contenu du paquet interrogé\n"
+
+#: src/pacman/pacman.c:109
+#, c-format
+msgid ""
+" -m, --foreign list installed packages not found in sync db(s)\n"
+msgstr ""
+" -m, --foreign liste les paquets non trouvés dans la ou les "
+"bases de données de synchronisation\n"
+
+# il ne peut y en avoir qu'un seul...
+#: src/pacman/pacman.c:110
+#, c-format
+msgid " -o, --owns <file> query the package that owns <file>\n"
+msgstr ""
+" -o, --owns <fichier> recherche le paquet contenant le fichier "
+"<fichier>\n"
+
+# pour être cohérent...
+#: src/pacman/pacman.c:111
+#, c-format
+msgid " -p, --file <package> query a package file instead of the database\n"
+msgstr ""
+" -p, --file <paquet> interroge le fichier <paquet> au lieu de la base "
+"de données\n"
+
+#: src/pacman/pacman.c:112
+#, c-format
+msgid ""
+" -s, --search <regex> search locally-installed packages for matching "
+"strings\n"
+msgstr ""
+" -s, --search <regex> recherche la chaîne correspondante dans les "
+"paquets installés localement\n"
+
+# id.
+#: src/pacman/pacman.c:113
+#, fuzzy, c-format
+msgid " -t, --orphans list all packages not required by any package\n"
+msgstr ""
+" -e, --orphans liste tous les paquets qui ont été installés "
+"comme des dépendances\n"
+
+#: src/pacman/pacman.c:114
+#, c-format
+msgid " -u, --upgrades list all packages that can be upgraded\n"
+msgstr ""
+" -u, --sysupgrade liste tous les paquets pouvant être mis à jour\n"
+
+#: src/pacman/pacman.c:115 src/pacman/pacman.c:136
+#, c-format
+msgid " -q --quiet show less information for query and search\n"
+msgstr ""
+
+#: src/pacman/pacman.c:120
+#, c-format
+msgid ""
+" -c, --clean remove old packages from cache directory (-cc for "
+"all)\n"
+msgstr ""
+" -c, --clean supprime les paquets obsolètes du répertoire de "
+"cache (-cc pour tous)\n"
+
+#: src/pacman/pacman.c:122
+#, c-format
+msgid " -e, --dependsonly install dependencies only\n"
+msgstr " -e, --dependsonly n'installe que les dépendances\n"
+
+#: src/pacman/pacman.c:125
+#, c-format
+msgid " -i, --info view package information\n"
+msgstr ""
+" -i, --info affiche les informations concernant un paquet\n"
+
+#: src/pacman/pacman.c:126
+#, c-format
+msgid " -l, --list <repo> view a list of packages in a repo\n"
+msgstr ""
+" -l, --list <repo> donne une liste de tous les paquets d'un dépôt\n"
+
+# plus clair
+#: src/pacman/pacman.c:127
+#, c-format
+msgid ""
+" -p, --print-uris print out URIs for given packages and their "
+"dependencies\n"
+msgstr ""
+" -p, --print-uris affiche les URIs pour les paquets donnés et pour "
+"leurs dépendances\n"
+
+#: src/pacman/pacman.c:128
+#, c-format
+msgid ""
+" -s, --search <regex> search remote repositories for matching strings\n"
+msgstr ""
+" -s, --search <regex> recherche la chaîne correspondante dans les "
+"dépôts distants\n"
+
+#: src/pacman/pacman.c:129
+#, c-format
+msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
+msgstr " -u, --sysupgrade met à jour tous les paquets obsolètes\n"
+
+#: src/pacman/pacman.c:130
+#, c-format
+msgid ""
+" -w, --downloadonly download packages but do not install/upgrade "
+"anything\n"
+msgstr ""
+" -w, --downloadonly ne fait que télécharger les paquets, sans rien "
+"installer ni mettre à jour\n"
+
+#: src/pacman/pacman.c:131
+#, c-format
+msgid ""
+" -y, --refresh download fresh package databases from the server\n"
+msgstr ""
+" -y, --refresh télécharge les dernières bases de données depuis "
+"le serveur\n"
+
+#: src/pacman/pacman.c:132
+#, c-format
+msgid ""
+" --needed only install outdated or not yet installed packages\n"
+msgstr ""
+
+# moins fidèle, mais plus précis (je changerais l'anglais aussi ici)
+#: src/pacman/pacman.c:133
+#, c-format
+msgid ""
+" --ignore <pkg> ignore a package upgrade (can be used more than "
+"once)\n"
+msgstr ""
+" --ignore <paquet> ignore un paquet lors de la mise à jour (peut "
+"être utilisé plus d'une fois)\n"
+
+# moins fidèle, mais plus précis (je changerais l'anglais aussi ici)
+#: src/pacman/pacman.c:134
+#, fuzzy, c-format
+msgid ""
+" --ignoregroup <grp>\n"
+" ignore a group upgrade (can be used more than once)\n"
+msgstr ""
+" --ignore <paquet> ignore un paquet lors de la mise à jour (peut "
+"être utilisé plus d'une fois)\n"
+
+#: src/pacman/pacman.c:138
+#, c-format
+msgid " --config <path> set an alternate configuration file\n"
+msgstr ""
+" --config <chemin> impose un fichier de configuration alternatif\n"
+
+#: src/pacman/pacman.c:139
+#, fuzzy, c-format
+msgid " --logfile <path> set an alternate log file\n"
+msgstr ""
+" --config <chemin> impose un fichier de configuration alternatif\n"
+
+#: src/pacman/pacman.c:140
+#, c-format
+msgid " --noconfirm do not ask for any confirmation\n"
+msgstr " --noconfirm ne demande aucune confirmation\n"
+
+#: src/pacman/pacman.c:141
+#, c-format
+msgid ""
+" --noprogressbar do not show a progress bar when downloading files\n"
+msgstr ""
+" --noprogressbar n'affiche pas la barre de progression pendant le "
+"téléchargement\n"
+
+#: src/pacman/pacman.c:142
+#, fuzzy, c-format
+msgid ""
+" --noscriptlet do not execute the install scriptlet if one exists\n"
+msgstr ""
+" --noscriptlet n'exécute pas le script d'installation, si le "
+"paquet en contient\n"
+
+#: src/pacman/pacman.c:143
+#, c-format
+msgid " -v, --verbose be verbose\n"
+msgstr " -v, --verbose affiche plus de détails\n"
+
+#: src/pacman/pacman.c:144
+#, c-format
+msgid " -r, --root <path> set an alternate installation root\n"
+msgstr ""
+" -r, --root <chemin> impose un répertoire d'installation alternatif\n"
+
+#: src/pacman/pacman.c:145
+#, c-format
+msgid " -b, --dbpath <path> set an alternate database location\n"
+msgstr ""
+" -b, --dbpath <chemin> impose un emplacement alternatif pour les bases "
+"de données\n"
+
+#: src/pacman/pacman.c:146
+#, c-format
+msgid " --cachedir <dir> set an alternate package cache location\n"
+msgstr " --cachedir <dir> impose un répertoire cache alternatif\n"
+
+# traduction officielle de la GPL
+#: src/pacman/pacman.c:159
+#, fuzzy, c-format
+msgid ""
+" This program may be freely redistributed under\n"
+" the terms of the GNU General Public License\n"
+msgstr " Ce programme peut être librement diffusé sous\n"
+
+#: src/pacman/pacman.c:250
+#, c-format
+msgid "problem setting rootdir '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:267
+#, c-format
+msgid "problem setting dbpath '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:275
+#, c-format
+msgid "problem setting logfile '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:384
+#, fuzzy, c-format
+msgid "'%s' is not a valid debug level\n"
+msgstr "'%s' n'est pas un niveau de débogage valide"
+
+#: src/pacman/pacman.c:398 src/pacman/pacman.c:677
+#, fuzzy, c-format
+msgid "problem adding cachedir '%s' (%s)\n"
+msgstr "l'ajout de la cible '%s' (%s) a échoué\n"
+
+#: src/pacman/pacman.c:484
+msgid "only one operation may be used at a time\n"
+msgstr "une seule opération peut être effectuée à la fois\n"
+
+#: src/pacman/pacman.c:544
+#, fuzzy, c-format
+msgid "config file %s could not be read.\n"
+msgstr "config: ligne %d: le protocole %s n'est pas supporté\n"
+
+#: src/pacman/pacman.c:580
+#, fuzzy, c-format
+msgid "config file %s, line %d: bad section name.\n"
+msgstr "config: ligne %d: mauvais nom de section\n"
+
+#: src/pacman/pacman.c:602
+#, c-format
+msgid "config file %s, line %d: syntax error in config file- missing key.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:612
+#, fuzzy, c-format
+msgid ""
+"config file %s, line %d: 'Include' directive must belong to a section.\n"
+msgstr ""
+"config: ligne %d: toutes les instructions doivent être relatives à la "
+"section\n"
+
+#: src/pacman/pacman.c:640 src/pacman/pacman.c:702 src/pacman/pacman.c:717
+#, fuzzy, c-format
+msgid "config file %s, line %d: directive '%s' not recognized.\n"
+msgstr ""
+"config: ligne %d: toutes les instructions doivent être relatives à la "
+"section\n"
+
+#: src/pacman/pacman.c:787
+#, c-format
+msgid "failed to initialize alpm library (%s)\n"
+msgstr "l'initialisation de la librairie alpm a échoué (%s)\n"
+
+#: src/pacman/pacman.c:824
+msgid "you cannot perform this operation unless you are root.\n"
+msgstr "vous ne pouvez effectuer cette opération à moins d'être root.\n"
+
+#: src/pacman/pacman.c:847
+#, c-format
+msgid "could not register 'local' database (%s)\n"
+msgstr "l'enregistrement de la base de données 'local' a échoué (%s)\n"
+
+#: src/pacman/pacman.c:873
+msgid "no operation specified (use -h for help)\n"
+msgstr "aucune opération spécifiée (utiliser -h pour obtenir de l'aide)\n"
+
+#: src/pacman/query.c:67
+#, fuzzy, c-format
+msgid "error: no file was specified for --owns\n"
+msgstr "aucun fichier spécifié pour --owns\n"
+
+#: src/pacman/query.c:80
+#, fuzzy, c-format
+msgid "error: failed to read file '%s': %s\n"
+msgstr "échec de lecture du fichier '%s': %s"
+
+#: src/pacman/query.c:87
+#, fuzzy, c-format
+msgid "error: cannot determine ownership of a directory\n"
+msgstr "ne peut déterminer le propriétaire d'un répertoire"
+
+#: src/pacman/query.c:95
+#, fuzzy, c-format
+msgid "error: cannot determine real path for '%s': %s\n"
+msgstr "ne peut déterminer le vrai chemin pour '%s': %s"
+
+#: src/pacman/query.c:117
+#, c-format
+msgid "%s is owned by %s %s\n"
+msgstr "%s appartient à %s %s\n"
+
+#: src/pacman/query.c:125
+#, fuzzy, c-format
+msgid "error: No package owns %s\n"
+msgstr "Aucun paquet ne contient %s\n"
+
+#: src/pacman/query.c:221
+#, fuzzy, c-format
+msgid "error: group \"%s\" was not found\n"
+msgstr "Le groupe \"%s\" n'a pas été trouvé\n"
+
+# le sens est plus clair
+#: src/pacman/query.c:232
+#, fuzzy, c-format
+msgid "Checking for package upgrades... \n"
+msgstr "Vérification des mises à jour disponibles... "
+
+#: src/pacman/query.c:243
+#, fuzzy, c-format
+msgid "no upgrades found.\n"
+msgstr "pas de mises à jour trouvées"
+
+#: src/pacman/query.c:362 src/pacman/sync.c:743
+msgid "no usable package repositories configured.\n"
+msgstr "aucun dépôt de paquets utilisable n'a été défini.\n"
+
+#: src/pacman/query.c:406
+#, fuzzy, c-format
+msgid "error: package \"%s\" not found\n"
+msgstr "paquet \"%s\" introuvable\n"
+
+#: src/pacman/remove.c:78 src/pacman/sync.c:583
+#, c-format
+msgid ":: group %s:\n"
+msgstr ":: Groupe %s:\n"
+
+# pour être cohérent
+#: src/pacman/remove.c:80
+msgid " Remove whole content? [Y/n] "
+msgstr " Supprimer tout le contenu? [O/n] "
+
+#: src/pacman/remove.c:84
+#, c-format
+msgid ":: Remove %s from group %s? [Y/n] "
+msgstr ":: Supprimer %s du groupe %s? [O/n] "
+
+#: src/pacman/remove.c:97 src/pacman/sync.c:479 src/pacman/sync.c:540
+#, fuzzy, c-format
+msgid "error: failed to init transaction (%s)\n"
+msgstr "l'initialisation de la transaction a échoué (%s)\n"
+
+#: src/pacman/remove.c:113
+#, fuzzy, c-format
+msgid "error: failed to add target '%s' (%s)\n"
+msgstr "l'ajout de la cible '%s' (%s) a échoué\n"
+
+#: src/pacman/remove.c:158 src/pacman/util.c:462
+msgid "Targets:"
+msgstr "Cibles:"
+
+#: src/pacman/remove.c:161
+msgid ""
+"\n"
+"Do you want to remove these packages? [Y/n] "
+msgstr ""
+"\n"
+"Voulez-vous désinstaller ces paquets? [O/n] "
+
+#: src/pacman/sync.c:52
+#, fuzzy, c-format
+msgid "error: could not access database directory\n"
+msgstr "l'accès au répertoire du cache a échoué\n"
+
+#: src/pacman/sync.c:83
+#, fuzzy, c-format
+msgid "Do you want to remove %s? [Y/n] "
+msgstr ""
+"\n"
+"Voulez-vous désinstaller ces paquets? [O/n] "
+
+#: src/pacman/sync.c:88
+#, fuzzy, c-format
+msgid "error: could not remove repository directory\n"
+msgstr "la suppression du répertoire de cache a échoué\n"
+
+#: src/pacman/sync.c:101
+#, c-format
+msgid "Database directory: %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:102
+#, fuzzy
+msgid "Do you want to remove unused repositories? [Y/n] "
+msgstr ""
+"\n"
+"Voulez-vous désinstaller ces paquets? [O/n] "
+
+#: src/pacman/sync.c:112
+#, c-format
+msgid "Database directory cleaned up\n"
+msgstr ""
+
+#: src/pacman/sync.c:130 src/pacman/sync.c:177
+#, fuzzy, c-format
+msgid "Cache directory: %s\n"
+msgstr "Architecture : %s\n"
+
+# id.
+#: src/pacman/sync.c:131
+#, fuzzy
+msgid "Do you want to remove uninstalled packages from cache? [Y/n] "
+msgstr "Voulez-vous supprimer du cache tous les paquets? [O/n] "
+
+#: src/pacman/sync.c:134
+#, c-format
+msgid "removing old packages from cache... "
+msgstr "Suppression du cache des paquets obsolètes... "
+
+#: src/pacman/sync.c:138
+#, fuzzy, c-format
+msgid "error: could not access cache directory\n"
+msgstr "l'accès au répertoire du cache a échoué\n"
+
+# pour être cohérent
+#: src/pacman/sync.c:178
+#, fuzzy
+msgid "Do you want to remove ALL packages from cache? [Y/n] "
+msgstr "Voulez vous supprimer du cache les paquets obsolètes? [O/n] "
+
+#: src/pacman/sync.c:181
+#, c-format
+msgid "removing all packages from cache... "
+msgstr "Suppression du cache de tous les paquets... "
+
+#: src/pacman/sync.c:184
+#, fuzzy, c-format
+msgid "error: could not remove cache directory\n"
+msgstr "la suppression du répertoire de cache a échoué\n"
+
+#: src/pacman/sync.c:189
+#, fuzzy, c-format
+msgid "error: could not create new cache directory\n"
+msgstr "la création du nouveau répertoire de cache a échoué\n"
+
+#: src/pacman/sync.c:216
+#, fuzzy, c-format
+msgid "error: failed to synchronize %s: %s\n"
+msgstr "la synchronisation %s: %s a échoué\n"
+
+#: src/pacman/sync.c:219
+#, fuzzy, c-format
+msgid "error: failed to update %s (%s)\n"
+msgstr "la mise à jour de %s (%s) a échoué\n"
+
+#: src/pacman/sync.c:223
+#, c-format
+msgid " %s is up to date\n"
+msgstr " %s est à jour;\n"
+
+#: src/pacman/sync.c:366
+#, fuzzy, c-format
+msgid "error: repository '%s' does not exist\n"
+msgstr "le dépôt '%s' n'a pas été trouvé\n"
+
+#: src/pacman/sync.c:381
+#, fuzzy, c-format
+msgid "error: package '%s' was not found in repository '%s'\n"
+msgstr "le paquet '%s' n'a pas été trouvé dans le dépôt '%s'\n"
+
+# pour être cohérent
+#: src/pacman/sync.c:401
+#, fuzzy, c-format
+msgid "error: package '%s' was not found\n"
+msgstr "le paquet \"%s\" n'a pas été trouvé.\n"
+
+#: src/pacman/sync.c:438
+#, fuzzy, c-format
+msgid "error: repository \"%s\" was not found.\n"
+msgstr "le dépôt \"%s\" n'a pas été trouvé.\n"
+
+#: src/pacman/sync.c:490
+#, c-format
+msgid ":: Synchronizing package databases...\n"
+msgstr ":: Synchronisation des bases de données de paquets...\n"
+
+#: src/pacman/sync.c:493
+#, fuzzy, c-format
+msgid "error: failed to synchronize any databases\n"
+msgstr "la synchronisation a échoué"
+
+# un processus ne démarre pas (les véhiculent démarrent), il débute
+#: src/pacman/sync.c:505
+#, c-format
+msgid ":: Starting full system upgrade...\n"
+msgstr ":: Début de la mise à jour complète du système...\n"
+
+#: src/pacman/sync.c:526
+#, c-format
+msgid ""
+":: pacman has detected a newer version of itself.\n"
+":: It is recommended that you upgrade pacman by itself\n"
+":: using 'pacman -S pacman', and then rerun the current\n"
+":: operation. If you wish to continue the operation and\n"
+":: not upgrade pacman separately, answer no.\n"
+msgstr ""
+
+#: src/pacman/sync.c:531
+msgid ":: Cancel current operation? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:533 src/pacman/sync.c:720
+#, fuzzy, c-format
+msgid "error: failed to release transaction (%s)\n"
+msgstr "la libération de la transaction a échoué (%s)\n"
+
+#: src/pacman/sync.c:545
+#, fuzzy, c-format
+msgid "error: pacman: %s\n"
+msgstr "pacman: %s\n"
+
+#: src/pacman/sync.c:569
+#, fuzzy, c-format
+msgid "error: '%s': %s\n"
+msgstr "'%s': %s\n"
+
+#: src/pacman/sync.c:588
+msgid ":: Install whole content? [Y/n] "
+msgstr ":: Installer tout le contenu? [O/n] "
+
+#: src/pacman/sync.c:595
+#, c-format
+msgid ":: Install %s from group %s? [Y/n] "
+msgstr ":: Installer %s du groupe %s? [O/n] "
+
+# pour être cohérent
+#: src/pacman/sync.c:604
+#, fuzzy, c-format
+msgid "error: '%s': not found in sync db\n"
+msgstr "'%s': non trouvé dans la base de données de synchronisation\n"
+
+#: src/pacman/sync.c:631
+#, fuzzy, c-format
+msgid ":: %s: conflicts with %s\n"
+msgstr ":: %s: est en conflit avec %s"
+
+#: src/pacman/sync.c:645
+#, c-format
+msgid " local database is up to date\n"
+msgstr "La base de données locale est à jour.\n"
+
+#: src/pacman/sync.c:657
+#, fuzzy, c-format
+msgid "Beginning download...\n"
+msgstr ""
+"\n"
+"Début du téléchargement...\n"
+
+#: src/pacman/sync.c:660
+msgid "Proceed with download? [Y/n] "
+msgstr "Procéder au téléchargement? [O/n] "
+
+#: src/pacman/sync.c:664
+#, fuzzy, c-format
+msgid "Beginning upgrade process...\n"
+msgstr ""
+"\n"
+"Début du processus de mise à jour...\n"
+
+#: src/pacman/sync.c:667
+msgid "Proceed with installation? [Y/n] "
+msgstr "Procéder à l'installation? [O/n] "
+
+#: src/pacman/sync.c:708
+#, fuzzy, c-format
+msgid "Errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"Des erreurs se sont produites, aucun paquet n'a été mis à jour.\n"
+
+# bon, on peut discuter là dessus; mais pacman -Qi avec tous ses "aucun" est vraiment trop laid... je le préfère comme ça
+#: src/pacman/util.c:356 src/pacman/util.c:388
+#, c-format
+msgid "None\n"
+msgstr "--\n"
+
+#: src/pacman/util.c:454
+msgid "Remove:"
+msgstr "Suppression:"
+
+#: src/pacman/util.c:458
+#, fuzzy, c-format
+msgid "Total Removed Size: %.2f MB\n"
+msgstr ""
+"\n"
+"Taille totale des paquets supprimés: %.2f Mo\n"
+
+#: src/pacman/util.c:465
+#, fuzzy, c-format
+msgid "Total Download Size: %.2f MB\n"
+msgstr "Taille totale des paquets installés: %.2f Mo\n"
+
+#: src/pacman/util.c:469
+#, c-format
+msgid "Total Installed Size: %.2f MB\n"
+msgstr "Taille totale des paquets installés: %.2f Mo\n"
+
+#: src/pacman/util.c:496
+msgid "Y"
+msgstr "O"
+
+#: src/pacman/util.c:496
+msgid "YES"
+msgstr "OUI"
+
+#: src/pacman/util.c:557
+#, fuzzy, c-format
+msgid "debug: "
+msgstr "Débogage"
+
+#: src/pacman/util.c:560
+#, c-format
+msgid "error: "
+msgstr "Erreur: "
+
+#: src/pacman/util.c:563
+#, c-format
+msgid "warning: "
+msgstr "Avertissement: "
+
+#: src/pacman/util.c:568
+#, fuzzy, c-format
+msgid "function: "
+msgstr "Fonction"
+
+#: scripts/abs.sh.in:60 scripts/makepkg.sh.in:110 scripts/makepkg.sh.in:112
+#: scripts/repo-add.sh.in:50 scripts/repo-remove.sh.in:50
+msgid "ERROR:"
+msgstr ""
+
+#: scripts/abs.sh.in:65
+msgid "abs (pacman) %s - download a PKGBUILD tree from a CVS repository"
+msgstr ""
+
+#: scripts/abs.sh.in:66
+msgid "Usage %s [options] [repository...]"
+msgstr ""
+
+#: scripts/abs.sh.in:67 scripts/makepkg.sh.in:1055
+#, fuzzy
+msgid "Options:"
+msgstr "Options:\n"
+
+#: scripts/abs.sh.in:68
+msgid " -p, --passive The connection is opened in passive mode."
+msgstr ""
+
+#: scripts/abs.sh.in:70
+msgid " -h, --help Display this help message then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:71
+msgid " -V, --version Display version information then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:73
+msgid ""
+"abs will synchronize build scripts from the CVS repository\\ninto %s. You "
+"can follow different package trees by\\nediting %s files. If no argument is "
+"given, abs\\nwill synchronize from supfiles specified in %s.\\n\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:79
+msgid "Report bugs to <%s>."
+msgstr ""
+
+#: scripts/abs.sh.in:84 scripts/gensync.sh.in:54 scripts/makepkg.sh.in:1088
+#: scripts/pacman-optimize.sh.in:59 scripts/repo-remove.sh.in:66
+msgid ""
+"Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:130 scripts/pacman-optimize.sh.in:100
+#, fuzzy
+msgid "%s does not exist or is not a directory."
+msgstr "'%s' n'est pas un répertoire de cache valide\n"
+
+#: scripts/abs.sh.in:133
+msgid "You do not have write permissions in %s."
+msgstr ""
+
+#: scripts/abs.sh.in:143
+msgid "Missing CVS synchronization utility. Install csup or cvsup."
+msgstr ""
+
+#: scripts/abs.sh.in:166
+#, fuzzy
+msgid "Updating %s..."
+msgstr "Mise à jour de %s... "
+
+#: scripts/gensync.sh.in:34
+msgid "Usage: %s <root> <destfile> [package_directory]"
+msgstr ""
+
+#: scripts/gensync.sh.in:35
+msgid ""
+"gensync will generate a sync database by reading all PKGBUILD files\\nfrom "
+"<root>. gensync builds the database in a temporary directory\\nand then "
+"compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:39
+msgid ""
+"gensync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:42
+msgid ""
+"note: The <destfile> name is important. It must be of the form\\n "
+"{treename}.db.tar.gz where {treename} is the name of the custom\\n "
+"package repository you configured in /etc/pacman.conf. The\\n generated "
+"database must reside in the same directory as your\\n custom packages "
+"(also configured in /etc/pacman.conf)\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:48
+msgid "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
+msgstr ""
+
+#: scripts/gensync.sh.in:102 scripts/updatesync.sh.in:101
+msgid "%s not found. Can not continue."
+msgstr ""
+
+#: scripts/gensync.sh.in:120
+msgid "invalid root dir: %s"
+msgstr ""
+
+#: scripts/gensync.sh.in:122
+msgid "gensync: building database entries, generating md5sums..."
+msgstr ""
+
+#: scripts/gensync.sh.in:131
+#, fuzzy
+msgid "failed to parse parse %s"
+msgstr "la mise à jour de %s (%s) a échoué\n"
+
+#: scripts/gensync.sh.in:142
+msgid "could not find %s-%s-%s-%s.%s - skipping"
+msgstr ""
+
+#: scripts/gensync.sh.in:152
+#, fuzzy
+msgid "creating repo DB..."
+msgstr "Nettoyage... "
+
+#: scripts/makepkg.sh.in:101 scripts/makepkg.sh.in:103
+#: scripts/repo-add.sh.in:45 scripts/repo-remove.sh.in:45
+msgid "WARNING:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:143
+#, fuzzy
+msgid "Cleaning up..."
+msgstr "Nettoyage... "
+
+#: scripts/makepkg.sh.in:193
+msgid ""
+"Options beginning with 'no' will be deprecated in the next version of "
+"makepkg!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:194
+msgid "Please replace 'no' with '!': %s -> %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:198
+msgid "Option 'keepdocs' may not work as intended. Please replace with 'docs'."
+msgstr ""
+
+#: scripts/makepkg.sh.in:286
+msgid "There is no agent set up to handle %s URLs. Check %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:287 scripts/makepkg.sh.in:296
+#: scripts/makepkg.sh.in:448 scripts/makepkg.sh.in:476
+#: scripts/makepkg.sh.in:522 scripts/makepkg.sh.in:610
+#: scripts/makepkg.sh.in:638 scripts/makepkg.sh.in:700
+#: scripts/makepkg.sh.in:767 scripts/makepkg.sh.in:1105
+#: scripts/makepkg.sh.in:1415 scripts/makepkg.sh.in:1419
+msgid "Aborting..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:295
+msgid "The download program %s is not installed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:311
+msgid "Pacman returned a fatal error (%i): %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:335
+#, fuzzy
+msgid "Installing missing dependencies..."
+msgstr "Résolution des dépendances... "
+
+#: scripts/makepkg.sh.in:345
+msgid "Pacman failed to install missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:349
+#, fuzzy
+msgid "Building missing dependencies..."
+msgstr "Résolution des dépendances... "
+
+#: scripts/makepkg.sh.in:354
+msgid "Source root cannot be found - please make sure it is specified in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:362
+#, fuzzy
+msgid "Could not find '%s' under %s"
+msgstr "n'a pas pu ajouter la cible '%s': %s\n"
+
+#: scripts/makepkg.sh.in:378
+#, fuzzy
+msgid "Failed to build '%s'"
+msgstr "échec de lecture du fichier '%s': %s"
+
+#: scripts/makepkg.sh.in:411
+msgid "Failed to install all missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:414
+#, fuzzy
+msgid "Missing Dependencies:"
+msgstr "Résolution des dépendances... "
+
+# pas du tout littéral, mais plus compréhensible
+#: scripts/makepkg.sh.in:444
+#, fuzzy
+msgid "Retrieving Sources..."
+msgstr ":: Récupération des paquets du dépôt %s...\n"
+
+#: scripts/makepkg.sh.in:447
+msgid "You do not have write permission to store downloads in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:458
+msgid "Found %s in build dir"
+msgstr ""
+
+#: scripts/makepkg.sh.in:462
+msgid "Using cached copy of %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:470
+#, fuzzy
+msgid "Downloading %s..."
+msgstr "Mise à jour de %s... "
+
+#: scripts/makepkg.sh.in:475
+#, fuzzy
+msgid "Failure while downloading %s"
+msgstr "échec lors du téléchargement de %s\n"
+
+#: scripts/makepkg.sh.in:486
+#, fuzzy
+msgid "Generating checksums for source files..."
+msgstr "erreur lors du calcul des sommes de contrôle pour %s\n"
+
+#: scripts/makepkg.sh.in:495
+msgid "Invalid integrity algorithm '%s' specified."
+msgstr ""
+
+#: scripts/makepkg.sh.in:500 scripts/makepkg.sh.in:552
+msgid "Cannot find the '%s' program."
+msgstr ""
+
+#: scripts/makepkg.sh.in:521
+msgid "Unable to find source file %s to generate checksum."
+msgstr ""
+
+#: scripts/makepkg.sh.in:547
+msgid "Invalid integrity algorithm '%s' specified"
+msgstr ""
+
+#: scripts/makepkg.sh.in:558
+msgid "Validating source files with %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:568
+#, fuzzy
+msgid "NOT FOUND"
+msgstr "N'EST PAS"
+
+#: scripts/makepkg.sh.in:577
+msgid "Passed"
+msgstr ""
+
+#: scripts/makepkg.sh.in:579
+msgid "FAILED"
+msgstr ""
+
+#: scripts/makepkg.sh.in:587
+msgid "One or more files did not pass the validity check!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:591
+msgid "Integrity checks (%s) are missing or incomplete."
+msgstr ""
+
+#: scripts/makepkg.sh.in:597
+msgid "Extracting Sources..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:609
+msgid "Unable to find source file %s for extraction."
+msgstr ""
+
+#: scripts/makepkg.sh.in:637
+#, fuzzy
+msgid "Failed to extract %s"
+msgstr "la préparation de la transaction a échoué (%s)\n"
+
+#: scripts/makepkg.sh.in:669
+msgid "Starting build()..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:699
+msgid "Build Failed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:708
+msgid "Tidying install..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:711
+#, fuzzy
+msgid "Removing info/doc files..."
+msgstr "Résolution des dépendances... "
+
+#: scripts/makepkg.sh.in:717
+msgid "Moving usr/share/man files to usr/man..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:724
+msgid "Compressing man pages..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:742
+msgid "Stripping debugging symbols from binaries and libraries..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:754
+msgid "Removing libtool .la files..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:759
+#, fuzzy
+msgid "Removing empty directories..."
+msgstr "Résolution des dépendances... "
+
+#: scripts/makepkg.sh.in:766
+msgid "Missing pkg/ directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:772
+#, fuzzy
+msgid "Creating package..."
+msgstr "Chargement des données du paquet... "
+
+#: scripts/makepkg.sh.in:782
+msgid "Generating .FILELIST file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:792
+msgid "Generating .PKGINFO file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:838
+msgid "Please add a license line to your %s!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:839
+msgid "Example for GPL'ed software: license=('GPL')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:847 scripts/makepkg.sh.in:942
+msgid "Adding install script..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:854
+#, fuzzy
+msgid "Adding package changelog..."
+msgstr "Chargement des données du paquet... "
+
+#: scripts/makepkg.sh.in:860
+#, fuzzy
+msgid "Compressing package..."
+msgstr "Chargement des données du paquet... "
+
+#: scripts/makepkg.sh.in:865
+#, fuzzy
+msgid "Failed to create package file."
+msgstr "le chargement du paquet '%s' (%s) a échoué\n"
+
+#: scripts/makepkg.sh.in:874
+msgid "Cannot find the xdelta binary! Is xdelta installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:904
+msgid "Making delta from version %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:918
+msgid "Recreating package tarball from delta to match md5 signatures"
+msgstr ""
+
+#: scripts/makepkg.sh.in:919
+msgid "NOTE: the delta should ONLY be distributed with this tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:923
+msgid "Could not generate the package from the delta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:927
+msgid "Delta was not able to be created."
+msgstr ""
+
+#: scripts/makepkg.sh.in:930
+msgid "No previous version found, skipping xdelta."
+msgstr ""
+
+# le sens est plus clair
+#: scripts/makepkg.sh.in:936
+#, fuzzy
+msgid "Creating source package..."
+msgstr "Vérification des mises à jour disponibles... "
+
+#: scripts/makepkg.sh.in:938 scripts/makepkg.sh.in:950
+#: scripts/makepkg.sh.in:957
+#, fuzzy
+msgid "Adding %s..."
+msgstr "Mise à jour de %s... "
+
+#: scripts/makepkg.sh.in:945
+#, fuzzy
+msgid "Install script %s not found."
+msgstr "Script d'installation : %s\n"
+
+# le sens est plus clair
+#: scripts/makepkg.sh.in:965
+#, fuzzy
+msgid "Compressing source package..."
+msgstr "Vérification des mises à jour disponibles... "
+
+#: scripts/makepkg.sh.in:967
+msgid "Failed to create source package file."
+msgstr ""
+
+#: scripts/makepkg.sh.in:975
+#, fuzzy
+msgid "Installing package with pacman -U..."
+msgstr "Chargement des données du paquet... "
+
+#: scripts/makepkg.sh.in:992
+msgid "Determining latest darcs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:995
+msgid "Determining latest cvs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:998
+msgid "Determining latest git revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1001
+msgid "Determining latest svn revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1004
+msgid "Determining latest bzr revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1007
+msgid "Determining latest hg revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1022
+#, fuzzy
+msgid "Version found: %s"
+msgstr "Version : %s\n"
+
+#: scripts/makepkg.sh.in:1053
+#, fuzzy
+msgid "Usage: %s [options]"
+msgstr "Utilisation: %s {-A --add} [options] <fichier>\n"
+
+#: scripts/makepkg.sh.in:1056
+msgid " -A, --ignorearch Ignore incomplete arch field in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1057
+msgid " -b, --builddeps Build missing dependencies from source"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1058
+msgid " -c, --clean Clean up work files after build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1059
+msgid " -C, --cleancache Clean up source files from the cache"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1060
+#, fuzzy
+msgid " -d, --nodeps Skip all dependency checks"
+msgstr " -d, --nodeps ne vérifie pas les dépendances\n"
+
+#: scripts/makepkg.sh.in:1061
+msgid " -e, --noextract Do not extract source files (use existing src/ dir)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1062
+#, fuzzy
+msgid " -f, --force Overwrite existing package"
+msgstr ""
+" -f, --force force l'installation, en écrasant les fichiers en "
+"conflit\n"
+
+#: scripts/makepkg.sh.in:1063
+msgid " -g, --geninteg Generate integrity checks for source files"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1064
+msgid " -h, --help This help"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1065
+msgid " -i, --install Install package after successful build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1066
+#, fuzzy
+msgid " -L, --log Log package build process"
+msgstr ""
+" -i, --info affiche les informations concernant un paquet\n"
+
+#: scripts/makepkg.sh.in:1067
+msgid " -m, --nocolor Disable colorized output messages"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1068
+msgid " -o, --nobuild Download and extract files only"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1069
+msgid " -p <buildscript> Use an alternate build script (instead of '%s')"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1070
+#, fuzzy
+msgid ""
+" -r, --rmdeps Remove installed dependencies after a successful build"
+msgstr " -e, --dependsonly n'installe que les dépendances\n"
+
+#: scripts/makepkg.sh.in:1072
+msgid " -R, --repackage Repackage contents of pkg/ without building"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1073
+#, fuzzy
+msgid " -s, --syncdeps Install missing dependencies with pacman"
+msgstr " -e, --dependsonly n'installe que les dépendances\n"
+
+#: scripts/makepkg.sh.in:1074
+msgid " --asroot Allow makepkg to run as root user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1075
+msgid " --source Do not build package; generate a source-only tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1077
+msgid "These options can be passed to pacman:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1079
+#, fuzzy
+msgid ""
+" --noconfirm Do not ask for confirmation when resolving "
+"dependencies"
+msgstr " --noconfirm ne demande aucune confirmation\n"
+
+#: scripts/makepkg.sh.in:1080
+#, fuzzy
+msgid ""
+" --noprogressbar Do not show a progress bar when downloading files"
+msgstr ""
+" --noprogressbar n'affiche pas la barre de progression pendant le "
+"téléchargement\n"
+
+#: scripts/makepkg.sh.in:1082
+msgid "If -p is not specified, makepkg will look for '%s'"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1104
+#, fuzzy
+msgid "%s not found."
+msgstr "paquet \"%s\" introuvable\n"
+
+#: scripts/makepkg.sh.in:1177
+msgid "Sudo is used by default now. The --usesudo option is deprecated!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1192
+msgid "Cleaning up ALL files from %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1193
+msgid " Are you sure you wish to do this? [Y/n] "
+msgstr ""
+
+#: scripts/makepkg.sh.in:1199
+msgid "Problem removing files; you may not have correct permissions in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1203
+msgid "Source cache cleaned."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1208
+msgid "No files have been removed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1213
+msgid "Source destination must be defined in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1214
+msgid "In addition, please run makepkg -C outside of your cache directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1220
+msgid "BUILDSCRIPT is undefined! Ensure you have updated %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1227
+msgid "Running makepkg as root is a BAD idea and can cause"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1228
+msgid "permanent, catastrophic damage to your system. If you"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1229
+msgid "wish to run as root, please use the --asroot option."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1233
+msgid "The --asroot option is meant for the root user only."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1234
+msgid "Please rerun makepkg without the --asroot flag."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1238
+msgid "Fakeroot must be installed if using the 'fakeroot' option"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1239
+msgid "in the BUILDENV array in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1243
+msgid "Running makepkg as an unprivileged user will result in non-root"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1244
+msgid "ownership of the packaged files. Try using the fakeroot environment by"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1245
+msgid "placing 'fakeroot' in the BUILDENV array in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1250
+msgid "Do not use the '-F' option. This option is only for use by makepkg."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1259
+msgid "Cannot find the sudo binary! Is sudo installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1260
+msgid "Missing dependencies cannot be installed or removed as a normal user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1261
+msgid "without sudo; install and configure sudo to auto-resolve dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1271
+#, fuzzy
+msgid "%s does not exist."
+msgstr "le dépôt '%s' n'a pas été trouvé\n"
+
+#: scripts/makepkg.sh.in:1286 scripts/makepkg.sh.in:1290
+#, fuzzy
+msgid "%s is not allowed to be empty."
+msgstr "'%s' n'est pas un chemin valide vers la base de données\n"
+
+#: scripts/makepkg.sh.in:1294 scripts/makepkg.sh.in:1298
+msgid "%s is not allowed to contain hyphens."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1308 scripts/makepkg.sh.in:1313
+msgid "%s is not available for the '%s' architecture."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1309 scripts/makepkg.sh.in:1314
+msgid "Note that many packages may need a line added to their %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1310 scripts/makepkg.sh.in:1315
+msgid "such as arch=('%s')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1320
+#, fuzzy
+msgid "Install scriptlet (%s) does not exist."
+msgstr "le dépôt '%s' n'a pas été trouvé\n"
+
+#: scripts/makepkg.sh.in:1330
+msgid "A package has already been built, installing existing package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1334 scripts/makepkg.sh.in:1366
+msgid "A package has already been built. (use -f to overwrite)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1343 scripts/makepkg.sh.in:1442
+msgid "Skipping build."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1352
+msgid "Leaving fakeroot environment."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1356
+#, fuzzy
+msgid "Making package: %s"
+msgstr "Chargement des données du paquet... "
+
+#: scripts/makepkg.sh.in:1359
+msgid "Running makepkg as root..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1370
+msgid "Source package created: %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1377
+#, fuzzy
+msgid "Skipping dependency checks."
+msgstr "Vérification des dépendances... "
+
+#: scripts/makepkg.sh.in:1384
+#, fuzzy
+msgid "Checking Runtime Dependencies..."
+msgstr "Vérification des dépendances... "
+
+#: scripts/makepkg.sh.in:1387
+#, fuzzy
+msgid "Checking Buildtime Dependencies..."
+msgstr "Vérification des dépendances... "
+
+#: scripts/makepkg.sh.in:1391
+#, fuzzy
+msgid "Could not resolve all dependencies."
+msgstr "Résolution des dépendances... "
+
+#: scripts/makepkg.sh.in:1395
+msgid "pacman was not found in PATH; skipping dependency checks."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1409
+msgid "Skipping source retrieval -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1410
+msgid "Skipping source integrity checks -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1411
+msgid "Skipping source extraction -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1414
+msgid "The source directory is empty, there is nothing to build!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1418
+msgid "The package directory is empty, there is nothing to repackage!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1429
+msgid "Sources are ready."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1434
+msgid "Removing existing pkg/ directory..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1451
+msgid "Entering fakeroot environment..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1464
+msgid "Finished making: %s"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:44
+msgid "Usage: %s [pacman_db_root]"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:45
+msgid ""
+"pacman-optimize is a little hack that should improve the performance\\nof "
+"pacman when reading/writing to its filesystem-based database.\\n\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:48
+msgid ""
+"Because pacman uses many small files to keep track of packages,\\nthere is a "
+"tendency for these files to become fragmented over time.\\nThis script "
+"attempts to relocate these small files into one\\ncontinuous location on "
+"your hard drive. The result is that the hard\\ndrive should be able to read "
+"them faster, since the hard drive head\\ndoes not have to move around the "
+"disk as much.\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:91
+msgid "diff tool was not found, please install diffutils."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:96
+msgid "Pacman lock file was found. Cannot run while pacman is running."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:104
+msgid "You must have correct permissions to optimize the database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:108
+msgid "ERROR: Can not create temp directory for database building."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:114
+msgid "MD5sum'ing the old database..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:118
+#, fuzzy
+msgid "Tar'ing up %s..."
+msgstr "Nettoyage... "
+
+#: scripts/pacman-optimize.sh.in:123
+msgid "Tar'ing up %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:127
+msgid "Making and MD5sum'ing the new db..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:132
+msgid "Untar'ing %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:138
+#, fuzzy
+msgid "Checking integrity..."
+msgstr "Analyse de l'intégrité des paquets... "
+
+#: scripts/pacman-optimize.sh.in:144
+msgid "Integrity check FAILED, reverting to old database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:149
+msgid "Putting the new database in place..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:158
+msgid "Finished. Your pacman database has been optimized."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:159
+msgid "For full benefits of pacman-optimize, run 'sync' now."
+msgstr ""
+
+#: scripts/repo-add.sh.in:56
+msgid "Usage: %s <path-to-db> [--force] <package> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:57
+msgid ""
+"repo-add will update a package database by reading a package file."
+"\\nMultiple packages to add can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:60
+msgid ""
+"The --force flag will add a 'force' entry to the sync database, which"
+"\\ntells pacman to skip its internal version number checking and update"
+"\\nthe package regardless.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:64
+msgid "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
+msgstr ""
+
+#: scripts/repo-add.sh.in:69
+msgid ""
+"Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:173
+msgid "Invalid package file '%s'."
+msgstr ""
+
+# pas du tout littéral, mais plus compréhensible
+#: scripts/repo-add.sh.in:182 scripts/repo-remove.sh.in:91
+#, fuzzy
+msgid "Removing existing package '%s'..."
+msgstr ":: Récupération des paquets du dépôt %s...\n"
+
+#: scripts/repo-add.sh.in:192
+msgid "Creating 'desc' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:202
+msgid "Computing md5 checksums..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:214
+#, fuzzy
+msgid "Creating 'depends' db entry..."
+msgstr "Résolution des dépendances... "
+
+#: scripts/repo-add.sh.in:230
+msgid "Creating 'deltas' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:236
+msgid "Added delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:238
+#, fuzzy
+msgid "Could not add delta '%s'"
+msgstr "n'a pas pu ajouter la cible '%s': %s\n"
+
+#: scripts/repo-add.sh.in:276 scripts/repo-remove.sh.in:123
+msgid "%s not found. Cannot continue."
+msgstr ""
+
+#: scripts/repo-add.sh.in:286 scripts/repo-remove.sh.in:133
+msgid "Cannot create temp directory for database building."
+msgstr ""
+
+#: scripts/repo-add.sh.in:297 scripts/repo-remove.sh.in:142
+msgid "Repository file '%s' is not a proper pacman database."
+msgstr ""
+
+#: scripts/repo-add.sh.in:300 scripts/repo-remove.sh.in:145
+msgid "Extracting database to a temporary location..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:306
+msgid "'%s' is not a package file, skipping"
+msgstr ""
+
+#: scripts/repo-add.sh.in:308
+#, fuzzy
+msgid "Adding package '%s'"
+msgstr "Chargement des données du paquet... "
+
+# pour être cohérent
+#: scripts/repo-add.sh.in:315
+#, fuzzy
+msgid "Package '%s' not found."
+msgstr "le paquet \"%s\" n'a pas été trouvé.\n"
+
+#: scripts/repo-add.sh.in:322
+msgid "Creating updated database file %s"
+msgstr ""
+
+#: scripts/repo-add.sh.in:332 scripts/repo-remove.sh.in:170
+msgid "No compression set."
+msgstr ""
+
+#: scripts/repo-add.sh.in:340 scripts/repo-remove.sh.in:178
+msgid "No packages modified, nothing to do."
+msgstr ""
+
+#: scripts/repo-remove.sh.in:55
+msgid "repo-remove %s\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:56
+msgid "usage: %s <path-to-db> <packagename> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:57
+msgid ""
+"repo-remove will update a package database by removing the package name"
+"\\nspecified on the command line from the given repo database. Multiple"
+"\\npackages to remove can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:61
+msgid "Example: repo-remove /path/to/repo.db.tar.gz kernel26"
+msgstr ""
+
+# le sens est plus clair
+#: scripts/repo-remove.sh.in:149
+#, fuzzy
+msgid "Searching for package '%s'..."
+msgstr "Vérification des mises à jour disponibles... "
+
+# pour être cohérent
+#: scripts/repo-remove.sh.in:154
+#, fuzzy
+msgid "Package matching '%s' not found."
+msgstr "le paquet \"%s\" n'a pas été trouvé.\n"
+
+#: scripts/repo-remove.sh.in:161
+msgid "Creating updated database file '%s'..."
+msgstr ""
+
+#: scripts/updatesync.sh.in:35
+msgid "Usage: %s <action> <destfile> <option> [package_directory]"
+msgstr ""
+
+#: scripts/updatesync.sh.in:36
+msgid ""
+"updatesync will update a sync database by reading a PKGBUILD and\\nmodifying "
+"the destfile. updatesync updates the database in a temporary\\ndirectory and "
+"then compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:40
+msgid "There are two types of actions:\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:41
+msgid ""
+"upd - Will update a package's entry or create it if it doesn't exist."
+"\\n It takes the package's PKGBUILD as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:42
+msgid ""
+"del - Will remove a package's entry from the db. It takes the package's"
+"\\n name as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:44
+msgid ""
+"updatesync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:47
+msgid "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
+msgstr ""
+
+#: scripts/updatesync.sh.in:53
+msgid ""
+"Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:123
+#, fuzzy
+msgid "%s not found"
+msgstr "paquet \"%s\" introuvable\n"
+
+#: scripts/updatesync.sh.in:129
+#, fuzzy
+msgid "failed to parse %s"
+msgstr "la lecture de la configuration a échoué (%s)\n"
+
+#: scripts/updatesync.sh.in:136
+msgid "could not find %s-%s-%s-%s.%s - aborting"
+msgstr ""
+
+# improbable (mais pas impossible) que seul 1 Mo soit disponible; par défaut, le pluriel est meilleur. A disposition remplace disponible pour éviter le problème.
+#~ msgid ":: %.1f MB required, have %.1f MB"
+#~ msgstr ":: %.1f Mo nécessaires, %.1f Mo à disposition"
+
+#~ msgid "error"
+#~ msgstr "Erreur"
+
+#~ msgid "warning"
+#~ msgstr "Avertissement"
+
+#~ msgid "Removes :"
+#~ msgstr "Supprime :"
+
+# En français, "construire" un programme n'a pas beaucoup de sens, on le compile
+#~ msgid "Build Type : %s\n"
+#~ msgstr "Type de compilation : %s\n"
+
+#~ msgid "SHA1 Sum : %s"
+#~ msgstr "somme SHA1 : %s"
+
+#~ msgid "usage: %s {-R --remove} [options] <package>\n"
+#~ msgstr "Utilisation: %s {-R --remove} [options] <paquet>\n"
+
+#~ msgid ""
+#~ " --ask <number> pre-specify answers for questions (see manpage)\n"
+#~ msgstr ""
+#~ " --ask <nombre> spécifie à l'avance la réponses à certaines "
+#~ "questions (voir la page de manuel)\n"
+
+#~ msgid "'%s' is not a valid root path\n"
+#~ msgstr "'%s' n'est pas un chemin racine valide\n"
+
+#~ msgid "Targets :"
+#~ msgstr "Cibles :"
+
+#~ msgid "no package file was specified for --file\n"
+#~ msgstr "aucun fichier du paquet spécifié pour --file\n"
+
+#~ msgid ":: %s is required by %s\n"
+#~ msgstr ":: %s est requis par %s\n"
+
+#~ msgid "synchronizing package lists"
+#~ msgstr "Synchronisation des listes de paquets"
+
+#~ msgid "starting full system upgrade"
+#~ msgstr "Début de la mise à jour complète du système"
+
+#~ msgid ""
+#~ "\n"
+#~ ":: pacman has detected a newer version of the \"pacman\" package.\n"
+#~ msgstr ""
+#~ "\n"
+#~ ":: pacman a détecté une version plus récente du paquet \"pacman\".\n"
+
+# moins littéral, mais plus explicite
+#~ msgid ":: It is recommended that you allow pacman to upgrade itself\n"
+#~ msgstr ":: Il est recommandé de mettre d'abord pacman à jour\n"
+
+#~ msgid ""
+#~ ":: first, then you can re-run the operation with the newer version.\n"
+#~ msgstr ":: puis de relancer l'opération avec la nouvelle version.\n"
+
+#~ msgid ":: Upgrade pacman first? [Y/n] "
+#~ msgstr ":: Mettre à jour pacman d'abord? [O/n] "
+
+#~ msgid "requires"
+#~ msgstr "requiert"
+
+#~ msgid "installed %s (%s)"
+#~ msgstr "%s installé (%s)"
+
+#~ msgid "removed %s (%s)"
+#~ msgstr "%s désinstallé (%s)"
+
+#~ msgid "upgraded %s (%s -> %s)"
+#~ msgstr "%s mis à jour (%s -> %s)"
+
+#~ msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
+#~ msgstr ""
+#~ ":: %s-%s: la version locale est à jour. Mettre à jour tout de même? [O/n] "
+
+#~ msgid ""
+#~ "\n"
+#~ "Total Package Size: %.2f MB\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Taille totale des paquets: %.2f Mo\n"
+
+# "Utilisation" pour "usage", suggéré par nano, excellement traduit
+#~ msgid "usage: %s {-h --help}\n"
+#~ msgstr "Utilisation: %s {-h --help}\n"
+
+#~ msgid " %s {-V --version}\n"
+#~ msgstr " %s {-V --version}\n"
+
+#~ msgid " %s {-A --add} [options] <file>\n"
+#~ msgstr " %s {-A --add} [options] <fichier>\n"
+
+#~ msgid " %s {-F --freshen} [options] <file>\n"
+#~ msgstr " %s {-F --freshen} [options] <fichier>\n"
+
+#~ msgid " %s {-Q --query} [options] [package]\n"
+#~ msgstr " %s {-Q --query} [options] [package]\n"
+
+#~ msgid " %s {-R --remove} [options] <package>\n"
+#~ msgstr " %s {-R --remove} [options] <package>\n"
+
+#~ msgid " %s {-S --sync} [options] [package]\n"
+#~ msgstr " %s {-S --sync} [options] [package]\n"
+
+#~ msgid " %s {-U --upgrade} [options] <file>\n"
+#~ msgstr " %s {-U --upgrade} [options] <fichier>\n"
+
+#~ msgid "usage: %s {-F --freshen} [options] <file>\n"
+#~ msgstr "Utilisation: %s {-F --freshen} [options] <fichier>\n"
+
+#~ msgid "usage: %s {-U --upgrade} [options] <file>\n"
+#~ msgstr "Utilisation: %s {-U --upgrade} [options] <fichier>\n"
+
+#~ msgid "usage: %s {-Q --query} [options] [package]\n"
+#~ msgstr "Utilisation: %s {-Q --query} [options] [package]\n"
+
+#~ msgid " required by any package\n"
+#~ msgstr ""
+#~ " et qui ne sont plus requis par aucun paquet\n"
+
+#~ msgid "usage: %s {-S --sync} [options] [package]\n"
+#~ msgstr "Utilisation: %s {-S --sync} [options] [paquet]\n"
+
+# id.
+#~ msgid " the terms of the GNU General Public License\n"
+#~ msgstr ""
+#~ " les termes de la Licence publique générale GNU "
+#~ "(GNU GPL)\n"
+
+# localisation est la traduction officielle
+#~ msgid "warning: current locale is invalid; using default \"C\" locale"
+#~ msgstr ""
+#~ "Avertissement: la localisation courante n'est pas valide; la localisation "
+#~ "par défaut \"C\" sera utilisée."
+
+#~ msgid "requires: %s"
+#~ msgstr "requiert: %s"
+
+#~ msgid "is required by"
+#~ msgstr "est requit par"
+
+#, fuzzy
+#~ msgid "Installed Size : %ld K\n"
+#~ msgstr "Taille d'installation : %ld K\n"
+
+#~ msgid "memory allocation failure\n"
+#~ msgstr "erreur d'allocation mémoire\n"
+
+#~ msgid "add target %s\n"
+#~ msgstr "ajout de la cible %s\n"
+
+#~ msgid "could not add target (%s)\n"
+#~ msgstr "n'a pas pu ajouter la cible (%s)\n"
+
+#~ msgid "conflict: %s"
+#~ msgstr "conflit: %s"
+
+#~ msgid "could not release transaction (%s)"
+#~ msgstr "n'a pas pu libérer la transaction (%s)"
+
+#~ msgid "Size : %ld\n"
+#~ msgstr "Taille : %ld\n"
+
+#~ msgid "Reason : "
+#~ msgstr "Raison : "
+
+#~ msgid "Unknown\n"
+#~ msgstr "Inconnu\n"
+
+#~ msgid "Name : %s\n"
+#~ msgstr "Nom : %s\n"
+
+#~ msgid "Groups :"
+#~ msgstr "Groupes :"
+
+#~ msgid "Provides :"
+#~ msgstr "Forunit :"
+
+#~ msgid "Depends On :"
+#~ msgstr "Depend De :"
+
+#~ msgid "Removes :"
+#~ msgstr "Supprimer :"
+
+#~ msgid "Conflicts With :"
+#~ msgstr "Conflits Avec :"
+
+#~ msgid "Size (compressed) : %ld\n"
+#~ msgstr "Taille (compressé) : %ld\n"
+
+#~ msgid "Size (uncompressed):%ld\n"
+#~ msgstr "Taille (décompressé):%ld\n"
+
+#~ msgid " looking in the database\n"
+#~ msgstr " rechercher dans la base de données\n"
+
+#~ msgid "bad root path"
+#~ msgstr "mauvais répertoire racine"
+
+#~ msgid "failed to set option LOGMASK (%s)\n"
+#~ msgstr "échec d'affectation de l'option LOGMASK (%s)\n"
+
+#~ msgid "failed to set option LOGCB (%s)\n"
+#~ msgstr "échec d'affectation de l'option LOGCB (%s)\n"
+
+#, fuzzy
+#~ msgid "failed to set option DLCB (%s)\n"
+#~ msgstr "échec d'affectation de l'option LOGCB (%s)\n"
+
+#, fuzzy
+#~ msgid "failed to set option DLFNM (%s)\n"
+#~ msgstr "échec d'affectation de l'option LOGFILE (%s)\n"
+
+#, fuzzy
+#~ msgid "failed to set option DLOFFSET (%s)\n"
+#~ msgstr "échec d'affectation de l'option LOGFILE (%s)\n"
+
+#, fuzzy
+#~ msgid "failed to set option DLT0 (%s)\n"
+#~ msgstr "échec d'affectation de l'option DBPATH (%s)\n"
+
+#, fuzzy
+#~ msgid "failed to set option DLT (%s)\n"
+#~ msgstr "échec d'affectation de l'option DBPATH (%s)\n"
+
+#, fuzzy
+#~ msgid "failed to set option DLRATE (%s)\n"
+#~ msgstr "échec d'affectation de l'option DBPATH (%s)\n"
+
+#, fuzzy
+#~ msgid "failed to set option DLXFERED1 (%s)\n"
+#~ msgstr "échec d'affectation de l'option LOGFILE (%s)\n"
+
+#, fuzzy
+#~ msgid "failed to set option DLETA_H (%s)\n"
+#~ msgstr "échec d'affectation de l'option DBPATH (%s)\n"
+
+#, fuzzy
+#~ msgid "failed to set option DLETA_M (%s)\n"
+#~ msgstr "échec d'affectation de l'option DBPATH (%s)\n"
+
+#, fuzzy
+#~ msgid "failed to set option DLETA_S (%s)\n"
+#~ msgstr "échec d'affectation de l'option LOGMASK (%s)\n"
+
+#~ msgid "failed to set option IGNOREPKG (%s)\n"
+#~ msgstr "échec d'affectation de l'option IGNOREPKG (%s)\n"
+
+#~ msgid "%s is not a file.\n"
+#~ msgstr "%s n'est pas un fichier.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Targets:"
+#~ msgstr ""
+#~ "\n"
+#~ "Cibles:"
+
+#~ msgid ":: Starting local database upgrade...\n"
+#~ msgstr ":: Démarrage de la mise à jour de base de données locale...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Targets: "
+#~ msgstr ""
+#~ "\n"
+#~ "Cibles: "
+
+#~ msgid ""
+#~ "\n"
+#~ "Total Uncompressed Package Size: %.1f MB\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Taille Totale du Paquet Décompressé: %.1f MB\n"
+
+#~ msgid "Proceed with upgrade? [Y/n] "
+#~ msgstr "Procéder aux mises à jour? [O/n] "
+
+#~ msgid "failed to allocated %d bytes\n"
+#~ msgstr "échec lors de l'allocation de %d bytes\n"
+
+#~ msgid "config: new section '%s'\n"
+#~ msgstr "config: nouvelle section '%s'\n"
+
+#~ msgid ""
+#~ "config: line %d: '%s' is reserved and cannot be used as a package tree\n"
+#~ msgstr ""
+#~ "config: ligne %d: '%s' est réservé et ne peut être utilisé comme "
+#~ "arborescence de paquet\n"
+
+#~ msgid "config: line %d: syntax error\n"
+#~ msgstr "config: ligne %d: erreur de syntaxe\n"
+
+#~ msgid "failed to set option USESYSLOG (%s)\n"
+#~ msgstr "échec d'affection de l'option USESYSLOG (%s)\n"
+
+#~ msgid "config: including %s\n"
+#~ msgstr "config: inclusion de %s\n"
+
+#~ msgid "failed to set option NOUPGRADE (%s)\n"
+#~ msgstr "échec d'affectation de l'option NOUPGRADE (%s)\n"
+
+#~ msgid "failed to set option NOEXTRACT (%s)\n"
+#~ msgstr "échec d'affectation de l'option NOEXTRACT (%s)\n"
+
+#~ msgid "config: log file: %s\n"
+#~ msgstr "config: fichier de log: %s\n"
+
+#~ msgid "failed to set option UPGRADEDELAY (%s)\n"
+#~ msgstr "échec d'affectation de l'option UPGRADEDELAY (%s)\n"
+
+#~ msgid ""
+#~ "Warning: UpgradeDelay is very high.\n"
+#~ "If a package is updated often it will never be upgraded.\n"
+#~ "Manually update such packages or use a lower value to avoid this "
+#~ "problem.\n"
+#~ msgstr ""
+#~ "Avertissement: UpgradeDelay est très élevé.\n"
+#~ "Si un paquet est mis à jour souvent, ces mise à jour ne seront jamais "
+#~ "appliquée.\n"
+#~ "Mettez à jour ces paquets manuellement ou utilisez une valeur plus basse "
+#~ "pour résoudre ce problème.\n"
+
+#~ msgid "config: line %d: bad server location\n"
+#~ msgstr "config: ligne %d: mauvais adressage de serveur\n"
+
+#~ msgid "could not allocate %d bytes\n"
+#~ msgstr "n'a pas pu allouer %d bytes\n"
+
+#~ msgid "connecting to %s:21\n"
+#~ msgstr "connexion à %s:21\n"
+
+#~ msgid "cannot connect to %s\n"
+#~ msgstr "n'a pas pu se connecter à %s\n"
+
+#~ msgid "anonymous login failed\n"
+#~ msgstr "la connexion en utilisateur anonyme à échouée\n"
+
+#~ msgid "could not cwd to %s: %s\n"
+#~ msgstr "n'a pas pu exécuter cwd pour %s: %s\n"
+
+#~ msgid "failed to set passive mode\n"
+#~ msgstr "échec d'application mode passif\n"
+
+#~ msgid "FTP passive mode not set\n"
+#~ msgstr "mode FTP passif non défini\n"
+
+#~ msgid "connecting to %s\n"
+#~ msgstr "connexion à %s\n"
+
+#~ msgid "connecting to %s:%u\n"
+#~ msgstr "connexion à %s:%u\n"
+
+#~ msgid "could not chdir to %s\n"
+#~ msgstr "n'a pas pu exécuter chdir vers %s\n"
+
+#~ msgid "running command: %s\n"
+#~ msgstr "exécution de la commande: %s\n"
+
+#~ msgid "running XferCommand: fork failed!\n"
+#~ msgstr "exécution de XferCommand: échec du fork!\n"
+
+#~ msgid "XferCommand command returned non-zero status code (%d)\n"
+#~ msgstr ""
+#~ "la commande XferCommand à retourné un code de statut différent de zéro (%"
+#~ "d)\n"
+
+#~ msgid "failed to get filesize for %s\n"
+#~ msgstr "échec de récupération de la taille de fichier pour %s\n"
+
+#~ msgid "failed to get mtime for %s\n"
+#~ msgstr "échec de récupération de la date de modification pour %s\n"
+
+#~ msgid "mtimes are identical, skipping %s\n"
+#~ msgstr "le dates de modifications sont identiques, ignoré %s\n"
+
+#~ msgid "failed to resume download -- restarting\n"
+#~ msgstr "échec de reprise du téléchargement -- redémarrage\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "failed downloading %s from %s: %s\n"
+#~ msgstr ""
+#~ "\n"
+#~ "échec du téléchargement de %s depuis %s: %s\n"
+
+#~ msgid "copying %s to %s/%s\n"
+#~ msgstr "copie %s vers %s/%s\n"
+
+#~ msgid "failed copying %s\n"
+#~ msgstr "échec de copie de %s\n"
+
+#~ msgid " %s is already in the current directory\n"
+#~ msgstr " %s est déjà dans le répertoire courant\n"
+
+#~ msgid "failed to set option CACHEDIR (%s)\n"
+#~ msgstr "échec d'affectation de l'option CACHEDIR (%s)\n"
+
+#~ msgid "failed to get lastupdate time for %s (no big deal)\n"
+#~ msgstr ""
+#~ "échec d'obtention de la dernière mise à jour pour %s (ce n'est pas un "
+#~ "gros problème)\n"
+
+#~ msgid "sync: new mtime for %s: %s\n"
+#~ msgstr "sync: nouvelle valeur mtime pour %s: %s\n"
+
+#~ msgid "%s-%s-%s%s is already in the cache\n"
+#~ msgstr "%s-%s-%s%s est déjà en cache\n"
+
+#~ msgid "no %s cache exists. creating...\n"
+#~ msgstr "aucun cache %s existant. Création...\n"
+
+#~ msgid "warning: no %s cache exists. creating..."
+#~ msgstr "avertissement: aucun cache %s existant, création..."
+
+#~ msgid "couldn't create package cache, using /tmp instead\n"
+#~ msgstr ""
+#~ "n'a pas pu créer le cache de paquets, utilisation de /tmp à la place\n"
+
+#~ msgid "warning: couldn't create package cache, using /tmp instead"
+#~ msgstr ""
+#~ "avertissement: n'a pas pu créer le cache de paquets, utilisation de /tmp "
+#~ "à la place"
+
+#~ msgid "failed to retrieve some files from %s\n"
+#~ msgstr "échec de récupération de certains fichiers depuis %s\n"
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 00000000..91778360
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,2134 @@
+# Hungarian translations for pacman package.
+# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
+# This file is distributed under the same license as the Pacman package manager package.
+# Miklos Vajna <vmiklos@frugalware.org>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: hu\n"
+"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: 2006-09-03 13:52+0200\n"
+"Last-Translator: Nagy Gabor <ngaba@petra.hos.u-szeged.hu>\n"
+"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/pacman/add.c:42 src/pacman/remove.c:44
+#, c-format
+msgid "failed to release transaction (%s)\n"
+msgstr "nem sikerült lezárni a tranzakciót (%s)\n"
+
+#: src/pacman/add.c:79 src/pacman/query.c:372 src/pacman/remove.c:65
+#: src/pacman/sync.c:753
+msgid "no targets specified (use -h for help)\n"
+msgstr "nincs megadva egyetlen cél sem (használja a '-h'-t segítségért)\n"
+
+#: src/pacman/add.c:106 src/pacman/sync.c:508
+#, c-format
+msgid "error: %s\n"
+msgstr "hiba: %s\n"
+
+#: src/pacman/add.c:109 src/pacman/remove.c:100 src/pacman/sync.c:482
+#, c-format
+msgid ""
+" if you're sure a package manager is not already\n"
+" running, you can remove %s.\n"
+msgstr ""
+" ha biztos benne, hogy nem fut másik csomagkezelõ, akkor\n"
+" eltávolíthatja a %s fájlt.\n"
+
+#: src/pacman/add.c:116 src/pacman/remove.c:108
+#, c-format
+msgid "loading package data... "
+msgstr "csomag adatainak betöltése... "
+
+#: src/pacman/add.c:120
+#, c-format
+msgid "error: failed to add target '%s' (%s)"
+msgstr "hiba: nem sikerült a(z) '%s' célt hozzáadni (%s)"
+
+#: src/pacman/add.c:126 src/pacman/remove.c:120 src/pacman/sync.c:174
+#: src/pacman/sync.c:192
+#, c-format
+msgid "done.\n"
+msgstr "kész.\n"
+
+#: src/pacman/add.c:131 src/pacman/remove.c:124 src/pacman/sync.c:614
+#, c-format
+msgid "error: failed to prepare transaction (%s)\n"
+msgstr "hiba: nem sikerült elõkészíteni a tranzakciót (%s)\n"
+
+#: src/pacman/add.c:143 src/pacman/remove.c:132 src/pacman/sync.c:623
+#, c-format
+msgid ":: %s: requires %s\n"
+msgstr ":: %s: igényli a következõt: %s\n"
+
+#: src/pacman/add.c:151
+#, c-format
+msgid ":: %s: conflicts with %s"
+msgstr ":: %s: ütközik a következõvel: %s"
+
+#: src/pacman/add.c:160 src/pacman/sync.c:686
+#, c-format
+msgid "%s exists in both '%s' and '%s'\n"
+msgstr "%s létezik ebben: '%s' és ebben: '%s'\n"
+
+#: src/pacman/add.c:166 src/pacman/sync.c:692
+#, c-format
+msgid "%s: %s exists in filesystem\n"
+msgstr "%s: %s létezik a fájlrendszerben\n"
+
+#: src/pacman/add.c:172
+#, c-format
+msgid ""
+"\n"
+"errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"hibák léptek fel, nem frissült csomag.\n"
+
+#: src/pacman/add.c:186 src/pacman/remove.c:171 src/pacman/sync.c:677
+#, c-format
+msgid "error: failed to commit transaction (%s)\n"
+msgstr "hiba: nem sikerült végrehajtani a tranzakciót (%s)\n"
+
+#: src/pacman/callback.c:163
+#, fuzzy, c-format
+msgid "checking dependencies...\n"
+msgstr "függõségek vizsgálata... "
+
+#: src/pacman/callback.c:167
+#, fuzzy, c-format
+msgid "checking for file conflicts...\n"
+msgstr "fájlütközések vizsgálata... "
+
+#: src/pacman/callback.c:171
+#, fuzzy, c-format
+msgid "resolving dependencies...\n"
+msgstr "függõségek feloldása... "
+
+#: src/pacman/callback.c:174
+#, fuzzy, c-format
+msgid "looking for inter-conflicts...\n"
+msgstr "belsõ ütközések keresése... "
+
+#: src/pacman/callback.c:178
+#, fuzzy, c-format
+msgid "installing %s...\n"
+msgstr "%s telepítése... "
+
+#: src/pacman/callback.c:189
+#, fuzzy, c-format
+msgid "removing %s...\n"
+msgstr "%s eltávolítása... "
+
+#: src/pacman/callback.c:200
+#, fuzzy, c-format
+msgid "upgrading %s...\n"
+msgstr "%s frissítése... "
+
+#: src/pacman/callback.c:211
+#, fuzzy, c-format
+msgid "checking package integrity...\n"
+msgstr "csomagok integritásának ellenõrzése... "
+
+#: src/pacman/callback.c:214
+#, fuzzy, c-format
+msgid "checking delta integrity...\n"
+msgstr "delták integritásának ellenõrzése... "
+
+#: src/pacman/callback.c:217
+#, c-format
+msgid "applying deltas...\n"
+msgstr "delták alkalmazása...\n"
+
+#: src/pacman/callback.c:220
+#, c-format
+msgid "generating %s with %s... "
+msgstr "%s létrehozása %s segítségével... "
+
+#: src/pacman/callback.c:223
+#, c-format
+msgid "success!\n"
+msgstr ""
+
+#: src/pacman/callback.c:226
+#, c-format
+msgid "failed.\n"
+msgstr "sikertelen.\n"
+
+#: src/pacman/callback.c:235
+#, c-format
+msgid ":: Retrieving packages from %s...\n"
+msgstr ":: Csomagok letöltése a(z) %s repóból...\n"
+
+#: src/pacman/callback.c:263
+#, fuzzy, c-format
+msgid ""
+":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway? [Y/"
+"n] "
+msgstr ":: %s igényli %s telepítését az IgnorePkg-bõl. Mégis telepíti? [I/n] "
+
+#: src/pacman/callback.c:268
+#, fuzzy, c-format
+msgid ":: %s is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+msgstr ":: %s az IgnorePkg része. Mégis telepíti? [I/n] "
+
+#: src/pacman/callback.c:274
+#, c-format
+msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
+msgstr ":: %s HoldPkgnak lett jelölve. Biztosan eltávolítja? [I/n] "
+
+#: src/pacman/callback.c:279
+#, c-format
+msgid ":: Replace %s with %s/%s? [Y/n] "
+msgstr ":: Lecseréli %s-t erre: %s/%s? [I/n] "
+
+#: src/pacman/callback.c:286
+#, c-format
+msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
+msgstr ":: %s ütközik a következõvel: %s. Eltávolítja a %s-t? [I/n] "
+
+#: src/pacman/callback.c:294
+#, c-format
+msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
+msgstr ":: %s-%s: a helyi verzió újabb. Mégis frissíti? [I/n] "
+
+#: src/pacman/callback.c:304
+#, c-format
+msgid ":: File %s is corrupted. Do you want to delete it? [Y/n] "
+msgstr ":: A %s fájl sérült. Kívánja törölni? [I/n] "
+
+#: src/pacman/callback.c:354
+msgid "installing"
+msgstr "telepítés:"
+
+#: src/pacman/callback.c:357
+msgid "upgrading"
+msgstr "frissítés:"
+
+#: src/pacman/callback.c:360
+msgid "removing"
+msgstr "eltávolítás:"
+
+#: src/pacman/callback.c:363
+msgid "checking for file conflicts"
+msgstr "fájlütközések vizsgálata"
+
+#: src/pacman/package.c:68
+msgid "Explicitly installed"
+msgstr "Kézzel telepítve"
+
+#: src/pacman/package.c:71
+msgid "Installed as a dependency for another package"
+msgstr "Egy másik csomag függõségeként lett telepítve"
+
+#: src/pacman/package.c:74
+msgid "Unknown"
+msgstr "Ismeretlen"
+
+#: src/pacman/package.c:89
+msgid "Description : "
+msgstr "Leírás : "
+
+#: src/pacman/package.c:93
+#, fuzzy
+msgid "Filename :"
+msgstr "Licenc :"
+
+#: src/pacman/package.c:95
+#, fuzzy
+msgid "Name :"
+msgstr "Név : %s\n"
+
+#: src/pacman/package.c:96
+#, fuzzy
+msgid "Version :"
+msgstr "Verzió : %s\n"
+
+#: src/pacman/package.c:97
+#, fuzzy
+msgid "URL :"
+msgstr "URL : %s\n"
+
+#: src/pacman/package.c:98
+#, fuzzy
+msgid "Licenses :"
+msgstr "Licenc :"
+
+#: src/pacman/package.c:99
+msgid "Groups :"
+msgstr "Csoportok :"
+
+#: src/pacman/package.c:100
+msgid "Provides :"
+msgstr "Szolgáltatja :"
+
+#: src/pacman/package.c:101
+msgid "Depends On :"
+msgstr "Függ :"
+
+#: src/pacman/package.c:102
+msgid "Optional Deps :"
+msgstr "Opcionális f. :"
+
+#: src/pacman/package.c:105
+msgid "Required By :"
+msgstr "Igényli :"
+
+#: src/pacman/package.c:108
+msgid "Conflicts With :"
+msgstr "Ütközik :"
+
+#: src/pacman/package.c:109
+msgid "Replaces :"
+msgstr "Lecseréli :"
+
+#: src/pacman/package.c:111
+#, c-format
+msgid "Download Size : %6.2f K\n"
+msgstr "Tömörített méret: %6.2f K\n"
+
+#: src/pacman/package.c:115
+#, fuzzy, c-format
+msgid "Compressed Size: %6.2f K\n"
+msgstr "Helyfoglalás : %6.2f K\n"
+
+#: src/pacman/package.c:119
+#, c-format
+msgid "Installed Size : %6.2f K\n"
+msgstr "Helyfoglalás : %6.2f K\n"
+
+#: src/pacman/package.c:121
+#, fuzzy
+msgid "Packager :"
+msgstr "Csomagoló : %s\n"
+
+#: src/pacman/package.c:122
+#, fuzzy
+msgid "Architecture :"
+msgstr "Architektúra : %s\n"
+
+#: src/pacman/package.c:123
+#, fuzzy
+msgid "Build Date :"
+msgstr "Fordítás ideje : %s"
+
+#: src/pacman/package.c:125
+#, fuzzy
+msgid "Install Date :"
+msgstr "Telepítés ideje : %s"
+
+#: src/pacman/package.c:126
+#, fuzzy
+msgid "Install Reason :"
+msgstr "Telepítés oka : %s\n"
+
+#: src/pacman/package.c:129
+#, fuzzy
+msgid "Install Script :"
+msgstr "Telepítõ szkript: %s\n"
+
+#: src/pacman/package.c:130
+msgid "Yes"
+msgstr "Igen"
+
+#: src/pacman/package.c:130
+msgid "No"
+msgstr "Nem"
+
+#: src/pacman/package.c:135
+#, fuzzy
+msgid "MD5 Sum :"
+msgstr "MD5 Sum : %s"
+
+#: src/pacman/package.c:159
+#, fuzzy
+msgid "Repository :"
+msgstr "Repó : %s\n"
+
+#: src/pacman/package.c:169
+#, c-format
+msgid "Backup Files:\n"
+msgstr "Backup fájlok:\n"
+
+#: src/pacman/package.c:189
+#, c-format
+msgid "error: could not calculate checksums for %s\n"
+msgstr "hiba: nem sikerült a(z) %s ellenõrzõ összegének számítása\n"
+
+#: src/pacman/package.c:197
+#, c-format
+msgid "MODIFIED\t%s\n"
+msgstr "MÓDOSÍTVA\t%s\n"
+
+#: src/pacman/package.c:199
+#, c-format
+msgid "Not Modified\t%s\n"
+msgstr "Nem módosítva\t%s\n"
+
+#: src/pacman/package.c:203
+#, c-format
+msgid "MISSING\t\t%s\n"
+msgstr "HIÁNYZIK\t\t%s\n"
+
+#: src/pacman/package.c:209
+#, c-format
+msgid "(none)\n"
+msgstr "(nincs)\n"
+
+#: src/pacman/package.c:244
+#, c-format
+msgid "error: no changelog available for '%s'.\n"
+msgstr "hiba: nem áll rendelkezésre változási napló a(z) '%s' csomaghoz.\n"
+
+#: src/pacman/pacman.c:62
+msgid "options"
+msgstr "opciók"
+
+#: src/pacman/pacman.c:63
+msgid "file"
+msgstr "fájl"
+
+#: src/pacman/pacman.c:64
+msgid "package"
+msgstr "csomag"
+
+#: src/pacman/pacman.c:65
+msgid "usage"
+msgstr "használat"
+
+#: src/pacman/pacman.c:66
+msgid "operation"
+msgstr "mûvelet"
+
+#: src/pacman/pacman.c:78
+#, c-format
+msgid ""
+"\n"
+"use '%s --help' with other options for more syntax\n"
+msgstr ""
+"\n"
+"használja a '%s --help'-et más opciókkal további szintaxishoz\n"
+
+#: src/pacman/pacman.c:83 src/pacman/pacman.c:97 src/pacman/pacman.c:119
+#, c-format
+msgid " --asdeps install packages as non-explicitly installed\n"
+msgstr " --asdeps a csomagok függõségként való telepítése\n"
+
+#: src/pacman/pacman.c:84 src/pacman/pacman.c:90 src/pacman/pacman.c:98
+#: src/pacman/pacman.c:121
+#, c-format
+msgid " -d, --nodeps skip dependency checks\n"
+msgstr " -d, --nodeps függõségi ellenõrzések kihagyása\n"
+
+#: src/pacman/pacman.c:85 src/pacman/pacman.c:99 src/pacman/pacman.c:123
+#, c-format
+msgid " -f, --force force install, overwrite conflicting files\n"
+msgstr ""
+" -f, --force a telepítés erõltetése, ütközõ fájlok felülírása\n"
+
+#: src/pacman/pacman.c:89
+#, c-format
+msgid ""
+" -c, --cascade remove packages and all packages that depend on them\n"
+msgstr ""
+" -c, --cascade a csomagok és az õket igénylõ csomagok eltávolítása\n"
+
+#: src/pacman/pacman.c:91
+#, c-format
+msgid ""
+" -k, --dbonly only remove database entry, do not remove files\n"
+msgstr ""
+" -k, --dbonly csak az adatbázis-bejegyzést törölje, a fájlokat ne\n"
+
+#: src/pacman/pacman.c:92
+#, c-format
+msgid " -n, --nosave remove configuration files as well\n"
+msgstr " -n, --nosave a beállítási fájlokat is törölje\n"
+
+#: src/pacman/pacman.c:93
+#, c-format
+msgid ""
+" -s, --recursive remove dependencies also (that won't break packages)\n"
+msgstr ""
+" -s, --recursive a függõségeket is távolítsa el (melyeknél ez "
+"biztonságos)\n"
+
+#: src/pacman/pacman.c:103
+#, c-format
+msgid " -c, --changelog view the changelog of a package\n"
+msgstr " -c, --changelog egy csomag változási naplójának megtekintése\n"
+
+#: src/pacman/pacman.c:104
+#, c-format
+msgid " -d, --deps list all packages installed as dependencies\n"
+msgstr ""
+" -d, --deps az összes függõségként telepített csomag listázása\n"
+
+#: src/pacman/pacman.c:105
+#, c-format
+msgid " -e, --explicit list all packages explicitly installed\n"
+msgstr " -e, --explicit az összes kézzel telepített csomag listázása\n"
+
+#: src/pacman/pacman.c:106 src/pacman/pacman.c:124
+#, c-format
+msgid " -g, --groups view all members of a package group\n"
+msgstr " -g, --groups egy csoport összes tagjának megtekintése\n"
+
+#: src/pacman/pacman.c:107
+#, c-format
+msgid ""
+" -i, --info view package information (-ii for backup files)\n"
+msgstr ""
+" -i, --info csomaginformációk megtekintése (-ii: backup fájlok "
+"is)\n"
+
+#: src/pacman/pacman.c:108
+#, c-format
+msgid " -l, --list list the contents of the queried package\n"
+msgstr " -l, --list a lekérdezett csomag tartalmának listázása\n"
+
+#: src/pacman/pacman.c:109
+#, c-format
+msgid ""
+" -m, --foreign list installed packages not found in sync db(s)\n"
+msgstr ""
+" -m, --foreign a távoli repókban nem talált telepített csomagok "
+"listája\n"
+
+#: src/pacman/pacman.c:110
+#, c-format
+msgid " -o, --owns <file> query the package that owns <file>\n"
+msgstr " -o, --owns <fájl> a <fájl>-t tartalmazó csomag lekérdezése\n"
+
+#: src/pacman/pacman.c:111
+#, c-format
+msgid " -p, --file <package> query a package file instead of the database\n"
+msgstr ""
+" -p, --file <csomag> a <csomag> csomagfájl lekérdezése az adatbázis "
+"helyett\n"
+
+#: src/pacman/pacman.c:112
+#, c-format
+msgid ""
+" -s, --search <regex> search locally-installed packages for matching "
+"strings\n"
+msgstr " -s, --search <regex> keresés a telepített csomagok között\n"
+
+#: src/pacman/pacman.c:113
+#, c-format
+msgid " -t, --orphans list all packages not required by any package\n"
+msgstr ""
+" -t, --orphans azon csomagok listázása, melyeket nem igényel más "
+"csomag\n"
+
+#: src/pacman/pacman.c:114
+#, c-format
+msgid " -u, --upgrades list all packages that can be upgraded\n"
+msgstr " -u, --upgrades az összes frissíthetõ csomag listázása\n"
+
+#: src/pacman/pacman.c:115 src/pacman/pacman.c:136
+#, c-format
+msgid " -q --quiet show less information for query and search\n"
+msgstr ""
+
+#: src/pacman/pacman.c:120
+#, c-format
+msgid ""
+" -c, --clean remove old packages from cache directory (-cc for "
+"all)\n"
+msgstr ""
+" -c, --clean a régi csomagok törlése a gyorsítótárkönyvtárból\n"
+" (használja a '-cc'-t az összeshez)\n"
+
+#: src/pacman/pacman.c:122
+#, c-format
+msgid " -e, --dependsonly install dependencies only\n"
+msgstr " -e, --dependsonly csak a függõségek telepítése\n"
+
+#: src/pacman/pacman.c:125
+#, c-format
+msgid " -i, --info view package information\n"
+msgstr " -i, --info csomaginformációk megtekintése\n"
+
+#: src/pacman/pacman.c:126
+#, c-format
+msgid " -l, --list <repo> view a list of packages in a repo\n"
+msgstr " -l, --list <repó> egy repó csomagjainak listázása\n"
+
+#: src/pacman/pacman.c:127
+#, c-format
+msgid ""
+" -p, --print-uris print out URIs for given packages and their "
+"dependencies\n"
+msgstr ""
+" -p, --print-uris listázza az adott csomagok és függõségeik URI-jait\n"
+
+#: src/pacman/pacman.c:128
+#, c-format
+msgid ""
+" -s, --search <regex> search remote repositories for matching strings\n"
+msgstr " -s, --search <regex> keresés a távoli csomagadatbázisokban\n"
+
+#: src/pacman/pacman.c:129
+#, c-format
+msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
+msgstr " -u, --sysupgrade az összes elavult csomag frissítése\n"
+
+#: src/pacman/pacman.c:130
+#, c-format
+msgid ""
+" -w, --downloadonly download packages but do not install/upgrade "
+"anything\n"
+msgstr " -w, --downloadonly csak letöltés, de semmit nem telepít/frissít\n"
+
+#: src/pacman/pacman.c:131
+#, c-format
+msgid ""
+" -y, --refresh download fresh package databases from the server\n"
+msgstr " -y, --refresh friss csomagadatbázis letöltése a szerverrõl\n"
+
+#: src/pacman/pacman.c:132
+#, fuzzy, c-format
+msgid ""
+" --needed only install outdated or not yet installed packages\n"
+msgstr " --asdeps a csomagok függõségként való telepítése\n"
+
+#: src/pacman/pacman.c:133
+#, c-format
+msgid ""
+" --ignore <pkg> ignore a package upgrade (can be used more than "
+"once)\n"
+msgstr ""
+" --ignore <csom.> csomagfrissítés mellõzése (többször is használható)\n"
+
+#: src/pacman/pacman.c:134
+#, fuzzy, c-format
+msgid ""
+" --ignoregroup <grp>\n"
+" ignore a group upgrade (can be used more than once)\n"
+msgstr ""
+" --ignore <csom.> csomagfrissítés mellõzése (többször is használható)\n"
+
+#: src/pacman/pacman.c:138
+#, c-format
+msgid " --config <path> set an alternate configuration file\n"
+msgstr " --config <útv.> alternatív konfigurációs fájl beállítása\n"
+
+#: src/pacman/pacman.c:139
+#, c-format
+msgid " --logfile <path> set an alternate log file\n"
+msgstr " --logfile <útv.> alternatív logfájl beállítása\n"
+
+#: src/pacman/pacman.c:140
+#, c-format
+msgid " --noconfirm do not ask for any confirmation\n"
+msgstr " --noconfirm ne kérjen soha megerõsítést\n"
+
+#: src/pacman/pacman.c:141
+#, c-format
+msgid ""
+" --noprogressbar do not show a progress bar when downloading files\n"
+msgstr ""
+" --noprogressbar ne mutasson folyamatsávot a fájlok letöltése közben\n"
+
+#: src/pacman/pacman.c:142
+#, c-format
+msgid ""
+" --noscriptlet do not execute the install scriptlet if one exists\n"
+msgstr ""
+" --noscriptlet ne futtassa le az install szkriptet, ha van olyan\n"
+
+#: src/pacman/pacman.c:143
+#, c-format
+msgid " -v, --verbose be verbose\n"
+msgstr " -v, --verbose legyen bõbeszédû\n"
+
+#: src/pacman/pacman.c:144
+#, c-format
+msgid " -r, --root <path> set an alternate installation root\n"
+msgstr ""
+" -r, --root <útvonal> alternatív telepítési gyökérkönyvtár beállítása\n"
+
+#: src/pacman/pacman.c:145
+#, c-format
+msgid " -b, --dbpath <path> set an alternate database location\n"
+msgstr " -b, --dbpath <útv.> alternatív adatbáziskönyvtár beállítása\n"
+
+#: src/pacman/pacman.c:146
+#, c-format
+msgid " --cachedir <dir> set an alternate package cache location\n"
+msgstr ""
+" --cachedir <kvt> alternatív csomaggyorsítótár-könyvtár beállítása\n"
+
+#: src/pacman/pacman.c:159
+#, c-format
+msgid ""
+" This program may be freely redistributed under\n"
+" the terms of the GNU General Public License\n"
+msgstr ""
+" Ezt a programot bárki a General Public License-ben\n"
+" foglaltak alapján szabadon terjesztheti\n"
+
+#: src/pacman/pacman.c:250
+#, fuzzy, c-format
+msgid "problem setting rootdir '%s' (%s)\n"
+msgstr "hiba történt a(z) '%s' telepítése útvonal beállítása során (%s)\n"
+
+#: src/pacman/pacman.c:267
+#, c-format
+msgid "problem setting dbpath '%s' (%s)\n"
+msgstr "hiba történt a(z) '%s' adatbáziskönyvtár beállítása során (%s)\n"
+
+#: src/pacman/pacman.c:275
+#, c-format
+msgid "problem setting logfile '%s' (%s)\n"
+msgstr "hiba történt a(z) '%s' naplófájl beállítása során (%s)\n"
+
+#: src/pacman/pacman.c:384
+#, c-format
+msgid "'%s' is not a valid debug level\n"
+msgstr "a(z) '%s' nem érvényes hibakeresési szint\n"
+
+#: src/pacman/pacman.c:398 src/pacman/pacman.c:677
+#, c-format
+msgid "problem adding cachedir '%s' (%s)\n"
+msgstr "hiba történt a(z) '%s' gyorsítótár-könyvtár hozzáadása során (%s)\n"
+
+#: src/pacman/pacman.c:484
+msgid "only one operation may be used at a time\n"
+msgstr "csak egy mûvelet hajtható végre egyszerre\n"
+
+#: src/pacman/pacman.c:544
+#, c-format
+msgid "config file %s could not be read.\n"
+msgstr "a %s konfigurációs fájl nem olvasható.\n"
+
+#: src/pacman/pacman.c:580
+#, c-format
+msgid "config file %s, line %d: bad section name.\n"
+msgstr "%s konfigurációs fájl, %d. sor: hibás szekciónév.\n"
+
+#: src/pacman/pacman.c:602
+#, c-format
+msgid "config file %s, line %d: syntax error in config file- missing key.\n"
+msgstr "%s konfigurációs fájl, %d. sor: szintaktikai hiba- hiányzó kulcs.\n"
+
+#: src/pacman/pacman.c:612
+#, c-format
+msgid ""
+"config file %s, line %d: 'Include' directive must belong to a section.\n"
+msgstr ""
+"%s konfigurációs fájl, %d. sor: az 'Include' direktívának egy szekcióhoz "
+"kell tartoznia.\n"
+
+#: src/pacman/pacman.c:640 src/pacman/pacman.c:702 src/pacman/pacman.c:717
+#, c-format
+msgid "config file %s, line %d: directive '%s' not recognized.\n"
+msgstr "%s konfigurációs fájl, %d. sor: a '%s' direktíva nem értelmezhetõ.\n"
+
+#: src/pacman/pacman.c:787
+#, c-format
+msgid "failed to initialize alpm library (%s)\n"
+msgstr "nem sikerült inicializálni az alpm könyvtárat (%s)\n"
+
+#: src/pacman/pacman.c:824
+msgid "you cannot perform this operation unless you are root.\n"
+msgstr "ez a mûvelet csak rendszergazdaként hajtható végre.\n"
+
+#: src/pacman/pacman.c:847
+#, c-format
+msgid "could not register 'local' database (%s)\n"
+msgstr "nem sikerült regisztrálni a 'local' adatbázist (%s)\n"
+
+#: src/pacman/pacman.c:873
+msgid "no operation specified (use -h for help)\n"
+msgstr "nincs megadva egyetlen mûvelet sem (használja a '-h'-t segítségért)\n"
+
+#: src/pacman/query.c:67
+#, c-format
+msgid "error: no file was specified for --owns\n"
+msgstr "hiba: nincs megadva fájl a --owns számára\n"
+
+#: src/pacman/query.c:80
+#, c-format
+msgid "error: failed to read file '%s': %s\n"
+msgstr "hiba: nem sikerült olvasni a '%s' fájlt: %s\n"
+
+#: src/pacman/query.c:87
+#, c-format
+msgid "error: cannot determine ownership of a directory\n"
+msgstr "hiba: könyvtár tulajdonos-csomagját nem lehet megállapítani\n"
+
+#: src/pacman/query.c:95
+#, c-format
+msgid "error: cannot determine real path for '%s': %s\n"
+msgstr "hiba: nem állapítható meg a valódi útvonal a(z) '%s' számára: %s\n"
+
+#: src/pacman/query.c:117
+#, c-format
+msgid "%s is owned by %s %s\n"
+msgstr "a %s fájlt a %s %s tartalmazza\n"
+
+#: src/pacman/query.c:125
+#, c-format
+msgid "error: No package owns %s\n"
+msgstr "hiba: Egyik csomag sem tartalmazza a következõt: %s\n"
+
+#: src/pacman/query.c:221
+#, c-format
+msgid "error: group \"%s\" was not found\n"
+msgstr "hiba: a(z) \"%s\" csoport nem található\n"
+
+#: src/pacman/query.c:232
+#, c-format
+msgid "Checking for package upgrades... \n"
+msgstr "Frissítések keresése... \n"
+
+#: src/pacman/query.c:243
+#, c-format
+msgid "no upgrades found.\n"
+msgstr "nem találtam frissítést.\n"
+
+#: src/pacman/query.c:362 src/pacman/sync.c:743
+msgid "no usable package repositories configured.\n"
+msgstr "egyetlen használható csomagrepó sincs beállítva.\n"
+
+#: src/pacman/query.c:406
+#, c-format
+msgid "error: package \"%s\" not found\n"
+msgstr "hiba: a(z) \"%s\" csomag nem található\n"
+
+#: src/pacman/remove.c:78 src/pacman/sync.c:583
+#, c-format
+msgid ":: group %s:\n"
+msgstr ":: %s csoport:\n"
+
+#: src/pacman/remove.c:80
+msgid " Remove whole content? [Y/n] "
+msgstr " Eltávolítja a teljes tartalmat? [I/n] "
+
+#: src/pacman/remove.c:84
+#, c-format
+msgid ":: Remove %s from group %s? [Y/n] "
+msgstr ":: Eltávolítja %s-t a(z) %s csoportból? [I/n] "
+
+#: src/pacman/remove.c:97 src/pacman/sync.c:479 src/pacman/sync.c:540
+#, c-format
+msgid "error: failed to init transaction (%s)\n"
+msgstr "hiba: nem sikerült inicializálni a tranzakciót (%s)\n"
+
+#: src/pacman/remove.c:113
+#, c-format
+msgid "error: failed to add target '%s' (%s)\n"
+msgstr "hiba: nem sikerült a(z) '%s' célt hozzáadni (%s)\n"
+
+#: src/pacman/remove.c:158 src/pacman/util.c:462
+msgid "Targets:"
+msgstr "Célok:"
+
+#: src/pacman/remove.c:161
+msgid ""
+"\n"
+"Do you want to remove these packages? [Y/n] "
+msgstr ""
+"\n"
+"El kívánja távolítani ezeket a csomagokat? [I/n] "
+
+#: src/pacman/sync.c:52
+#, fuzzy, c-format
+msgid "error: could not access database directory\n"
+msgstr "hiba: nem sikerült elérni a gyorsítótár könyvtárát\n"
+
+#: src/pacman/sync.c:83
+#, fuzzy, c-format
+msgid "Do you want to remove %s? [Y/n] "
+msgstr ""
+"\n"
+"El kívánja távolítani ezeket a csomagokat? [I/n] "
+
+#: src/pacman/sync.c:88
+#, fuzzy, c-format
+msgid "error: could not remove repository directory\n"
+msgstr "hiba: nem sikerült törölni a gyorsítótár könyvtárát\n"
+
+#: src/pacman/sync.c:101
+#, fuzzy, c-format
+msgid "Database directory: %s\n"
+msgstr "Gyorsítótár könyvtár: %s\n"
+
+#: src/pacman/sync.c:102
+#, fuzzy
+msgid "Do you want to remove unused repositories? [Y/n] "
+msgstr ""
+"\n"
+"El kívánja távolítani ezeket a csomagokat? [I/n] "
+
+#: src/pacman/sync.c:112
+#, c-format
+msgid "Database directory cleaned up\n"
+msgstr ""
+
+#: src/pacman/sync.c:130 src/pacman/sync.c:177
+#, c-format
+msgid "Cache directory: %s\n"
+msgstr "Gyorsítótár könyvtár: %s\n"
+
+#: src/pacman/sync.c:131
+#, fuzzy
+msgid "Do you want to remove uninstalled packages from cache? [Y/n] "
+msgstr ""
+"El kívánja távolítani a nem telepített csomagokat a gyorsítótárból? [I/n] "
+
+#: src/pacman/sync.c:134
+#, c-format
+msgid "removing old packages from cache... "
+msgstr "a régi csomagok eltávolítása a gyorsítótárból... "
+
+#: src/pacman/sync.c:138
+#, c-format
+msgid "error: could not access cache directory\n"
+msgstr "hiba: nem sikerült elérni a gyorsítótár könyvtárát\n"
+
+#: src/pacman/sync.c:178
+msgid "Do you want to remove ALL packages from cache? [Y/n] "
+msgstr "El kívánja távolítani az ÖSSZES csomagot a gyorsítótárból? [I/n] "
+
+#: src/pacman/sync.c:181
+#, c-format
+msgid "removing all packages from cache... "
+msgstr "az összes csomag eltávolítása a gyorsítótárból... "
+
+#: src/pacman/sync.c:184
+#, c-format
+msgid "error: could not remove cache directory\n"
+msgstr "hiba: nem sikerült törölni a gyorsítótár könyvtárát\n"
+
+#: src/pacman/sync.c:189
+#, c-format
+msgid "error: could not create new cache directory\n"
+msgstr "hiba: nem sikerült létrehozni az új gyorsítótár könyvtárát\n"
+
+#: src/pacman/sync.c:216
+#, c-format
+msgid "error: failed to synchronize %s: %s\n"
+msgstr "hiba: nem sikerült a(z) %s szinkronizálása: %s\n"
+
+#: src/pacman/sync.c:219
+#, c-format
+msgid "error: failed to update %s (%s)\n"
+msgstr "hiba: nem sikerült a(z) %s frissítése (%s)\n"
+
+#: src/pacman/sync.c:223
+#, c-format
+msgid " %s is up to date\n"
+msgstr " a(z) %s naprakész\n"
+
+#: src/pacman/sync.c:366
+#, c-format
+msgid "error: repository '%s' does not exist\n"
+msgstr "hiba: a(z) '%s' repó nem létezik\n"
+
+#: src/pacman/sync.c:381
+#, c-format
+msgid "error: package '%s' was not found in repository '%s'\n"
+msgstr "hiba: a(z) '%s' csomag nem található a(z) '%s' repóban\n"
+
+#: src/pacman/sync.c:401
+#, c-format
+msgid "error: package '%s' was not found\n"
+msgstr "hiba: a(z) '%s' csomag nem található\n"
+
+#: src/pacman/sync.c:438
+#, c-format
+msgid "error: repository \"%s\" was not found.\n"
+msgstr "hiba: a(z) \"%s\" repó nem található.\n"
+
+#: src/pacman/sync.c:490
+#, c-format
+msgid ":: Synchronizing package databases...\n"
+msgstr ":: A csomagadatbázisok szinkronizálása...\n"
+
+#: src/pacman/sync.c:493
+#, c-format
+msgid "error: failed to synchronize any databases\n"
+msgstr "hiba: nem sikerült szinkronizálni valamelyik adatbázist\n"
+
+#: src/pacman/sync.c:505
+#, c-format
+msgid ":: Starting full system upgrade...\n"
+msgstr ":: Teljes rendszerfrissítés indítása...\n"
+
+#: src/pacman/sync.c:526
+#, fuzzy, c-format
+msgid ""
+":: pacman has detected a newer version of itself.\n"
+":: It is recommended that you upgrade pacman by itself\n"
+":: using 'pacman -S pacman', and then rerun the current\n"
+":: operation. If you wish to continue the operation and\n"
+":: not upgrade pacman separately, answer no.\n"
+msgstr ""
+":: A pacman egy újabb verzója áll rendelkezésre.\n"
+":: Ajánlott, hogy elõször magát a pacmant frissítse\n"
+":: a 'pacman -S pacman' paranccsal, majd adja ki újra\n"
+":: a jelenlegi parancsot. Ha mégis folytatni szeretné,\n"
+":: és nem frissíti külön a pacmant, válaszoljon nemmel.\n"
+
+#: src/pacman/sync.c:531
+msgid ":: Cancel current operation? [Y/n] "
+msgstr ":: Megszakítja a jelenlegi mûveletet? [I/n]"
+
+#: src/pacman/sync.c:533 src/pacman/sync.c:720
+#, c-format
+msgid "error: failed to release transaction (%s)\n"
+msgstr "hiba: nem sikerült lezárni a tranzakciót (%s)\n"
+
+#: src/pacman/sync.c:545
+#, c-format
+msgid "error: pacman: %s\n"
+msgstr "hiba: pacman: %s\n"
+
+#: src/pacman/sync.c:569
+#, fuzzy, c-format
+msgid "error: '%s': %s\n"
+msgstr "'hiba: %s': %s\n"
+
+#: src/pacman/sync.c:588
+msgid ":: Install whole content? [Y/n] "
+msgstr ":: A teljes tartalom telepítése? [I/n] "
+
+#: src/pacman/sync.c:595
+#, c-format
+msgid ":: Install %s from group %s? [Y/n] "
+msgstr ":: Telepíti %s-t a(z) %s csoportból? [I/n] "
+
+#: src/pacman/sync.c:604
+#, c-format
+msgid "error: '%s': not found in sync db\n"
+msgstr "hiba: '%s': nem található a távoli adatbázisban\n"
+
+#: src/pacman/sync.c:631
+#, fuzzy, c-format
+msgid ":: %s: conflicts with %s\n"
+msgstr ":: %s: ütközik a következõvel: %s"
+
+#: src/pacman/sync.c:645
+#, c-format
+msgid " local database is up to date\n"
+msgstr " a helyi adatbázis naprakész\n"
+
+#: src/pacman/sync.c:657
+#, c-format
+msgid "Beginning download...\n"
+msgstr "A letöltés megkezdése...\n"
+
+#: src/pacman/sync.c:660
+msgid "Proceed with download? [Y/n] "
+msgstr "Kezdõdhet a letöltés? [I/n] "
+
+#: src/pacman/sync.c:664
+#, c-format
+msgid "Beginning upgrade process...\n"
+msgstr "A frissítési folyamat megkezdése...\n"
+
+#: src/pacman/sync.c:667
+msgid "Proceed with installation? [Y/n] "
+msgstr "Kezdõdhet a telepítés? [I/n] "
+
+#: src/pacman/sync.c:708
+#, c-format
+msgid "Errors occurred, no packages were upgraded.\n"
+msgstr "Hibák léptek fel, nem frissült csomag.\n"
+
+#: src/pacman/util.c:356 src/pacman/util.c:388
+#, c-format
+msgid "None\n"
+msgstr "Nincs\n"
+
+#: src/pacman/util.c:454
+msgid "Remove:"
+msgstr "Eltávolítás:"
+
+#: src/pacman/util.c:458
+#, c-format
+msgid "Total Removed Size: %.2f MB\n"
+msgstr "Teljes eltávolított méret: %.2f MB\n"
+
+#: src/pacman/util.c:465
+#, c-format
+msgid "Total Download Size: %.2f MB\n"
+msgstr "Teljes letöltött méret: %.2f MB\n"
+
+#: src/pacman/util.c:469
+#, c-format
+msgid "Total Installed Size: %.2f MB\n"
+msgstr "Teljes telepített méret: %.2f MB\n"
+
+#: src/pacman/util.c:496
+msgid "Y"
+msgstr "I"
+
+#: src/pacman/util.c:496
+msgid "YES"
+msgstr "IGEN"
+
+#: src/pacman/util.c:557
+#, c-format
+msgid "debug: "
+msgstr "hibakeresés: "
+
+#: src/pacman/util.c:560
+#, c-format
+msgid "error: "
+msgstr "hiba: "
+
+#: src/pacman/util.c:563
+#, c-format
+msgid "warning: "
+msgstr "figyelmeztetés: "
+
+#: src/pacman/util.c:568
+#, c-format
+msgid "function: "
+msgstr "függvény: "
+
+#: scripts/abs.sh.in:60 scripts/makepkg.sh.in:110 scripts/makepkg.sh.in:112
+#: scripts/repo-add.sh.in:50 scripts/repo-remove.sh.in:50
+msgid "ERROR:"
+msgstr ""
+
+#: scripts/abs.sh.in:65
+msgid "abs (pacman) %s - download a PKGBUILD tree from a CVS repository"
+msgstr ""
+
+#: scripts/abs.sh.in:66
+msgid "Usage %s [options] [repository...]"
+msgstr ""
+
+#: scripts/abs.sh.in:67 scripts/makepkg.sh.in:1055
+msgid "Options:"
+msgstr ""
+
+#: scripts/abs.sh.in:68
+msgid " -p, --passive The connection is opened in passive mode."
+msgstr ""
+
+#: scripts/abs.sh.in:70
+msgid " -h, --help Display this help message then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:71
+msgid " -V, --version Display version information then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:73
+msgid ""
+"abs will synchronize build scripts from the CVS repository\\ninto %s. You "
+"can follow different package trees by\\nediting %s files. If no argument is "
+"given, abs\\nwill synchronize from supfiles specified in %s.\\n\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:79
+msgid "Report bugs to <%s>."
+msgstr ""
+
+#: scripts/abs.sh.in:84 scripts/gensync.sh.in:54 scripts/makepkg.sh.in:1088
+#: scripts/pacman-optimize.sh.in:59 scripts/repo-remove.sh.in:66
+msgid ""
+"Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:130 scripts/pacman-optimize.sh.in:100
+msgid "%s does not exist or is not a directory."
+msgstr ""
+
+#: scripts/abs.sh.in:133
+msgid "You do not have write permissions in %s."
+msgstr ""
+
+#: scripts/abs.sh.in:143
+msgid "Missing CVS synchronization utility. Install csup or cvsup."
+msgstr ""
+
+#: scripts/abs.sh.in:166
+msgid "Updating %s..."
+msgstr ""
+
+#: scripts/gensync.sh.in:34
+msgid "Usage: %s <root> <destfile> [package_directory]"
+msgstr ""
+
+#: scripts/gensync.sh.in:35
+msgid ""
+"gensync will generate a sync database by reading all PKGBUILD files\\nfrom "
+"<root>. gensync builds the database in a temporary directory\\nand then "
+"compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:39
+msgid ""
+"gensync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:42
+msgid ""
+"note: The <destfile> name is important. It must be of the form\\n "
+"{treename}.db.tar.gz where {treename} is the name of the custom\\n "
+"package repository you configured in /etc/pacman.conf. The\\n generated "
+"database must reside in the same directory as your\\n custom packages "
+"(also configured in /etc/pacman.conf)\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:48
+msgid "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
+msgstr ""
+
+#: scripts/gensync.sh.in:102 scripts/updatesync.sh.in:101
+msgid "%s not found. Can not continue."
+msgstr ""
+
+#: scripts/gensync.sh.in:120
+msgid "invalid root dir: %s"
+msgstr ""
+
+#: scripts/gensync.sh.in:122
+msgid "gensync: building database entries, generating md5sums..."
+msgstr ""
+
+#: scripts/gensync.sh.in:131
+msgid "failed to parse parse %s"
+msgstr ""
+
+#: scripts/gensync.sh.in:142
+msgid "could not find %s-%s-%s-%s.%s - skipping"
+msgstr ""
+
+#: scripts/gensync.sh.in:152
+msgid "creating repo DB..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:101 scripts/makepkg.sh.in:103
+#: scripts/repo-add.sh.in:45 scripts/repo-remove.sh.in:45
+msgid "WARNING:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:143
+msgid "Cleaning up..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:193
+msgid ""
+"Options beginning with 'no' will be deprecated in the next version of "
+"makepkg!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:194
+msgid "Please replace 'no' with '!': %s -> %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:198
+msgid "Option 'keepdocs' may not work as intended. Please replace with 'docs'."
+msgstr ""
+
+#: scripts/makepkg.sh.in:286
+msgid "There is no agent set up to handle %s URLs. Check %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:287 scripts/makepkg.sh.in:296
+#: scripts/makepkg.sh.in:448 scripts/makepkg.sh.in:476
+#: scripts/makepkg.sh.in:522 scripts/makepkg.sh.in:610
+#: scripts/makepkg.sh.in:638 scripts/makepkg.sh.in:700
+#: scripts/makepkg.sh.in:767 scripts/makepkg.sh.in:1105
+#: scripts/makepkg.sh.in:1415 scripts/makepkg.sh.in:1419
+msgid "Aborting..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:295
+msgid "The download program %s is not installed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:311
+msgid "Pacman returned a fatal error (%i): %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:335
+msgid "Installing missing dependencies..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:345
+msgid "Pacman failed to install missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:349
+msgid "Building missing dependencies..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:354
+msgid "Source root cannot be found - please make sure it is specified in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:362
+msgid "Could not find '%s' under %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:378
+msgid "Failed to build '%s'"
+msgstr ""
+
+#: scripts/makepkg.sh.in:411
+msgid "Failed to install all missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:414
+msgid "Missing Dependencies:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:444
+msgid "Retrieving Sources..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:447
+msgid "You do not have write permission to store downloads in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:458
+msgid "Found %s in build dir"
+msgstr ""
+
+#: scripts/makepkg.sh.in:462
+msgid "Using cached copy of %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:470
+msgid "Downloading %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:475
+msgid "Failure while downloading %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:486
+msgid "Generating checksums for source files..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:495
+msgid "Invalid integrity algorithm '%s' specified."
+msgstr ""
+
+#: scripts/makepkg.sh.in:500 scripts/makepkg.sh.in:552
+msgid "Cannot find the '%s' program."
+msgstr ""
+
+#: scripts/makepkg.sh.in:521
+msgid "Unable to find source file %s to generate checksum."
+msgstr ""
+
+#: scripts/makepkg.sh.in:547
+msgid "Invalid integrity algorithm '%s' specified"
+msgstr ""
+
+#: scripts/makepkg.sh.in:558
+msgid "Validating source files with %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:568
+msgid "NOT FOUND"
+msgstr ""
+
+#: scripts/makepkg.sh.in:577
+msgid "Passed"
+msgstr ""
+
+#: scripts/makepkg.sh.in:579
+msgid "FAILED"
+msgstr ""
+
+#: scripts/makepkg.sh.in:587
+msgid "One or more files did not pass the validity check!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:591
+msgid "Integrity checks (%s) are missing or incomplete."
+msgstr ""
+
+#: scripts/makepkg.sh.in:597
+msgid "Extracting Sources..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:609
+msgid "Unable to find source file %s for extraction."
+msgstr ""
+
+#: scripts/makepkg.sh.in:637
+msgid "Failed to extract %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:669
+msgid "Starting build()..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:699
+msgid "Build Failed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:708
+msgid "Tidying install..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:711
+msgid "Removing info/doc files..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:717
+msgid "Moving usr/share/man files to usr/man..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:724
+msgid "Compressing man pages..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:742
+msgid "Stripping debugging symbols from binaries and libraries..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:754
+msgid "Removing libtool .la files..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:759
+msgid "Removing empty directories..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:766
+msgid "Missing pkg/ directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:772
+msgid "Creating package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:782
+msgid "Generating .FILELIST file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:792
+msgid "Generating .PKGINFO file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:838
+msgid "Please add a license line to your %s!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:839
+msgid "Example for GPL'ed software: license=('GPL')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:847 scripts/makepkg.sh.in:942
+msgid "Adding install script..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:854
+msgid "Adding package changelog..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:860
+msgid "Compressing package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:865
+msgid "Failed to create package file."
+msgstr ""
+
+#: scripts/makepkg.sh.in:874
+msgid "Cannot find the xdelta binary! Is xdelta installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:904
+msgid "Making delta from version %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:918
+msgid "Recreating package tarball from delta to match md5 signatures"
+msgstr ""
+
+#: scripts/makepkg.sh.in:919
+msgid "NOTE: the delta should ONLY be distributed with this tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:923
+msgid "Could not generate the package from the delta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:927
+msgid "Delta was not able to be created."
+msgstr ""
+
+#: scripts/makepkg.sh.in:930
+msgid "No previous version found, skipping xdelta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:936
+msgid "Creating source package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:938 scripts/makepkg.sh.in:950
+#: scripts/makepkg.sh.in:957
+msgid "Adding %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:945
+msgid "Install script %s not found."
+msgstr ""
+
+#: scripts/makepkg.sh.in:965
+msgid "Compressing source package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:967
+msgid "Failed to create source package file."
+msgstr ""
+
+#: scripts/makepkg.sh.in:975
+msgid "Installing package with pacman -U..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:992
+msgid "Determining latest darcs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:995
+msgid "Determining latest cvs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:998
+msgid "Determining latest git revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1001
+msgid "Determining latest svn revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1004
+msgid "Determining latest bzr revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1007
+msgid "Determining latest hg revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1022
+msgid "Version found: %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1053
+msgid "Usage: %s [options]"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1056
+msgid " -A, --ignorearch Ignore incomplete arch field in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1057
+msgid " -b, --builddeps Build missing dependencies from source"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1058
+msgid " -c, --clean Clean up work files after build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1059
+msgid " -C, --cleancache Clean up source files from the cache"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1060
+msgid " -d, --nodeps Skip all dependency checks"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1061
+msgid " -e, --noextract Do not extract source files (use existing src/ dir)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1062
+msgid " -f, --force Overwrite existing package"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1063
+msgid " -g, --geninteg Generate integrity checks for source files"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1064
+msgid " -h, --help This help"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1065
+msgid " -i, --install Install package after successful build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1066
+msgid " -L, --log Log package build process"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1067
+msgid " -m, --nocolor Disable colorized output messages"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1068
+msgid " -o, --nobuild Download and extract files only"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1069
+msgid " -p <buildscript> Use an alternate build script (instead of '%s')"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1070
+msgid ""
+" -r, --rmdeps Remove installed dependencies after a successful build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1072
+msgid " -R, --repackage Repackage contents of pkg/ without building"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1073
+msgid " -s, --syncdeps Install missing dependencies with pacman"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1074
+msgid " --asroot Allow makepkg to run as root user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1075
+msgid " --source Do not build package; generate a source-only tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1077
+msgid "These options can be passed to pacman:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1079
+msgid ""
+" --noconfirm Do not ask for confirmation when resolving "
+"dependencies"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1080
+msgid ""
+" --noprogressbar Do not show a progress bar when downloading files"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1082
+msgid "If -p is not specified, makepkg will look for '%s'"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1104
+msgid "%s not found."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1177
+msgid "Sudo is used by default now. The --usesudo option is deprecated!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1192
+msgid "Cleaning up ALL files from %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1193
+msgid " Are you sure you wish to do this? [Y/n] "
+msgstr ""
+
+#: scripts/makepkg.sh.in:1199
+msgid "Problem removing files; you may not have correct permissions in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1203
+msgid "Source cache cleaned."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1208
+msgid "No files have been removed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1213
+msgid "Source destination must be defined in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1214
+msgid "In addition, please run makepkg -C outside of your cache directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1220
+msgid "BUILDSCRIPT is undefined! Ensure you have updated %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1227
+msgid "Running makepkg as root is a BAD idea and can cause"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1228
+msgid "permanent, catastrophic damage to your system. If you"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1229
+msgid "wish to run as root, please use the --asroot option."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1233
+msgid "The --asroot option is meant for the root user only."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1234
+msgid "Please rerun makepkg without the --asroot flag."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1238
+msgid "Fakeroot must be installed if using the 'fakeroot' option"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1239
+msgid "in the BUILDENV array in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1243
+msgid "Running makepkg as an unprivileged user will result in non-root"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1244
+msgid "ownership of the packaged files. Try using the fakeroot environment by"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1245
+msgid "placing 'fakeroot' in the BUILDENV array in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1250
+msgid "Do not use the '-F' option. This option is only for use by makepkg."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1259
+msgid "Cannot find the sudo binary! Is sudo installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1260
+msgid "Missing dependencies cannot be installed or removed as a normal user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1261
+msgid "without sudo; install and configure sudo to auto-resolve dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1271
+msgid "%s does not exist."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1286 scripts/makepkg.sh.in:1290
+msgid "%s is not allowed to be empty."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1294 scripts/makepkg.sh.in:1298
+msgid "%s is not allowed to contain hyphens."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1308 scripts/makepkg.sh.in:1313
+msgid "%s is not available for the '%s' architecture."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1309 scripts/makepkg.sh.in:1314
+msgid "Note that many packages may need a line added to their %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1310 scripts/makepkg.sh.in:1315
+msgid "such as arch=('%s')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1320
+msgid "Install scriptlet (%s) does not exist."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1330
+msgid "A package has already been built, installing existing package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1334 scripts/makepkg.sh.in:1366
+msgid "A package has already been built. (use -f to overwrite)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1343 scripts/makepkg.sh.in:1442
+msgid "Skipping build."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1352
+msgid "Leaving fakeroot environment."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1356
+msgid "Making package: %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1359
+msgid "Running makepkg as root..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1370
+msgid "Source package created: %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1377
+msgid "Skipping dependency checks."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1384
+msgid "Checking Runtime Dependencies..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1387
+msgid "Checking Buildtime Dependencies..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1391
+msgid "Could not resolve all dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1395
+msgid "pacman was not found in PATH; skipping dependency checks."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1409
+msgid "Skipping source retrieval -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1410
+msgid "Skipping source integrity checks -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1411
+msgid "Skipping source extraction -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1414
+msgid "The source directory is empty, there is nothing to build!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1418
+msgid "The package directory is empty, there is nothing to repackage!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1429
+msgid "Sources are ready."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1434
+msgid "Removing existing pkg/ directory..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1451
+msgid "Entering fakeroot environment..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1464
+msgid "Finished making: %s"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:44
+msgid "Usage: %s [pacman_db_root]"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:45
+msgid ""
+"pacman-optimize is a little hack that should improve the performance\\nof "
+"pacman when reading/writing to its filesystem-based database.\\n\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:48
+msgid ""
+"Because pacman uses many small files to keep track of packages,\\nthere is a "
+"tendency for these files to become fragmented over time.\\nThis script "
+"attempts to relocate these small files into one\\ncontinuous location on "
+"your hard drive. The result is that the hard\\ndrive should be able to read "
+"them faster, since the hard drive head\\ndoes not have to move around the "
+"disk as much.\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:91
+msgid "diff tool was not found, please install diffutils."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:96
+msgid "Pacman lock file was found. Cannot run while pacman is running."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:104
+msgid "You must have correct permissions to optimize the database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:108
+msgid "ERROR: Can not create temp directory for database building."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:114
+msgid "MD5sum'ing the old database..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:118
+msgid "Tar'ing up %s..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:123
+msgid "Tar'ing up %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:127
+msgid "Making and MD5sum'ing the new db..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:132
+msgid "Untar'ing %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:138
+msgid "Checking integrity..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:144
+msgid "Integrity check FAILED, reverting to old database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:149
+msgid "Putting the new database in place..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:158
+msgid "Finished. Your pacman database has been optimized."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:159
+msgid "For full benefits of pacman-optimize, run 'sync' now."
+msgstr ""
+
+#: scripts/repo-add.sh.in:56
+msgid "Usage: %s <path-to-db> [--force] <package> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:57
+msgid ""
+"repo-add will update a package database by reading a package file."
+"\\nMultiple packages to add can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:60
+msgid ""
+"The --force flag will add a 'force' entry to the sync database, which"
+"\\ntells pacman to skip its internal version number checking and update"
+"\\nthe package regardless.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:64
+msgid "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
+msgstr ""
+
+#: scripts/repo-add.sh.in:69
+msgid ""
+"Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:173
+msgid "Invalid package file '%s'."
+msgstr ""
+
+#: scripts/repo-add.sh.in:182 scripts/repo-remove.sh.in:91
+msgid "Removing existing package '%s'..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:192
+msgid "Creating 'desc' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:202
+msgid "Computing md5 checksums..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:214
+msgid "Creating 'depends' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:230
+msgid "Creating 'deltas' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:236
+msgid "Added delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:238
+msgid "Could not add delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:276 scripts/repo-remove.sh.in:123
+msgid "%s not found. Cannot continue."
+msgstr ""
+
+#: scripts/repo-add.sh.in:286 scripts/repo-remove.sh.in:133
+msgid "Cannot create temp directory for database building."
+msgstr ""
+
+#: scripts/repo-add.sh.in:297 scripts/repo-remove.sh.in:142
+msgid "Repository file '%s' is not a proper pacman database."
+msgstr ""
+
+#: scripts/repo-add.sh.in:300 scripts/repo-remove.sh.in:145
+msgid "Extracting database to a temporary location..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:306
+msgid "'%s' is not a package file, skipping"
+msgstr ""
+
+#: scripts/repo-add.sh.in:308
+msgid "Adding package '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:315
+msgid "Package '%s' not found."
+msgstr ""
+
+#: scripts/repo-add.sh.in:322
+msgid "Creating updated database file %s"
+msgstr ""
+
+#: scripts/repo-add.sh.in:332 scripts/repo-remove.sh.in:170
+msgid "No compression set."
+msgstr ""
+
+#: scripts/repo-add.sh.in:340 scripts/repo-remove.sh.in:178
+msgid "No packages modified, nothing to do."
+msgstr ""
+
+#: scripts/repo-remove.sh.in:55
+msgid "repo-remove %s\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:56
+msgid "usage: %s <path-to-db> <packagename> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:57
+msgid ""
+"repo-remove will update a package database by removing the package name"
+"\\nspecified on the command line from the given repo database. Multiple"
+"\\npackages to remove can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:61
+msgid "Example: repo-remove /path/to/repo.db.tar.gz kernel26"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:149
+msgid "Searching for package '%s'..."
+msgstr ""
+
+#: scripts/repo-remove.sh.in:154
+msgid "Package matching '%s' not found."
+msgstr ""
+
+#: scripts/repo-remove.sh.in:161
+msgid "Creating updated database file '%s'..."
+msgstr ""
+
+#: scripts/updatesync.sh.in:35
+msgid "Usage: %s <action> <destfile> <option> [package_directory]"
+msgstr ""
+
+#: scripts/updatesync.sh.in:36
+msgid ""
+"updatesync will update a sync database by reading a PKGBUILD and\\nmodifying "
+"the destfile. updatesync updates the database in a temporary\\ndirectory and "
+"then compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:40
+msgid "There are two types of actions:\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:41
+msgid ""
+"upd - Will update a package's entry or create it if it doesn't exist."
+"\\n It takes the package's PKGBUILD as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:42
+msgid ""
+"del - Will remove a package's entry from the db. It takes the package's"
+"\\n name as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:44
+msgid ""
+"updatesync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:47
+msgid "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
+msgstr ""
+
+#: scripts/updatesync.sh.in:53
+msgid ""
+"Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:123
+msgid "%s not found"
+msgstr ""
+
+#: scripts/updatesync.sh.in:129
+msgid "failed to parse %s"
+msgstr ""
+
+#: scripts/updatesync.sh.in:136
+msgid "could not find %s-%s-%s-%s.%s - aborting"
+msgstr ""
+
+#~ msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
+#~ msgstr ":: %s-%s: a helyi verzió naprakész. Mégis frissíti? [I/n] "
+
+#~ msgid "usage: %s {-R --remove} [options] <package>\n"
+#~ msgstr "használat: %s {-R --remove} [opciók] <csomag>\n"
+
+#~ msgid "Total Package Size: %.2f MB\n"
+#~ msgstr "Teljes csomagméret: %.2f MB\n"
+
+#~ msgid " --test check the consistency of the local database\n"
+#~ msgstr ""
+#~ " --test a helyi adatbázis konzisztenciájának ellenõrzése\n"
+
+#~ msgid ""
+#~ " --ask <number> pre-specify answers for questions (see manpage)\n"
+#~ msgstr ""
+#~ " --ask <szám> elõre megadja a válaszokat kérdésekre (ld. man "
+#~ "oldal)\n"
+
+#~ msgid "config file %s, line %d: 'local' cannot be used as section name.\n"
+#~ msgstr ""
+#~ "%s konfigurációs fájl, %d. sor: 'local' nem használható szekciónévként.\n"
+
+#~ msgid "Checking database for consistency... "
+#~ msgstr "Az adatbázis konzisztenciájának ellenõrzése..."
+
+#~ msgid "check complete.\n"
+#~ msgstr "ellenõrzés kész.\n"
+
+#~ msgid "check failed!\n"
+#~ msgstr "ellenõrzés sikertelen!\n"
+
+#~ msgid "Do you want to remove all packages from cache? [Y/n] "
+#~ msgstr "El kíván távolítani minden csomagot a gyorsítótárból? [I/n] "
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 00000000..15d079be
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,2231 @@
+# Italian translations for Pacman package manager package.
+# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
+# This file is distributed under the same license as the Pacman package manager package.
+# Giovanni 'voidnull' Scafora <linuxmania@gmail.com>, 2007.
+# Alessio 'mOLOk' Bolognino <themolok@gmail.com>, 2007.
+# Lorenzo '^zanDarK' Masini <lorenxo86@gmail.com>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Pacman package manager 3.0.0\n"
+"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: 2007-11-08 20:00+0100\n"
+"Last-Translator: Giovanni Scafora <linuxmania@gmail.com>\n"
+"Language-Team: Arch Linux Italian Team <linuxmania@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/pacman/add.c:42 src/pacman/remove.c:44
+#, c-format
+msgid "failed to release transaction (%s)\n"
+msgstr "impossibile annullare l'operazione richiesta (%s)\n"
+
+#: src/pacman/add.c:79 src/pacman/query.c:372 src/pacman/remove.c:65
+#: src/pacman/sync.c:753
+msgid "no targets specified (use -h for help)\n"
+msgstr "nessun pacchetto specificato (usare -h per un aiuto)\n"
+
+#: src/pacman/add.c:106 src/pacman/sync.c:508
+#, c-format
+msgid "error: %s\n"
+msgstr "errore: %s\n"
+
+#: src/pacman/add.c:109 src/pacman/remove.c:100 src/pacman/sync.c:482
+#, c-format
+msgid ""
+" if you're sure a package manager is not already\n"
+" running, you can remove %s.\n"
+msgstr ""
+" se il gestore dei pacchetti non è già in funzione,\n"
+" è possibile rimuovere %s.\n"
+
+#: src/pacman/add.c:116 src/pacman/remove.c:108
+#, c-format
+msgid "loading package data... "
+msgstr "caricamento dei dati in corso... "
+
+#: src/pacman/add.c:120
+#, c-format
+msgid "error: failed to add target '%s' (%s)"
+msgstr "errore: impossibile aggiungere il pacchetto '%s' (%s)"
+
+#: src/pacman/add.c:126 src/pacman/remove.c:120 src/pacman/sync.c:174
+#: src/pacman/sync.c:192
+#, c-format
+msgid "done.\n"
+msgstr "fatto.\n"
+
+#: src/pacman/add.c:131 src/pacman/remove.c:124 src/pacman/sync.c:614
+#, c-format
+msgid "error: failed to prepare transaction (%s)\n"
+msgstr "errore: preparazione non riuscita (%s)\n"
+
+#: src/pacman/add.c:143 src/pacman/remove.c:132 src/pacman/sync.c:623
+#, c-format
+msgid ":: %s: requires %s\n"
+msgstr ":: %s: richiede %s\n"
+
+#: src/pacman/add.c:151
+#, c-format
+msgid ":: %s: conflicts with %s"
+msgstr ":: %s: va in conflitto con %s"
+
+#: src/pacman/add.c:160 src/pacman/sync.c:686
+#, c-format
+msgid "%s exists in both '%s' and '%s'\n"
+msgstr "%s è già presente in '%s' e in '%s'\n"
+
+#: src/pacman/add.c:166 src/pacman/sync.c:692
+#, c-format
+msgid "%s: %s exists in filesystem\n"
+msgstr "%s: %s è già presente nel filesystem\n"
+
+#: src/pacman/add.c:172
+#, c-format
+msgid ""
+"\n"
+"errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"si sono verificati degli errori, nessun pacchetto è stato aggiornato.\n"
+
+#: src/pacman/add.c:186 src/pacman/remove.c:171 src/pacman/sync.c:677
+#, c-format
+msgid "error: failed to commit transaction (%s)\n"
+msgstr "errore: impossibile eseguire l'operazione richiesta (%s)\n"
+
+#: src/pacman/callback.c:163
+#, fuzzy, c-format
+msgid "checking dependencies...\n"
+msgstr "controllo delle dipendenze in corso... "
+
+#: src/pacman/callback.c:167
+#, fuzzy, c-format
+msgid "checking for file conflicts...\n"
+msgstr "controllo dei conflitti in corso... "
+
+#: src/pacman/callback.c:171
+#, fuzzy, c-format
+msgid "resolving dependencies...\n"
+msgstr "risoluzione delle dipendenze in corso... "
+
+#: src/pacman/callback.c:174
+#, fuzzy, c-format
+msgid "looking for inter-conflicts...\n"
+msgstr "ricerca dei conflitti incrociati in corso... "
+
+#: src/pacman/callback.c:178
+#, fuzzy, c-format
+msgid "installing %s...\n"
+msgstr "installazione di %s in corso... "
+
+#: src/pacman/callback.c:189
+#, fuzzy, c-format
+msgid "removing %s...\n"
+msgstr "rimozione di %s in corso... "
+
+#: src/pacman/callback.c:200
+#, fuzzy, c-format
+msgid "upgrading %s...\n"
+msgstr "aggiornamento di %s in corso... "
+
+#: src/pacman/callback.c:211
+#, fuzzy, c-format
+msgid "checking package integrity...\n"
+msgstr "controllo dell'integrità dei pacchetti in corso... "
+
+#: src/pacman/callback.c:214
+#, fuzzy, c-format
+msgid "checking delta integrity...\n"
+msgstr "controllo dell'integrità di delta in corso... "
+
+#: src/pacman/callback.c:217
+#, c-format
+msgid "applying deltas...\n"
+msgstr "applicazione dei delta in corso...\n"
+
+#: src/pacman/callback.c:220
+#, c-format
+msgid "generating %s with %s... "
+msgstr "generazione di %s con %s in corso... "
+
+#: src/pacman/callback.c:223
+#, c-format
+msgid "success!\n"
+msgstr ""
+
+#: src/pacman/callback.c:226
+#, c-format
+msgid "failed.\n"
+msgstr "non riuscito.\n"
+
+#: src/pacman/callback.c:235
+#, c-format
+msgid ":: Retrieving packages from %s...\n"
+msgstr ":: Recupero dei pacchetti da %s...\n"
+
+#: src/pacman/callback.c:263
+#, fuzzy, c-format
+msgid ""
+":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway? [Y/"
+"n] "
+msgstr ""
+":: %s richiede l'installazione di %s da IgnorePkg. Installare ugualmente? [S/"
+"n] "
+
+#: src/pacman/callback.c:268
+#, fuzzy, c-format
+msgid ":: %s is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+msgstr ":: %s è in IgnorePkg. Installare ugualmente? [S/n] "
+
+#: src/pacman/callback.c:274
+#, c-format
+msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
+msgstr ":: %s è presente in HoldPkg. Rimuovere ugualmente? [S/n] "
+
+#: src/pacman/callback.c:279
+#, c-format
+msgid ":: Replace %s with %s/%s? [Y/n] "
+msgstr ":: Sostituire %s con %s/%s? [S/n] "
+
+#: src/pacman/callback.c:286
+#, c-format
+msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
+msgstr ":: %s va in conflitto con %s. Rimuovere %s? [S/n] "
+
+#: src/pacman/callback.c:294
+#, c-format
+msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
+msgstr ""
+":: %s-%s: la versione installata è più recente. Aggiornare ugualmente? [S/n] "
+
+#: src/pacman/callback.c:304
+#, c-format
+msgid ":: File %s is corrupted. Do you want to delete it? [Y/n] "
+msgstr ":: Il file %s è corrotto. Eliminarlo? [S/n] "
+
+#: src/pacman/callback.c:354
+msgid "installing"
+msgstr "installazione in corso di "
+
+#: src/pacman/callback.c:357
+msgid "upgrading"
+msgstr "aggiornamento in corso di"
+
+#: src/pacman/callback.c:360
+msgid "removing"
+msgstr "rimozione in corso di"
+
+#: src/pacman/callback.c:363
+msgid "checking for file conflicts"
+msgstr "controllo dei conflitti in corso"
+
+#: src/pacman/package.c:68
+msgid "Explicitly installed"
+msgstr "Installato esplicitamente"
+
+#: src/pacman/package.c:71
+msgid "Installed as a dependency for another package"
+msgstr "Installato come dipendenza di un altro pacchetto"
+
+#: src/pacman/package.c:74
+msgid "Unknown"
+msgstr "Sconosciuto"
+
+#: src/pacman/package.c:89
+msgid "Description : "
+msgstr "Descrizione : "
+
+#: src/pacman/package.c:93
+#, fuzzy
+msgid "Filename :"
+msgstr "Licenza :"
+
+#: src/pacman/package.c:95
+#, fuzzy
+msgid "Name :"
+msgstr "Nome : %s\n"
+
+#: src/pacman/package.c:96
+#, fuzzy
+msgid "Version :"
+msgstr "Versione : %s\n"
+
+#: src/pacman/package.c:97
+#, fuzzy
+msgid "URL :"
+msgstr "URL : %s\n"
+
+#: src/pacman/package.c:98
+#, fuzzy
+msgid "Licenses :"
+msgstr "Licenza :"
+
+#: src/pacman/package.c:99
+msgid "Groups :"
+msgstr "Gruppi :"
+
+#: src/pacman/package.c:100
+msgid "Provides :"
+msgstr "Fornisce :"
+
+#: src/pacman/package.c:101
+msgid "Depends On :"
+msgstr "Dipende da :"
+
+#: src/pacman/package.c:102
+msgid "Optional Deps :"
+msgstr "Dip opzionali :"
+
+#: src/pacman/package.c:105
+msgid "Required By :"
+msgstr "Richiesto da :"
+
+#: src/pacman/package.c:108
+msgid "Conflicts With :"
+msgstr "Conflitto con :"
+
+#: src/pacman/package.c:109
+msgid "Replaces :"
+msgstr "Sostituisce :"
+
+#: src/pacman/package.c:111
+#, c-format
+msgid "Download Size : %6.2f K\n"
+msgstr "Dimensione pkg : %6.2f K\n"
+
+#: src/pacman/package.c:115
+#, fuzzy, c-format
+msgid "Compressed Size: %6.2f K\n"
+msgstr "Kb richiesti : %6.2f K\n"
+
+#: src/pacman/package.c:119
+#, c-format
+msgid "Installed Size : %6.2f K\n"
+msgstr "Kb richiesti : %6.2f K\n"
+
+#: src/pacman/package.c:121
+#, fuzzy
+msgid "Packager :"
+msgstr "Autore : %s\n"
+
+#: src/pacman/package.c:122
+#, fuzzy
+msgid "Architecture :"
+msgstr "Architettura : %s\n"
+
+#: src/pacman/package.c:123
+#, fuzzy
+msgid "Build Date :"
+msgstr "Creato il : %s"
+
+#: src/pacman/package.c:125
+#, fuzzy
+msgid "Install Date :"
+msgstr "Installato il : %s"
+
+#: src/pacman/package.c:126
+#, fuzzy
+msgid "Install Reason :"
+msgstr "Motivo : %s\n"
+
+#: src/pacman/package.c:129
+#, fuzzy
+msgid "Install Script :"
+msgstr "Script install : %s\n"
+
+#: src/pacman/package.c:130
+msgid "Yes"
+msgstr "Si"
+
+#: src/pacman/package.c:130
+msgid "No"
+msgstr "No"
+
+#: src/pacman/package.c:135
+#, fuzzy
+msgid "MD5 Sum :"
+msgstr "Somma MD5 : %s"
+
+#: src/pacman/package.c:159
+#, fuzzy
+msgid "Repository :"
+msgstr "Repository : %s\n"
+
+#: src/pacman/package.c:169
+#, c-format
+msgid "Backup Files:\n"
+msgstr "File di backup:\n"
+
+#: src/pacman/package.c:189
+#, c-format
+msgid "error: could not calculate checksums for %s\n"
+msgstr "errore: impossibile calcolare i checksum di %s\n"
+
+#: src/pacman/package.c:197
+#, c-format
+msgid "MODIFIED\t%s\n"
+msgstr "MODIFICATO\t%s\n"
+
+#: src/pacman/package.c:199
+#, c-format
+msgid "Not Modified\t%s\n"
+msgstr "Non modificato\t%s\n"
+
+#: src/pacman/package.c:203
+#, c-format
+msgid "MISSING\t\t%s\n"
+msgstr "MANCANTE\t\t%s\n"
+
+#: src/pacman/package.c:209
+#, c-format
+msgid "(none)\n"
+msgstr "(nessuno)\n"
+
+#: src/pacman/package.c:244
+#, c-format
+msgid "error: no changelog available for '%s'.\n"
+msgstr "errore: nessun changelog è disponibile per '%s'.\n"
+
+#: src/pacman/pacman.c:62
+msgid "options"
+msgstr "opzioni"
+
+#: src/pacman/pacman.c:63
+msgid "file"
+msgstr "file"
+
+#: src/pacman/pacman.c:64
+msgid "package"
+msgstr "pacchetto"
+
+#: src/pacman/pacman.c:65
+msgid "usage"
+msgstr "uso"
+
+#: src/pacman/pacman.c:66
+msgid "operation"
+msgstr "operazione"
+
+#: src/pacman/pacman.c:78
+#, c-format
+msgid ""
+"\n"
+"use '%s --help' with other options for more syntax\n"
+msgstr ""
+"\n"
+"usare '%s --help' con le altre opzioni per ottenere maggiori informazioni\n"
+
+#: src/pacman/pacman.c:83 src/pacman/pacman.c:97 src/pacman/pacman.c:119
+#, c-format
+msgid " --asdeps install packages as non-explicitly installed\n"
+msgstr ""
+" --asdeps installa i pacchetti come non esplicitamente "
+"installati\n"
+
+#: src/pacman/pacman.c:84 src/pacman/pacman.c:90 src/pacman/pacman.c:98
+#: src/pacman/pacman.c:121
+#, c-format
+msgid " -d, --nodeps skip dependency checks\n"
+msgstr " -d, --nodeps ignora i controlli sulle dipendenze\n"
+
+#: src/pacman/pacman.c:85 src/pacman/pacman.c:99 src/pacman/pacman.c:123
+#, c-format
+msgid " -f, --force force install, overwrite conflicting files\n"
+msgstr ""
+" -f, --force forza l'installazione e sovrascrive i file in "
+"conflitto\n"
+
+#: src/pacman/pacman.c:89
+#, c-format
+msgid ""
+" -c, --cascade remove packages and all packages that depend on them\n"
+msgstr " -c, --cascade rimuove i pacchetti con tutte le dipendenze\n"
+
+#: src/pacman/pacman.c:91
+#, c-format
+msgid ""
+" -k, --dbonly only remove database entry, do not remove files\n"
+msgstr ""
+" -k, --dbonly rimuove solo la voce nel database, non rimuove i "
+"file\n"
+
+#: src/pacman/pacman.c:92
+#, c-format
+msgid " -n, --nosave remove configuration files as well\n"
+msgstr " -n, --nosave rimuove anche i file di configurazione\n"
+
+#: src/pacman/pacman.c:93
+#, c-format
+msgid ""
+" -s, --recursive remove dependencies also (that won't break packages)\n"
+msgstr ""
+" -s, --recursive rimuove anche le dipendenze (non richieste altrove)\n"
+
+#: src/pacman/pacman.c:103
+#, c-format
+msgid " -c, --changelog view the changelog of a package\n"
+msgstr " -c, --changelog mostra il changelog di un pacchetto\n"
+
+#: src/pacman/pacman.c:104
+#, c-format
+msgid " -d, --deps list all packages installed as dependencies\n"
+msgstr ""
+" -d, --deps elenca tutti i pacchetti installati come dipendenze\n"
+
+#: src/pacman/pacman.c:105
+#, c-format
+msgid " -e, --explicit list all packages explicitly installed\n"
+msgstr ""
+" -e, --explicit elenca tutti i pacchetti installati esplicitamente\n"
+
+#: src/pacman/pacman.c:106 src/pacman/pacman.c:124
+#, c-format
+msgid " -g, --groups view all members of a package group\n"
+msgstr ""
+" -g, --groups visualizza tutti i membri di un gruppo di pacchetti\n"
+
+#: src/pacman/pacman.c:107
+#, c-format
+msgid ""
+" -i, --info view package information (-ii for backup files)\n"
+msgstr ""
+" -i, --info visualizza le informazioni dell pacchetto (-ii per il "
+"backup)\n"
+
+#: src/pacman/pacman.c:108
+#, c-format
+msgid " -l, --list list the contents of the queried package\n"
+msgstr " -l, --list elenca i file contenuti nel pacchetto\n"
+
+#: src/pacman/pacman.c:109
+#, c-format
+msgid ""
+" -m, --foreign list installed packages not found in sync db(s)\n"
+msgstr ""
+" -m, --foreign elenca tutti i pacchetti non trovati nei database\n"
+
+#: src/pacman/pacman.c:110
+#, c-format
+msgid " -o, --owns <file> query the package that owns <file>\n"
+msgstr ""
+" -o, --owns <file> visualizza il pacchetto che contiene il <file>\n"
+
+#: src/pacman/pacman.c:111
+#, c-format
+msgid " -p, --file <package> query a package file instead of the database\n"
+msgstr ""
+" -p, --file interroga il file di pacchetto invece del database\n"
+
+#: src/pacman/pacman.c:112
+#, c-format
+msgid ""
+" -s, --search <regex> search locally-installed packages for matching "
+"strings\n"
+msgstr ""
+" -s, --search <regex> cerca nei pacchetti installati le stringhe "
+"corrispondenti\n"
+
+#: src/pacman/pacman.c:113
+#, c-format
+msgid " -t, --orphans list all packages not required by any package\n"
+msgstr ""
+" -t, --orphans elenca tutti i pacchetti non richiesti da nessun "
+"pacchetto\n"
+
+#: src/pacman/pacman.c:114
+#, c-format
+msgid " -u, --upgrades list all packages that can be upgraded\n"
+msgstr ""
+" -u, --upgrades elenca tutti i pacchetti che possono essere "
+"aggiornati\n"
+
+#: src/pacman/pacman.c:115 src/pacman/pacman.c:136
+#, c-format
+msgid " -q --quiet show less information for query and search\n"
+msgstr ""
+
+#: src/pacman/pacman.c:120
+#, c-format
+msgid ""
+" -c, --clean remove old packages from cache directory (-cc for "
+"all)\n"
+msgstr ""
+" -c, --clean rimuove i vecchi pacchetti dalla cache (usare -cc "
+"per\n"
+" rimuoverli tutti)\n"
+
+#: src/pacman/pacman.c:122
+#, c-format
+msgid " -e, --dependsonly install dependencies only\n"
+msgstr " -e, --dependsonly installa solo le dipendenze\n"
+
+#: src/pacman/pacman.c:125
+#, c-format
+msgid " -i, --info view package information\n"
+msgstr " -i, --info visualizza le informazioni sul pacchetto\n"
+
+#: src/pacman/pacman.c:126
+#, c-format
+msgid " -l, --list <repo> view a list of packages in a repo\n"
+msgstr ""
+" -l, --list <repo> visualizza la lista dei pacchetti di un repository\n"
+
+#: src/pacman/pacman.c:127
+#, c-format
+msgid ""
+" -p, --print-uris print out URIs for given packages and their "
+"dependencies\n"
+msgstr ""
+" -p, --print-uris stampa gli URI dei pacchetti e le loro dipendenze\n"
+
+#: src/pacman/pacman.c:128
+#, c-format
+msgid ""
+" -s, --search <regex> search remote repositories for matching strings\n"
+msgstr ""
+" -s, --search <regex> cerca le stringhe corrispondenti nei repository "
+"remoti\n"
+
+#: src/pacman/pacman.c:129
+#, c-format
+msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
+msgstr ""
+" -u, --sysupgrade aggiorna tutti i pacchetti installati nel sistema\n"
+
+#: src/pacman/pacman.c:130
+#, c-format
+msgid ""
+" -w, --downloadonly download packages but do not install/upgrade "
+"anything\n"
+msgstr ""
+" -w, --downloadonly scarica i pacchetti senza installarli/aggiornarli\n"
+
+#: src/pacman/pacman.c:131
+#, c-format
+msgid ""
+" -y, --refresh download fresh package databases from the server\n"
+msgstr ""
+" -y, --refresh scarica dal server i database aggiornati dei "
+"pacchetti\n"
+
+#: src/pacman/pacman.c:132
+#, fuzzy, c-format
+msgid ""
+" --needed only install outdated or not yet installed packages\n"
+msgstr ""
+" --asdeps installa i pacchetti come non esplicitamente "
+"installati\n"
+
+#: src/pacman/pacman.c:133
+#, c-format
+msgid ""
+" --ignore <pkg> ignore a package upgrade (can be used more than "
+"once)\n"
+msgstr " --ignore <pkg> ignora l'aggiornamento di un pacchetto\n"
+
+#: src/pacman/pacman.c:134
+#, fuzzy, c-format
+msgid ""
+" --ignoregroup <grp>\n"
+" ignore a group upgrade (can be used more than once)\n"
+msgstr " --ignore <pkg> ignora l'aggiornamento di un pacchetto\n"
+
+#: src/pacman/pacman.c:138
+#, c-format
+msgid " --config <path> set an alternate configuration file\n"
+msgstr " --config <path> imposta un file di configurazione alternativo\n"
+
+#: src/pacman/pacman.c:139
+#, c-format
+msgid " --logfile <path> set an alternate log file\n"
+msgstr ""
+" --logfile <path> imposta un file di configurazione alternativo\n"
+
+#: src/pacman/pacman.c:140
+#, c-format
+msgid " --noconfirm do not ask for any confirmation\n"
+msgstr " --noconfirm non chiede alcuna conferma\n"
+
+#: src/pacman/pacman.c:141
+#, c-format
+msgid ""
+" --noprogressbar do not show a progress bar when downloading files\n"
+msgstr " --noprogressbar non visualizza la barra di avanzamento\n"
+
+#: src/pacman/pacman.c:142
+#, c-format
+msgid ""
+" --noscriptlet do not execute the install scriptlet if one exists\n"
+msgstr " --noscriptlet non esegue un eventuale script di install\n"
+
+#: src/pacman/pacman.c:143
+#, c-format
+msgid " -v, --verbose be verbose\n"
+msgstr " -v, --verbose mostra maggiori informazioni\n"
+
+#: src/pacman/pacman.c:144
+#, c-format
+msgid " -r, --root <path> set an alternate installation root\n"
+msgstr ""
+" -r, --root <path> imposta una root alternativa per l'installazione\n"
+
+#: src/pacman/pacman.c:145
+#, c-format
+msgid " -b, --dbpath <path> set an alternate database location\n"
+msgstr ""
+" -b, --dbpath <path> imposta un percorso alternativo per il database\n"
+
+#: src/pacman/pacman.c:146
+#, c-format
+msgid " --cachedir <dir> set an alternate package cache location\n"
+msgstr " --cachedir <dir> imposta un percorso alternativo per la cache\n"
+
+#: src/pacman/pacman.c:159
+#, c-format
+msgid ""
+" This program may be freely redistributed under\n"
+" the terms of the GNU General Public License\n"
+msgstr ""
+" This program may be freely redistributed under\n"
+" the terms of the GNU General Public License\n"
+
+#: src/pacman/pacman.c:250
+#, fuzzy, c-format
+msgid "problem setting rootdir '%s' (%s)\n"
+msgstr ""
+"si è verificato un errore durante l'impostazione della root '%s' (%s)\n"
+
+#: src/pacman/pacman.c:267
+#, c-format
+msgid "problem setting dbpath '%s' (%s)\n"
+msgstr ""
+"si è verificato un errore durante l'impostazione del percorso del database '%"
+"s' (%s)\n"
+
+#: src/pacman/pacman.c:275
+#, c-format
+msgid "problem setting logfile '%s' (%s)\n"
+msgstr ""
+"si è verificato un errore durante l'impostazione del file di log '%s' (%s)\n"
+
+#: src/pacman/pacman.c:384
+#, c-format
+msgid "'%s' is not a valid debug level\n"
+msgstr "'%s' non è un livello di debug valido\n"
+
+#: src/pacman/pacman.c:398 src/pacman/pacman.c:677
+#, c-format
+msgid "problem adding cachedir '%s' (%s)\n"
+msgstr "impossibile aggiungere la directory di cache '%s' (%s)\n"
+
+#: src/pacman/pacman.c:484
+msgid "only one operation may be used at a time\n"
+msgstr "è consentito eseguire solo un'operazione per volta\n"
+
+#: src/pacman/pacman.c:544
+#, c-format
+msgid "config file %s could not be read.\n"
+msgstr "il file di configurazione %s potrebbe non essere leggibile.\n"
+
+#: src/pacman/pacman.c:580
+#, c-format
+msgid "config file %s, line %d: bad section name.\n"
+msgstr "file di configurazione %s, alla linea %d: nome della sezione errato.\n"
+
+#: src/pacman/pacman.c:602
+#, c-format
+msgid "config file %s, line %d: syntax error in config file- missing key.\n"
+msgstr ""
+"file di configurazione %s, alla linea %d: errore di sintassi, manca una "
+"chiave.\n"
+
+#: src/pacman/pacman.c:612
+#, c-format
+msgid ""
+"config file %s, line %d: 'Include' directive must belong to a section.\n"
+msgstr ""
+"file di configurazione %s, alla linea %d: la direttiva 'Include' deve "
+"appartenere ad una sezione.\n"
+
+#: src/pacman/pacman.c:640 src/pacman/pacman.c:702 src/pacman/pacman.c:717
+#, c-format
+msgid "config file %s, line %d: directive '%s' not recognized.\n"
+msgstr ""
+"file di configurazione %s, alla linea %d: la direttiva '%s' non è stata "
+"riconosciuta.\n"
+
+#: src/pacman/pacman.c:787
+#, c-format
+msgid "failed to initialize alpm library (%s)\n"
+msgstr "impossibile inizializzare la libreria alpm (%s)\n"
+
+#: src/pacman/pacman.c:824
+msgid "you cannot perform this operation unless you are root.\n"
+msgstr "operazione possibile solo da root.\n"
+
+#: src/pacman/pacman.c:847
+#, c-format
+msgid "could not register 'local' database (%s)\n"
+msgstr "impossibile registrare il database 'local' (%s)\n"
+
+#: src/pacman/pacman.c:873
+msgid "no operation specified (use -h for help)\n"
+msgstr "nessuna operazione specificata (usare -h per un aiuto)\n"
+
+#: src/pacman/query.c:67
+#, c-format
+msgid "error: no file was specified for --owns\n"
+msgstr "errore: non è stato specificato alcun file per --owns\n"
+
+#: src/pacman/query.c:80
+#, c-format
+msgid "error: failed to read file '%s': %s\n"
+msgstr "errore: impossibile leggere il file '%s': %s\n"
+
+#: src/pacman/query.c:87
+#, c-format
+msgid "error: cannot determine ownership of a directory\n"
+msgstr "errore: impossibile determinare il proprietario di una directory\n"
+
+#: src/pacman/query.c:95
+#, c-format
+msgid "error: cannot determine real path for '%s': %s\n"
+msgstr "errore: impossibile determinare la posizione reale di '%s': %s\n"
+
+#: src/pacman/query.c:117
+#, c-format
+msgid "%s is owned by %s %s\n"
+msgstr "%s è contenuto in %s %s\n"
+
+#: src/pacman/query.c:125
+#, c-format
+msgid "error: No package owns %s\n"
+msgstr "errore: nessun pacchetto contiene %s\n"
+
+#: src/pacman/query.c:221
+#, c-format
+msgid "error: group \"%s\" was not found\n"
+msgstr "errore: il gruppo \"%s\" non è stato trovato\n"
+
+#: src/pacman/query.c:232
+#, c-format
+msgid "Checking for package upgrades... \n"
+msgstr "Controllo degli aggiornamenti dei pacchetti in corso... \n"
+
+#: src/pacman/query.c:243
+#, c-format
+msgid "no upgrades found.\n"
+msgstr "nessun aggiornamento trovato.\n"
+
+#: src/pacman/query.c:362 src/pacman/sync.c:743
+msgid "no usable package repositories configured.\n"
+msgstr "non è stato configurato nessun repository di pacchetti valido.\n"
+
+#: src/pacman/query.c:406
+#, c-format
+msgid "error: package \"%s\" not found\n"
+msgstr "errore: il pacchetto \"%s\" non è stato trovato\n"
+
+#: src/pacman/remove.c:78 src/pacman/sync.c:583
+#, c-format
+msgid ":: group %s:\n"
+msgstr ":: gruppo %s:\n"
+
+#: src/pacman/remove.c:80
+msgid " Remove whole content? [Y/n] "
+msgstr " Rimuovere l'intero contenuto? [S/n] "
+
+#: src/pacman/remove.c:84
+#, c-format
+msgid ":: Remove %s from group %s? [Y/n] "
+msgstr ":: Rimuovere %s dal gruppo %s? [S/n] "
+
+#: src/pacman/remove.c:97 src/pacman/sync.c:479 src/pacman/sync.c:540
+#, c-format
+msgid "error: failed to init transaction (%s)\n"
+msgstr "errore: inizializzazione non riuscita (%s)\n"
+
+#: src/pacman/remove.c:113
+#, c-format
+msgid "error: failed to add target '%s' (%s)\n"
+msgstr "errore: impossibile aggiungere il pacchetto '%s' (%s)\n"
+
+#: src/pacman/remove.c:158 src/pacman/util.c:462
+msgid "Targets:"
+msgstr "Pacchetti:"
+
+#: src/pacman/remove.c:161
+msgid ""
+"\n"
+"Do you want to remove these packages? [Y/n] "
+msgstr ""
+"\n"
+"Rimuovere questi pacchetti? [S/n] "
+
+#: src/pacman/sync.c:52
+#, fuzzy, c-format
+msgid "error: could not access database directory\n"
+msgstr "errore: impossibile accedere alla directory di cache\n"
+
+#: src/pacman/sync.c:83
+#, fuzzy, c-format
+msgid "Do you want to remove %s? [Y/n] "
+msgstr ""
+"\n"
+"Rimuovere questi pacchetti? [S/n] "
+
+#: src/pacman/sync.c:88
+#, fuzzy, c-format
+msgid "error: could not remove repository directory\n"
+msgstr "errore: impossibile rimuovere la directory di cache\n"
+
+#: src/pacman/sync.c:101
+#, fuzzy, c-format
+msgid "Database directory: %s\n"
+msgstr "Directory cache: %s\n"
+
+#: src/pacman/sync.c:102
+#, fuzzy
+msgid "Do you want to remove unused repositories? [Y/n] "
+msgstr ""
+"\n"
+"Rimuovere questi pacchetti? [S/n] "
+
+#: src/pacman/sync.c:112
+#, c-format
+msgid "Database directory cleaned up\n"
+msgstr ""
+
+#: src/pacman/sync.c:130 src/pacman/sync.c:177
+#, c-format
+msgid "Cache directory: %s\n"
+msgstr "Directory cache: %s\n"
+
+#: src/pacman/sync.c:131
+#, fuzzy
+msgid "Do you want to remove uninstalled packages from cache? [Y/n] "
+msgstr "Rimuovere i pacchetti non installati dalla cache? [S/n] "
+
+#: src/pacman/sync.c:134
+#, c-format
+msgid "removing old packages from cache... "
+msgstr "rimozione dei vecchi pacchetti dalla cache in corso... "
+
+#: src/pacman/sync.c:138
+#, c-format
+msgid "error: could not access cache directory\n"
+msgstr "errore: impossibile accedere alla directory di cache\n"
+
+#: src/pacman/sync.c:178
+msgid "Do you want to remove ALL packages from cache? [Y/n] "
+msgstr "Rimuovere TUTTI i pacchetti dalla cache? [S/n] "
+
+#: src/pacman/sync.c:181
+#, c-format
+msgid "removing all packages from cache... "
+msgstr "rimozione di tutti i pacchetti dalla cache in corso... "
+
+#: src/pacman/sync.c:184
+#, c-format
+msgid "error: could not remove cache directory\n"
+msgstr "errore: impossibile rimuovere la directory di cache\n"
+
+#: src/pacman/sync.c:189
+#, c-format
+msgid "error: could not create new cache directory\n"
+msgstr "errore: impossibile creare una nuova directory di cache\n"
+
+#: src/pacman/sync.c:216
+#, c-format
+msgid "error: failed to synchronize %s: %s\n"
+msgstr "errore: impossibile sincronizzare %s: %s\n"
+
+#: src/pacman/sync.c:219
+#, c-format
+msgid "error: failed to update %s (%s)\n"
+msgstr "errore: impossibile aggiornare %s (%s)\n"
+
+#: src/pacman/sync.c:223
+#, c-format
+msgid " %s is up to date\n"
+msgstr " %s è aggiornato\n"
+
+#: src/pacman/sync.c:366
+#, c-format
+msgid "error: repository '%s' does not exist\n"
+msgstr "errore: il repository '%s' non esiste\n"
+
+#: src/pacman/sync.c:381
+#, c-format
+msgid "error: package '%s' was not found in repository '%s'\n"
+msgstr "errore: impossibile trovare il pacchetto '%s' nel repository '%s'\n"
+
+#: src/pacman/sync.c:401
+#, c-format
+msgid "error: package '%s' was not found\n"
+msgstr "errore: impossibile trovare il pacchetto '%s'\n"
+
+#: src/pacman/sync.c:438
+#, c-format
+msgid "error: repository \"%s\" was not found.\n"
+msgstr "errore: impossibile trovare il repository \"%s\".\n"
+
+#: src/pacman/sync.c:490
+#, c-format
+msgid ":: Synchronizing package databases...\n"
+msgstr ":: Sincronizzazione dei database in corso...\n"
+
+#: src/pacman/sync.c:493
+#, c-format
+msgid "error: failed to synchronize any databases\n"
+msgstr "errore: impossibile sincronizzare i database\n"
+
+#: src/pacman/sync.c:505
+#, c-format
+msgid ":: Starting full system upgrade...\n"
+msgstr ":: Aggiornamento del sistema in corso...\n"
+
+#: src/pacman/sync.c:526
+#, fuzzy, c-format
+msgid ""
+":: pacman has detected a newer version of itself.\n"
+":: It is recommended that you upgrade pacman by itself\n"
+":: using 'pacman -S pacman', and then rerun the current\n"
+":: operation. If you wish to continue the operation and\n"
+":: not upgrade pacman separately, answer no.\n"
+msgstr ""
+":: è disponibile una nuova versione di pacman.\n"
+":: Si consiglia di consentire a pacman di aggiornarsi\n"
+":: usando 'pacman -S pacman' e poi riavviare l'attuale\n"
+":: operazione. Se si desidera continuare l'operazione e\n"
+":: non aggiornare pacman separatamente, rispondere no.\n"
+
+#: src/pacman/sync.c:531
+msgid ":: Cancel current operation? [Y/n] "
+msgstr ":: Eliminare l'operazione corrente? [S/n] "
+
+#: src/pacman/sync.c:533 src/pacman/sync.c:720
+#, c-format
+msgid "error: failed to release transaction (%s)\n"
+msgstr "errore: impossibile annullare l'operazione richiesta (%s)\n"
+
+#: src/pacman/sync.c:545
+#, c-format
+msgid "error: pacman: %s\n"
+msgstr "errore: pacman: %s\n"
+
+#: src/pacman/sync.c:569
+#, fuzzy, c-format
+msgid "error: '%s': %s\n"
+msgstr "errore: '%s': %s\n"
+
+#: src/pacman/sync.c:588
+msgid ":: Install whole content? [Y/n] "
+msgstr ":: Installare l'intero contenuto? [S/n] "
+
+#: src/pacman/sync.c:595
+#, c-format
+msgid ":: Install %s from group %s? [Y/n] "
+msgstr ":: Installare %s dal gruppo %s? [S/n] "
+
+#: src/pacman/sync.c:604
+#, c-format
+msgid "error: '%s': not found in sync db\n"
+msgstr "errore: '%s' non è stato trovato nel database\n"
+
+#: src/pacman/sync.c:631
+#, fuzzy, c-format
+msgid ":: %s: conflicts with %s\n"
+msgstr ":: %s: va in conflitto con %s"
+
+#: src/pacman/sync.c:645
+#, c-format
+msgid " local database is up to date\n"
+msgstr " Il database locale è aggiornato\n"
+
+#: src/pacman/sync.c:657
+#, c-format
+msgid "Beginning download...\n"
+msgstr "Download in corso...\n"
+
+#: src/pacman/sync.c:660
+msgid "Proceed with download? [Y/n] "
+msgstr "Procedere con il download? [S/n] "
+
+#: src/pacman/sync.c:664
+#, c-format
+msgid "Beginning upgrade process...\n"
+msgstr "Aggiornamento in corso...\n"
+
+#: src/pacman/sync.c:667
+msgid "Proceed with installation? [Y/n] "
+msgstr "Procedere con l'installazione? [S/n] "
+
+#: src/pacman/sync.c:708
+#, c-format
+msgid "Errors occurred, no packages were upgraded.\n"
+msgstr ""
+"si sono verificati degli errori, nessun pacchetto è stato aggiornato.\n"
+
+#: src/pacman/util.c:356 src/pacman/util.c:388
+#, c-format
+msgid "None\n"
+msgstr "Nessuno\n"
+
+#: src/pacman/util.c:454
+msgid "Remove:"
+msgstr "Rimuovere:"
+
+#: src/pacman/util.c:458
+#, c-format
+msgid "Total Removed Size: %.2f MB\n"
+msgstr "Dimensione totale dei pacchetti rimossi: %.2f MB\n"
+
+#: src/pacman/util.c:465
+#, c-format
+msgid "Total Download Size: %.2f MB\n"
+msgstr "Dimensione totale dei pacchetti scaricati: %.2f MB\n"
+
+#: src/pacman/util.c:469
+#, c-format
+msgid "Total Installed Size: %.2f MB\n"
+msgstr "Dimensione totale dei pacchetti installati: %.2f MB\n"
+
+#: src/pacman/util.c:496
+msgid "Y"
+msgstr "S"
+
+#: src/pacman/util.c:496
+msgid "YES"
+msgstr "SI"
+
+#: src/pacman/util.c:557
+#, c-format
+msgid "debug: "
+msgstr "debug: "
+
+#: src/pacman/util.c:560
+#, c-format
+msgid "error: "
+msgstr "errore: "
+
+#: src/pacman/util.c:563
+#, c-format
+msgid "warning: "
+msgstr "attenzione: "
+
+#: src/pacman/util.c:568
+#, c-format
+msgid "function: "
+msgstr "funzione: "
+
+#: scripts/abs.sh.in:60 scripts/makepkg.sh.in:110 scripts/makepkg.sh.in:112
+#: scripts/repo-add.sh.in:50 scripts/repo-remove.sh.in:50
+msgid "ERROR:"
+msgstr "ERRORE:"
+
+#: scripts/abs.sh.in:65
+msgid "abs (pacman) %s - download a PKGBUILD tree from a CVS repository"
+msgstr "abs (pacman) %s - scarica un PKGBUILD da un repository CVS"
+
+#: scripts/abs.sh.in:66
+msgid "Usage %s [options] [repository...]"
+msgstr "Uso %s [opzioni] [repository...]"
+
+#: scripts/abs.sh.in:67 scripts/makepkg.sh.in:1055
+msgid "Options:"
+msgstr "Opzioni:"
+
+#: scripts/abs.sh.in:68
+msgid " -p, --passive The connection is opened in passive mode."
+msgstr " -p, --passive La connessione è stata stabilita in modalità passiva."
+
+#: scripts/abs.sh.in:70
+msgid " -h, --help Display this help message then exit."
+msgstr " -h, --help Visualizza questo help e quindi esce."
+
+#: scripts/abs.sh.in:71
+msgid " -V, --version Display version information then exit."
+msgstr ""
+" -V, --version Visualizza le informazioni della versione e quindi esce."
+
+#: scripts/abs.sh.in:73
+msgid ""
+"abs will synchronize build scripts from the CVS repository\\ninto %s. You "
+"can follow different package trees by\\nediting %s files. If no argument is "
+"given, abs\\nwill synchronize from supfiles specified in %s.\\n\\n"
+msgstr ""
+"abs sincronizzerà in %s gli script di build dal repository CVS\\n. Potete "
+"seguire diversi repository\\neditando i file %s. Se non viene passato nessun "
+"argomento, abs\\nutilizzerà i supfiles specificati in %s.\\n\\n"
+
+#: scripts/abs.sh.in:79
+msgid "Report bugs to <%s>."
+msgstr "Inviare i bug a <%s>."
+
+#: scripts/abs.sh.in:84 scripts/gensync.sh.in:54 scripts/makepkg.sh.in:1088
+#: scripts/pacman-optimize.sh.in:59 scripts/repo-remove.sh.in:66
+msgid ""
+"Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+"Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+
+#: scripts/abs.sh.in:130 scripts/pacman-optimize.sh.in:100
+msgid "%s does not exist or is not a directory."
+msgstr "%s non esiste o non è una directory."
+
+#: scripts/abs.sh.in:133
+msgid "You do not have write permissions in %s."
+msgstr "Non si dispone dei permessi necessari in %s."
+
+#: scripts/abs.sh.in:143
+msgid "Missing CVS synchronization utility. Install csup or cvsup."
+msgstr "Manca l'utility di sincronizzazione CVS. Installare csup."
+
+#: scripts/abs.sh.in:166
+msgid "Updating %s..."
+msgstr "Aggiornamento di %s in corso..."
+
+#: scripts/gensync.sh.in:34
+msgid "Usage: %s <root> <destfile> [package_directory]"
+msgstr "Uso: %s <root> <destfile> [directory_pacchetto]"
+
+#: scripts/gensync.sh.in:35
+msgid ""
+"gensync will generate a sync database by reading all PKGBUILD files\\nfrom "
+"<root>. gensync builds the database in a temporary directory\\nand then "
+"compresses it to <destfile>.\\n\\n"
+msgstr ""
+"gensync genererà un database leggendo tutti i file PKGBUILD\\nda <root>. "
+"gensync crea il database in una directory temporanea\\ne quindi lo comprime "
+"in <destfile>.\\n\\n"
+
+#: scripts/gensync.sh.in:39
+msgid ""
+"gensync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+"gensync calcolerà la somma MD5 dei pacchetti presenti nella stessa directory "
+"come\\n<destfile>, se non sarà specificata una [directory_pacchetto] "
+"alternativa.\\n\\n"
+
+#: scripts/gensync.sh.in:42
+msgid ""
+"note: The <destfile> name is important. It must be of the form\\n "
+"{treename}.db.tar.gz where {treename} is the name of the custom\\n "
+"package repository you configured in /etc/pacman.conf. The\\n generated "
+"database must reside in the same directory as your\\n custom packages "
+"(also configured in /etc/pacman.conf)\\n\\n"
+msgstr ""
+"nota: il nome <destfile> è importante. Deve assumere la forma\\n "
+"{treename}.db.tar.gz, dove {treename} è il nome del repository\\n "
+"personale configurato in /etc/pacman.conf. Il database\\n generato deve "
+"risiedere nella stessa directory come i vostri\\n pacchetti personali "
+"(configurato anche in /etc/pacman.conf)\\n\\n"
+
+#: scripts/gensync.sh.in:48
+msgid "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
+msgstr "Esempio: gensync /var/abs/local /home/mypkg/custom.db.tar.gz"
+
+#: scripts/gensync.sh.in:102 scripts/updatesync.sh.in:101
+msgid "%s not found. Can not continue."
+msgstr "%s non è stato trovato. Impossibile continuare."
+
+#: scripts/gensync.sh.in:120
+msgid "invalid root dir: %s"
+msgstr "Directory radice non valida: %s"
+
+#: scripts/gensync.sh.in:122
+msgid "gensync: building database entries, generating md5sums..."
+msgstr ""
+"gensync: creazione del database, generazione della somma MD5 in corso..."
+
+#: scripts/gensync.sh.in:131
+msgid "failed to parse parse %s"
+msgstr "impossibile analizzare %s"
+
+#: scripts/gensync.sh.in:142
+msgid "could not find %s-%s-%s-%s.%s - skipping"
+msgstr "impossibile trovare %s-%s-%s-%s.%s - ignorato"
+
+#: scripts/gensync.sh.in:152
+msgid "creating repo DB..."
+msgstr "creazione del database del repo in corso..."
+
+#: scripts/makepkg.sh.in:101 scripts/makepkg.sh.in:103
+#: scripts/repo-add.sh.in:45 scripts/repo-remove.sh.in:45
+msgid "WARNING:"
+msgstr "ATTENZIONE:"
+
+#: scripts/makepkg.sh.in:143
+msgid "Cleaning up..."
+msgstr "Pulizia in corso..."
+
+#: scripts/makepkg.sh.in:193
+msgid ""
+"Options beginning with 'no' will be deprecated in the next version of "
+"makepkg!"
+msgstr ""
+"Le opzioni che iniziano per 'no' saranno deprecate nella prossima versione "
+"di makepkg!"
+
+#: scripts/makepkg.sh.in:194
+msgid "Please replace 'no' with '!': %s -> %s."
+msgstr "Si prega di sostituire 'no' con '!': %s -> %s."
+
+#: scripts/makepkg.sh.in:198
+msgid "Option 'keepdocs' may not work as intended. Please replace with 'docs'."
+msgstr ""
+"L'opzione 'keepdocs' potrebbe non funzionare correttamente. Sostituirla con "
+"'docs'."
+
+#: scripts/makepkg.sh.in:286
+msgid "There is no agent set up to handle %s URLs. Check %s."
+msgstr ""
+"Non sono stati impostati agenti per gestire gli URL di %s. Controllare %s."
+
+#: scripts/makepkg.sh.in:287 scripts/makepkg.sh.in:296
+#: scripts/makepkg.sh.in:448 scripts/makepkg.sh.in:476
+#: scripts/makepkg.sh.in:522 scripts/makepkg.sh.in:610
+#: scripts/makepkg.sh.in:638 scripts/makepkg.sh.in:700
+#: scripts/makepkg.sh.in:767 scripts/makepkg.sh.in:1105
+#: scripts/makepkg.sh.in:1415 scripts/makepkg.sh.in:1419
+msgid "Aborting..."
+msgstr "L'operazione sta per essere interrotta..."
+
+#: scripts/makepkg.sh.in:295
+msgid "The download program %s is not installed."
+msgstr "Il programma %s per il download non è installato."
+
+#: scripts/makepkg.sh.in:311
+msgid "Pacman returned a fatal error (%i): %s"
+msgstr "Pacman ha ritornato un errore fatale (%i): %s"
+
+#: scripts/makepkg.sh.in:335
+msgid "Installing missing dependencies..."
+msgstr "Installazione delle dipendenze mancanti in corso..."
+
+#: scripts/makepkg.sh.in:345
+msgid "Pacman failed to install missing dependencies."
+msgstr "Pacman non è riuscito ad installare le dipendenze mancanti."
+
+#: scripts/makepkg.sh.in:349
+msgid "Building missing dependencies..."
+msgstr "Compilazione delle dipendenze mancanti in corso..."
+
+#: scripts/makepkg.sh.in:354
+msgid "Source root cannot be found - please make sure it is specified in %s."
+msgstr ""
+"Impossibile trovare la root dei sorgenti, assicuratevi che sia specificata "
+"in %s."
+
+#: scripts/makepkg.sh.in:362
+msgid "Could not find '%s' under %s"
+msgstr "Impossibile trovare '%s' sotto %s"
+
+#: scripts/makepkg.sh.in:378
+msgid "Failed to build '%s'"
+msgstr "Impossibile compilare '%s'"
+
+#: scripts/makepkg.sh.in:411
+msgid "Failed to install all missing dependencies."
+msgstr "Impossibile installare tutte le dipendenze mancanti."
+
+#: scripts/makepkg.sh.in:414
+msgid "Missing Dependencies:"
+msgstr "Dipendenze mancanti:"
+
+#: scripts/makepkg.sh.in:444
+msgid "Retrieving Sources..."
+msgstr "Recupero dei sorgenti..."
+
+#: scripts/makepkg.sh.in:447
+msgid "You do not have write permission to store downloads in %s."
+msgstr "Non si dispone dei permessi in scrittura per salvare i download in %s."
+
+#: scripts/makepkg.sh.in:458
+msgid "Found %s in build dir"
+msgstr "Trovato %s nella directory di build"
+
+#: scripts/makepkg.sh.in:462
+msgid "Using cached copy of %s"
+msgstr "Utilizzata la copia contenuta nella cache di %s"
+
+#: scripts/makepkg.sh.in:470
+msgid "Downloading %s..."
+msgstr "Scaricamento di %s in corso..."
+
+#: scripts/makepkg.sh.in:475
+msgid "Failure while downloading %s"
+msgstr "Impossibile scaricare %s"
+
+#: scripts/makepkg.sh.in:486
+msgid "Generating checksums for source files..."
+msgstr "Generazione del checksum dei sorgenti in corso..."
+
+#: scripts/makepkg.sh.in:495
+msgid "Invalid integrity algorithm '%s' specified."
+msgstr "L'algoritmo dell'integrità di '%s' specificato non è valido."
+
+#: scripts/makepkg.sh.in:500 scripts/makepkg.sh.in:552
+msgid "Cannot find the '%s' program."
+msgstr "Impossibile trovare il programma '%s'."
+
+#: scripts/makepkg.sh.in:521
+msgid "Unable to find source file %s to generate checksum."
+msgstr ""
+"Impossibile trovare il file sorgente di %s per generare la somma di "
+"controllo."
+
+#: scripts/makepkg.sh.in:547
+msgid "Invalid integrity algorithm '%s' specified"
+msgstr "L'algoritmo dell'integrità di '%s' specificato non è valido"
+
+#: scripts/makepkg.sh.in:558
+msgid "Validating source files with %s..."
+msgstr "Validazione dei file sorgenti con %s in corso..."
+
+#: scripts/makepkg.sh.in:568
+msgid "NOT FOUND"
+msgstr "NON TROVATO"
+
+#: scripts/makepkg.sh.in:577
+msgid "Passed"
+msgstr "Verificato"
+
+#: scripts/makepkg.sh.in:579
+msgid "FAILED"
+msgstr "FALLITO"
+
+#: scripts/makepkg.sh.in:587
+msgid "One or more files did not pass the validity check!"
+msgstr "Uno o più file non hanno superato il controllo di validità!"
+
+#: scripts/makepkg.sh.in:591
+msgid "Integrity checks (%s) are missing or incomplete."
+msgstr "I controlli dell'integrità (%s) mancano o sono incompleti."
+
+#: scripts/makepkg.sh.in:597
+msgid "Extracting Sources..."
+msgstr "Estrazione dei sorgenti in corso..."
+
+#: scripts/makepkg.sh.in:609
+msgid "Unable to find source file %s for extraction."
+msgstr "Impossibile trovare i sorgenti di %s per estrarli."
+
+#: scripts/makepkg.sh.in:637
+msgid "Failed to extract %s"
+msgstr "Impossibile estrarre %s"
+
+#: scripts/makepkg.sh.in:669
+msgid "Starting build()..."
+msgstr "Avvio di build() in corso..."
+
+#: scripts/makepkg.sh.in:699
+msgid "Build Failed."
+msgstr "Compilazione interrotta."
+
+#: scripts/makepkg.sh.in:708
+msgid "Tidying install..."
+msgstr "Rimozione dei dati superflui in corso..."
+
+#: scripts/makepkg.sh.in:711
+msgid "Removing info/doc files..."
+msgstr "Rimozione dei file info/doc in corso..."
+
+#: scripts/makepkg.sh.in:717
+msgid "Moving usr/share/man files to usr/man..."
+msgstr ""
+"Spostamento dei file presenti in /usr/share/man verso /usr/man in corso..."
+
+#: scripts/makepkg.sh.in:724
+msgid "Compressing man pages..."
+msgstr "Compressione delle pagine man in corso..."
+
+#: scripts/makepkg.sh.in:742
+msgid "Stripping debugging symbols from binaries and libraries..."
+msgstr "Rimozione dei simboli di debug dai binari e dalle librerie in corso..."
+
+#: scripts/makepkg.sh.in:754
+msgid "Removing libtool .la files..."
+msgstr "Rimozione dei file di libtool .la in corso..."
+
+#: scripts/makepkg.sh.in:759
+msgid "Removing empty directories..."
+msgstr "Rimozione delle directory vuote in corso..."
+
+#: scripts/makepkg.sh.in:766
+msgid "Missing pkg/ directory."
+msgstr "Manca la directory pkg/."
+
+#: scripts/makepkg.sh.in:772
+msgid "Creating package..."
+msgstr "Creazione del pacchetto in corso..."
+
+#: scripts/makepkg.sh.in:782
+msgid "Generating .FILELIST file..."
+msgstr "Generazione del file .FILELIST in corso..."
+
+#: scripts/makepkg.sh.in:792
+msgid "Generating .PKGINFO file..."
+msgstr "Generazione del file .PKGINFO in corso..."
+
+#: scripts/makepkg.sh.in:838
+msgid "Please add a license line to your %s!"
+msgstr "Si prega di aggiungere il campo license al vostro %s!"
+
+#: scripts/makepkg.sh.in:839
+msgid "Example for GPL'ed software: license=('GPL')."
+msgstr "Esempio di software GPL: license=('GPL')."
+
+#: scripts/makepkg.sh.in:847 scripts/makepkg.sh.in:942
+msgid "Adding install script..."
+msgstr "Aggiunta dello script install in corso..."
+
+#: scripts/makepkg.sh.in:854
+msgid "Adding package changelog..."
+msgstr "Aggiunta del changelog del pacchetto in corso..."
+
+#: scripts/makepkg.sh.in:860
+msgid "Compressing package..."
+msgstr "Compressione del pacchetto in corso..."
+
+#: scripts/makepkg.sh.in:865
+msgid "Failed to create package file."
+msgstr "Impossibile creare il pacchetto."
+
+#: scripts/makepkg.sh.in:874
+msgid "Cannot find the xdelta binary! Is xdelta installed?"
+msgstr "Impossibile trovare il binario di xdelta! xdelta è installato?"
+
+#: scripts/makepkg.sh.in:904
+msgid "Making delta from version %s..."
+msgstr "Creazione di delta dalla versione %s in corso..."
+
+#: scripts/makepkg.sh.in:918
+msgid "Recreating package tarball from delta to match md5 signatures"
+msgstr "Ricreazione del pacchetto dal delta che corrisponda alla firma md5"
+
+#: scripts/makepkg.sh.in:919
+msgid "NOTE: the delta should ONLY be distributed with this tarball"
+msgstr "NOTA: il delta dovrebbe essere solo distribuito con questo archivio"
+
+#: scripts/makepkg.sh.in:923
+msgid "Could not generate the package from the delta."
+msgstr "Impossibile generare il pacchetto dal delta."
+
+#: scripts/makepkg.sh.in:927
+msgid "Delta was not able to be created."
+msgstr "Impossibile creare il delta."
+
+#: scripts/makepkg.sh.in:930
+msgid "No previous version found, skipping xdelta."
+msgstr "Impossibile trovare una versione precedente, delta ignorato."
+
+#: scripts/makepkg.sh.in:936
+msgid "Creating source package..."
+msgstr "Creazione del pacchetto in corso..."
+
+#: scripts/makepkg.sh.in:938 scripts/makepkg.sh.in:950
+#: scripts/makepkg.sh.in:957
+msgid "Adding %s..."
+msgstr "Aggiunta di %s in corso..."
+
+#: scripts/makepkg.sh.in:945
+msgid "Install script %s not found."
+msgstr "Impossibile trovare lo script install."
+
+#: scripts/makepkg.sh.in:965
+msgid "Compressing source package..."
+msgstr "Compressione del pacchetto in corso..."
+
+#: scripts/makepkg.sh.in:967
+msgid "Failed to create source package file."
+msgstr "Impossibile creare il pacchetto."
+
+#: scripts/makepkg.sh.in:975
+msgid "Installing package with pacman -U..."
+msgstr "Installazione del pacchetto con pacman -U in corso..."
+
+#: scripts/makepkg.sh.in:992
+msgid "Determining latest darcs revision..."
+msgstr "Determinazione dell'ultima revisione darcs in corso..."
+
+#: scripts/makepkg.sh.in:995
+msgid "Determining latest cvs revision..."
+msgstr "Determinazione dell'ultima revisione cvs in corso..."
+
+#: scripts/makepkg.sh.in:998
+msgid "Determining latest git revision..."
+msgstr "Determinazione dell'ultima revisione git in corso..."
+
+#: scripts/makepkg.sh.in:1001
+msgid "Determining latest svn revision..."
+msgstr "Determinazione dell'ultima revisione svn in corso..."
+
+#: scripts/makepkg.sh.in:1004
+msgid "Determining latest bzr revision..."
+msgstr "Determinazione dell'ultima revisione bzr in corso..."
+
+#: scripts/makepkg.sh.in:1007
+msgid "Determining latest hg revision..."
+msgstr "Determinazione dell'ultima revisione hg in corso..."
+
+#: scripts/makepkg.sh.in:1022
+msgid "Version found: %s"
+msgstr "Versione trovata: %s"
+
+#: scripts/makepkg.sh.in:1053
+msgid "Usage: %s [options]"
+msgstr "uso: %s [opzioni]"
+
+#: scripts/makepkg.sh.in:1056
+msgid " -A, --ignorearch Ignore incomplete arch field in %s"
+msgstr " -A, --ignorearch Ignora il campo incompleto arch in %s"
+
+#: scripts/makepkg.sh.in:1057
+msgid " -b, --builddeps Build missing dependencies from source"
+msgstr " -b, --builddeps Compilazione delle dipendenze mancanti dai sorgenti"
+
+#: scripts/makepkg.sh.in:1058
+msgid " -c, --clean Clean up work files after build"
+msgstr " -c, --clean Ripulisce i sorgenti dopo la compilazione"
+
+#: scripts/makepkg.sh.in:1059
+msgid " -C, --cleancache Clean up source files from the cache"
+msgstr " -C, --cleancache Elimina i sorgenti dalla cache"
+
+#: scripts/makepkg.sh.in:1060
+msgid " -d, --nodeps Skip all dependency checks"
+msgstr " -d, --nodeps Ignora i controlli tutte sulle dipendenze"
+
+#: scripts/makepkg.sh.in:1061
+msgid " -e, --noextract Do not extract source files (use existing src/ dir)"
+msgstr " -e, --noextract Non estrae i sorgenti (usa l'esistente dir src/)"
+
+#: scripts/makepkg.sh.in:1062
+msgid " -f, --force Overwrite existing package"
+msgstr " -f, --force Sovrascrive i pacchetti esistenti"
+
+#: scripts/makepkg.sh.in:1063
+msgid " -g, --geninteg Generate integrity checks for source files"
+msgstr " -g, --geninteg Genera i controlli dell'integrità dei sorgenti"
+
+#: scripts/makepkg.sh.in:1064
+msgid " -h, --help This help"
+msgstr " -h, --help Questo help"
+
+#: scripts/makepkg.sh.in:1065
+msgid " -i, --install Install package after successful build"
+msgstr " -i, --install Installa il pacchetto dopo la compilazione"
+
+#: scripts/makepkg.sh.in:1066
+msgid " -L, --log Log package build process"
+msgstr " -L, --log Visualizza il log della compilazione"
+
+#: scripts/makepkg.sh.in:1067
+msgid " -m, --nocolor Disable colorized output messages"
+msgstr " -m, --nocolor Disabilita l'output dei messaggi colorati"
+
+#: scripts/makepkg.sh.in:1068
+msgid " -o, --nobuild Download and extract files only"
+msgstr " -o, --nobuild Scarica ed estrae solo i file"
+
+#: scripts/makepkg.sh.in:1069
+msgid " -p <buildscript> Use an alternate build script (instead of '%s')"
+msgstr ""
+" -p <buildscript> Usa uno script di build alternativo (invece di '%s')"
+
+#: scripts/makepkg.sh.in:1070
+msgid ""
+" -r, --rmdeps Remove installed dependencies after a successful build"
+msgstr ""
+" -r, --rmdeps Rimuove le dipendenze installate dopo la compilazione"
+
+#: scripts/makepkg.sh.in:1072
+msgid " -R, --repackage Repackage contents of pkg/ without building"
+msgstr " -R, --repackage Ricrea il pacchetto in pkg/ senza compilarlo"
+
+#: scripts/makepkg.sh.in:1073
+msgid " -s, --syncdeps Install missing dependencies with pacman"
+msgstr " -s, --syncdeps Installa le dipendenze mancanti con pacman"
+
+#: scripts/makepkg.sh.in:1074
+msgid " --asroot Allow makepkg to run as root user"
+msgstr " --asroot Consente a makepkg di avviarsi da root"
+
+#: scripts/makepkg.sh.in:1075
+msgid " --source Do not build package; generate a source-only tarball"
+msgstr " --source Non compila il pacchetto, genera solo un archivio"
+
+#: scripts/makepkg.sh.in:1077
+msgid "These options can be passed to pacman:"
+msgstr "Queste opzioni possono essere passate a pacman:"
+
+#: scripts/makepkg.sh.in:1079
+msgid ""
+" --noconfirm Do not ask for confirmation when resolving "
+"dependencies"
+msgstr ""
+" --noconfirm Non chiede alcuna conferma durante la risoluzione "
+"delle dipendenze"
+
+#: scripts/makepkg.sh.in:1080
+msgid ""
+" --noprogressbar Do not show a progress bar when downloading files"
+msgstr ""
+" --noprogressbar Non mostra la barra di avanzamento durante il "
+"download dei file"
+
+#: scripts/makepkg.sh.in:1082
+msgid "If -p is not specified, makepkg will look for '%s'"
+msgstr "Se -p non è stato specificato, makepkg utilizzerà '%s'"
+
+#: scripts/makepkg.sh.in:1104
+msgid "%s not found."
+msgstr "Impossibile trovare %s."
+
+#: scripts/makepkg.sh.in:1177
+msgid "Sudo is used by default now. The --usesudo option is deprecated!"
+msgstr "Adesso sudo è usato di default. L'opzione --usesudo è deprecata!"
+
+#: scripts/makepkg.sh.in:1192
+msgid "Cleaning up ALL files from %s."
+msgstr "Pulizia di tutti i file da %s in corso."
+
+#: scripts/makepkg.sh.in:1193
+msgid " Are you sure you wish to do this? [Y/n] "
+msgstr " Siete proprio sicuri di volerlo fare? [S/n] "
+
+#: scripts/makepkg.sh.in:1199
+msgid "Problem removing files; you may not have correct permissions in %s"
+msgstr ""
+"Si è verificato un problema durante la rimozione dei file; forse non si "
+"dispone dei permessi necessari in %s"
+
+#: scripts/makepkg.sh.in:1203
+msgid "Source cache cleaned."
+msgstr "La cache del sorgente è stata pulita."
+
+#: scripts/makepkg.sh.in:1208
+msgid "No files have been removed."
+msgstr "Non è stato rimosso nessun file."
+
+#: scripts/makepkg.sh.in:1213
+msgid "Source destination must be defined in makepkg.conf."
+msgstr "La destinazione del sorgente deve essere definita in makepkg.conf."
+
+#: scripts/makepkg.sh.in:1214
+msgid "In addition, please run makepkg -C outside of your cache directory."
+msgstr ""
+"Inoltre, si prega di avviare makepkg -C all'esterno della vostra directory "
+"di cache."
+
+#: scripts/makepkg.sh.in:1220
+msgid "BUILDSCRIPT is undefined! Ensure you have updated %s."
+msgstr "BUILDSCRIPT non è definito! Assicurarsi di aver aggiornato %s."
+
+#: scripts/makepkg.sh.in:1227
+msgid "Running makepkg as root is a BAD idea and can cause"
+msgstr "Avviare makepkg da root è una CATTIVA idea e può causare"
+
+#: scripts/makepkg.sh.in:1228
+msgid "permanent, catastrophic damage to your system. If you"
+msgstr "danni permanenti e catastrofici al vostro sistema. Se"
+
+#: scripts/makepkg.sh.in:1229
+msgid "wish to run as root, please use the --asroot option."
+msgstr "volete avviarlo da root, usate l'opzione --asroot."
+
+#: scripts/makepkg.sh.in:1233
+msgid "The --asroot option is meant for the root user only."
+msgstr "L'opzione --asroot è riservata solo all'utente root."
+
+#: scripts/makepkg.sh.in:1234
+msgid "Please rerun makepkg without the --asroot flag."
+msgstr "Si prega di riavviare makepkg senza il flag --asroot."
+
+#: scripts/makepkg.sh.in:1238
+msgid "Fakeroot must be installed if using the 'fakeroot' option"
+msgstr "Per usare l'opzione 'fakeroot' nell'array BUILDENV in %s"
+
+#: scripts/makepkg.sh.in:1239
+msgid "in the BUILDENV array in %s."
+msgstr "è indispensabile installare fakeroot."
+
+#: scripts/makepkg.sh.in:1243
+msgid "Running makepkg as an unprivileged user will result in non-root"
+msgstr "Avviando makepkg con un utente senza privilegi i file risulteranno"
+
+#: scripts/makepkg.sh.in:1244
+msgid "ownership of the packaged files. Try using the fakeroot environment by"
+msgstr ""
+"di proprietà del pacchettizzatore. Provare usando l'ambiente di fakeroot"
+
+#: scripts/makepkg.sh.in:1245
+msgid "placing 'fakeroot' in the BUILDENV array in makepkg.conf."
+msgstr "posizionando 'fakeroot' nell'array BUILDENV in makepkg.conf."
+
+#: scripts/makepkg.sh.in:1250
+msgid "Do not use the '-F' option. This option is only for use by makepkg."
+msgstr "Non usare l'opzione '-F'. Questa opzione si usa solo con makepkg."
+
+#: scripts/makepkg.sh.in:1259
+msgid "Cannot find the sudo binary! Is sudo installed?"
+msgstr "Impossibile trovare il binario di sudo! sudo è installato?"
+
+#: scripts/makepkg.sh.in:1260
+msgid "Missing dependencies cannot be installed or removed as a normal user"
+msgstr ""
+"Le dipendenze mancanti non possono essere installate o rimosse da utente "
+"normale"
+
+#: scripts/makepkg.sh.in:1261
+msgid "without sudo; install and configure sudo to auto-resolve dependencies."
+msgstr ""
+"senza sudo; installare e configurare sudo per risolvere automaticamente le "
+"dipendenze."
+
+#: scripts/makepkg.sh.in:1271
+msgid "%s does not exist."
+msgstr "%s non esiste."
+
+#: scripts/makepkg.sh.in:1286 scripts/makepkg.sh.in:1290
+msgid "%s is not allowed to be empty."
+msgstr "%s non può essere vuoto."
+
+#: scripts/makepkg.sh.in:1294 scripts/makepkg.sh.in:1298
+msgid "%s is not allowed to contain hyphens."
+msgstr "%s non può contenere dei trattini."
+
+#: scripts/makepkg.sh.in:1308 scripts/makepkg.sh.in:1313
+msgid "%s is not available for the '%s' architecture."
+msgstr "%s non è disponibile per l'architettura '%s'."
+
+#: scripts/makepkg.sh.in:1309 scripts/makepkg.sh.in:1314
+msgid "Note that many packages may need a line added to their %s"
+msgstr ""
+"Notare che molti pacchetti possono aver bisogno di una linea aggiunta al "
+"loro %s"
+
+#: scripts/makepkg.sh.in:1310 scripts/makepkg.sh.in:1315
+msgid "such as arch=('%s')."
+msgstr "come ad esempio arch=('%s')."
+
+#: scripts/makepkg.sh.in:1320
+msgid "Install scriptlet (%s) does not exist."
+msgstr "Lo script install (%s) non esiste."
+
+#: scripts/makepkg.sh.in:1330
+msgid "A package has already been built, installing existing package..."
+msgstr ""
+"Già è stato creato un pacchetto,installazione del pacchetto esistente in "
+"corso..."
+
+#: scripts/makepkg.sh.in:1334 scripts/makepkg.sh.in:1366
+msgid "A package has already been built. (use -f to overwrite)"
+msgstr "Già è stato creato un pacchetto. (usare -f per sovrascrivere)"
+
+#: scripts/makepkg.sh.in:1343 scripts/makepkg.sh.in:1442
+msgid "Skipping build."
+msgstr "Compilazione ignorata."
+
+#: scripts/makepkg.sh.in:1352
+msgid "Leaving fakeroot environment."
+msgstr "Uscita dall'ambiente di fakeroot."
+
+#: scripts/makepkg.sh.in:1356
+msgid "Making package: %s"
+msgstr "Creazione del pacchetto: %s"
+
+#: scripts/makepkg.sh.in:1359
+msgid "Running makepkg as root..."
+msgstr "Avvio di makepkg da root in corso..."
+
+#: scripts/makepkg.sh.in:1370
+msgid "Source package created: %s"
+msgstr "Il pacchetto è stato creato: %s"
+
+#: scripts/makepkg.sh.in:1377
+msgid "Skipping dependency checks."
+msgstr "Controllo delle dipendenze ignorato."
+
+#: scripts/makepkg.sh.in:1384
+msgid "Checking Runtime Dependencies..."
+msgstr "Controllo delle dipendenze in corso..."
+
+#: scripts/makepkg.sh.in:1387
+msgid "Checking Buildtime Dependencies..."
+msgstr "Controllo delle dipendenze in corso... "
+
+#: scripts/makepkg.sh.in:1391
+msgid "Could not resolve all dependencies."
+msgstr "Impossibile risolvere tutte le dipendenze."
+
+#: scripts/makepkg.sh.in:1395
+msgid "pacman was not found in PATH; skipping dependency checks."
+msgstr ""
+"pacman non è stato trovato nel PATH; controllo delle dipendenze ignorato."
+
+#: scripts/makepkg.sh.in:1409
+msgid "Skipping source retrieval -- using existing src/ tree"
+msgstr ""
+"Recupero dei sorgenti ignorato utilizzo la directory esistente src/"
+
+#: scripts/makepkg.sh.in:1410
+msgid "Skipping source integrity checks -- using existing src/ tree"
+msgstr ""
+"Controllo dell'integrità dei sorgenti ignorato -- utilizzo la directory "
+"esistente src/"
+
+#: scripts/makepkg.sh.in:1411
+msgid "Skipping source extraction -- using existing src/ tree"
+msgstr ""
+"Estrazione dei sorgenti ignorata -- utilizzo la directory esistente "
+"src/"
+
+#: scripts/makepkg.sh.in:1414
+msgid "The source directory is empty, there is nothing to build!"
+msgstr "La directory dei sorgenti è vuota, non c'è nulla da compilare!"
+
+#: scripts/makepkg.sh.in:1418
+msgid "The package directory is empty, there is nothing to repackage!"
+msgstr "La directory del pacchetto è vuota, non c'è nulla ripacchettizzare!"
+
+#: scripts/makepkg.sh.in:1429
+msgid "Sources are ready."
+msgstr "I sorgenti sono pronti."
+
+#: scripts/makepkg.sh.in:1434
+msgid "Removing existing pkg/ directory..."
+msgstr "Rimozione dell'esistente directory pkg/ in corso..."
+
+#: scripts/makepkg.sh.in:1451
+msgid "Entering fakeroot environment..."
+msgstr "Entrata nell'ambiente di fakeroot in corso..."
+
+#: scripts/makepkg.sh.in:1464
+msgid "Finished making: %s"
+msgstr "Compilazione terminata: %s"
+
+#: scripts/pacman-optimize.sh.in:44
+msgid "Usage: %s [pacman_db_root]"
+msgstr "Uso: %s [pacman_db_root]"
+
+#: scripts/pacman-optimize.sh.in:45
+msgid ""
+"pacman-optimize is a little hack that should improve the performance\\nof "
+"pacman when reading/writing to its filesystem-based database.\\n\\n"
+msgstr ""
+"pacman-optimize è un piccolo hack che dovrebbe migliorare la prestazione"
+"\\ndipacman durante la lettura/scrittura del suo database.\\n\\n"
+
+#: scripts/pacman-optimize.sh.in:48
+msgid ""
+"Because pacman uses many small files to keep track of packages,\\nthere is a "
+"tendency for these files to become fragmented over time.\\nThis script "
+"attempts to relocate these small files into one\\ncontinuous location on "
+"your hard drive. The result is that the hard\\ndrive should be able to read "
+"them faster, since the hard drive head\\ndoes not have to move around the "
+"disk as much.\\n"
+msgstr ""
+"Poiché pacman utilizza molti file piccoli per tenere traccia dei pacchetti,"
+"\\c'è una tendenza per questi file a frammentarsi col tempo.\\nQuesto script "
+"prova a sistemare questi file piccoli all'interno di una\\n locazione "
+"continua sul vostro disco rigido. Il risultato è che il disco\\nrigido "
+"dovrebbe essere in grado di leggerli più velocemente, in quanto la testina"
+"\\nnon deve spostarsi continuamente sul disco.\\n"
+
+#: scripts/pacman-optimize.sh.in:91
+msgid "diff tool was not found, please install diffutils."
+msgstr ""
+"impossibile trovare lo strumento diff, si prega di installare diffutils."
+
+#: scripts/pacman-optimize.sh.in:96
+msgid "Pacman lock file was found. Cannot run while pacman is running."
+msgstr ""
+"Il file lock di pacman è stato trovato. Impossibile avviare di nuovo pacman "
+"mentre è ancora in funzione."
+
+#: scripts/pacman-optimize.sh.in:104
+msgid "You must have correct permissions to optimize the database."
+msgstr "Bisogna avere i giusti permessi per ottimizzare il database."
+
+#: scripts/pacman-optimize.sh.in:108
+msgid "ERROR: Can not create temp directory for database building."
+msgstr ""
+"ERRORE: impossibile creare la directory temporanea per creare il database."
+
+#: scripts/pacman-optimize.sh.in:114
+msgid "MD5sum'ing the old database..."
+msgstr "Calcolo della somma MD5 del vecchio database in corso..."
+
+#: scripts/pacman-optimize.sh.in:118
+msgid "Tar'ing up %s..."
+msgstr "Compressione di %s in corso..."
+
+#: scripts/pacman-optimize.sh.in:123
+msgid "Tar'ing up %s failed."
+msgstr "Impossibile comprimere %s."
+
+#: scripts/pacman-optimize.sh.in:127
+msgid "Making and MD5sum'ing the new db..."
+msgstr "Creazione del nuovo database e calcolo della somma MD5 in corso..."
+
+#: scripts/pacman-optimize.sh.in:132
+msgid "Untar'ing %s failed."
+msgstr "Impossibile decomprimere %s."
+
+#: scripts/pacman-optimize.sh.in:138
+msgid "Checking integrity..."
+msgstr "Controllo dell'integrità in corso..."
+
+#: scripts/pacman-optimize.sh.in:144
+msgid "Integrity check FAILED, reverting to old database."
+msgstr ""
+"Impossibile effettuare il controllo dell'integrità, ritorno al vecchio "
+"database."
+
+#: scripts/pacman-optimize.sh.in:149
+msgid "Putting the new database in place..."
+msgstr "Inserimento del nuovo database in corso..."
+
+#: scripts/pacman-optimize.sh.in:158
+msgid "Finished. Your pacman database has been optimized."
+msgstr "Terminato. Il database del vostro pacman è stato ottimizzato."
+
+#: scripts/pacman-optimize.sh.in:159
+msgid "For full benefits of pacman-optimize, run 'sync' now."
+msgstr ""
+
+#: scripts/repo-add.sh.in:56
+msgid "Usage: %s <path-to-db> [--force] <package> ...\\n\\n"
+msgstr "Uso: %s <path-al-db> [--force] <pacchetto> ...\\n\\n"
+
+#: scripts/repo-add.sh.in:57
+msgid ""
+"repo-add will update a package database by reading a package file."
+"\\nMultiple packages to add can be specified on the command line.\\n\\n"
+msgstr ""
+"repo-add aggiornerà un database dei pacchetti leggendo un file del pacchetto."
+"\\nL'aggiunta di pacchetti multipli può essere specificata dalla linea di "
+"comando.\\n\\n"
+
+#: scripts/repo-add.sh.in:60
+msgid ""
+"The --force flag will add a 'force' entry to the sync database, which"
+"\\ntells pacman to skip its internal version number checking and update"
+"\\nthe package regardless.\\n\\n"
+msgstr ""
+"Il flag --force aggiungerà un voce 'force' al database, che\\ndirà a pacman "
+"di ignorare i numeri di versione interni controllando e\\naggiornando "
+"indipendentemente il pacchetto.\\n\\n"
+
+#: scripts/repo-add.sh.in:64
+msgid "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
+msgstr "Esempio: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
+
+#: scripts/repo-add.sh.in:69
+msgid ""
+"Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+"Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+
+#: scripts/repo-add.sh.in:173
+msgid "Invalid package file '%s'."
+msgstr "Il file '%s' del pacchetto non è valido."
+
+#: scripts/repo-add.sh.in:182 scripts/repo-remove.sh.in:91
+msgid "Removing existing package '%s'..."
+msgstr "Rimozione del pacchetto esistente '%s' in corso..."
+
+#: scripts/repo-add.sh.in:192
+msgid "Creating 'desc' db entry..."
+msgstr "Creazione della voce 'desc' del database in corso..."
+
+#: scripts/repo-add.sh.in:202
+msgid "Computing md5 checksums..."
+msgstr "Calcolo del controllo della somma md5 in corso..."
+
+#: scripts/repo-add.sh.in:214
+msgid "Creating 'depends' db entry..."
+msgstr "Creazione della voce del database 'depends' in corso..."
+
+#: scripts/repo-add.sh.in:230
+msgid "Creating 'deltas' db entry..."
+msgstr "Creazione della voce del database 'deltas' in corso..."
+
+#: scripts/repo-add.sh.in:236
+msgid "Added delta '%s'"
+msgstr "Aggiunto il delta '%s'"
+
+#: scripts/repo-add.sh.in:238
+msgid "Could not add delta '%s'"
+msgstr "Impossibile aggiungere delta '%s'"
+
+#: scripts/repo-add.sh.in:276 scripts/repo-remove.sh.in:123
+msgid "%s not found. Cannot continue."
+msgstr "%s non è stato trovato. Impossibile continuare."
+
+#: scripts/repo-add.sh.in:286 scripts/repo-remove.sh.in:133
+msgid "Cannot create temp directory for database building."
+msgstr "Impossibile creare la directory temp per creare il database."
+
+#: scripts/repo-add.sh.in:297 scripts/repo-remove.sh.in:142
+msgid "Repository file '%s' is not a proper pacman database."
+msgstr "Il file di repository '%s' non è un valido database di pacman."
+
+#: scripts/repo-add.sh.in:300 scripts/repo-remove.sh.in:145
+msgid "Extracting database to a temporary location..."
+msgstr "Estrazione del database in una locazione temporanea in corso..."
+
+#: scripts/repo-add.sh.in:306
+msgid "'%s' is not a package file, skipping"
+msgstr "'%s' non è un pacchetto, ignorato"
+
+#: scripts/repo-add.sh.in:308
+msgid "Adding package '%s'"
+msgstr "Aggiunta del pacchetto '%s'"
+
+#: scripts/repo-add.sh.in:315
+msgid "Package '%s' not found."
+msgstr "Impossibile trovare il pacchetto '%s'"
+
+#: scripts/repo-add.sh.in:322
+msgid "Creating updated database file %s"
+msgstr "Creazione di un database aggiornato di %s"
+
+#: scripts/repo-add.sh.in:332 scripts/repo-remove.sh.in:170
+msgid "No compression set."
+msgstr "Non è stata impostata nessuna compressione."
+
+#: scripts/repo-add.sh.in:340 scripts/repo-remove.sh.in:178
+msgid "No packages modified, nothing to do."
+msgstr "Non è stato modificato alcun pacchetto."
+
+#: scripts/repo-remove.sh.in:55
+msgid "repo-remove %s\\n\\n"
+msgstr "repo-remove %s\\n\\n"
+
+#: scripts/repo-remove.sh.in:56
+msgid "usage: %s <path-to-db> <packagename> ...\\n\\n"
+msgstr "uso: %s <path-al-db> <nomepacchetto> ...\\n\\n"
+
+#: scripts/repo-remove.sh.in:57
+msgid ""
+"repo-remove will update a package database by removing the package name"
+"\\nspecified on the command line from the given repo database. Multiple"
+"\\npackages to remove can be specified on the command line.\\n\\n"
+msgstr ""
+"repo-remove aggiornerà un database, rimuovendo il nome del pacchetto"
+"\\nspecificato dalla linea di comando dal database del repo dato. La"
+"\\rimozione di pacchetti multipli può essere specificata dalla linea di "
+"comando.\\n\\n"
+
+#: scripts/repo-remove.sh.in:61
+msgid "Example: repo-remove /path/to/repo.db.tar.gz kernel26"
+msgstr "Esempio: repo-remove /path/to/repo.db.tar.gz kernel26"
+
+#: scripts/repo-remove.sh.in:149
+msgid "Searching for package '%s'..."
+msgstr "Ricerca del pacchetto '%s' in corso..."
+
+#: scripts/repo-remove.sh.in:154
+msgid "Package matching '%s' not found."
+msgstr "Non è stato trovato nessun pacchetto corrispondente a '%s'."
+
+#: scripts/repo-remove.sh.in:161
+msgid "Creating updated database file '%s'..."
+msgstr "Creazione del database aggiornato '%s' in corso..."
+
+#: scripts/updatesync.sh.in:35
+msgid "Usage: %s <action> <destfile> <option> [package_directory]"
+msgstr "Uso: %s <azione> <destfile> <opzione> [directory_pacchetto]"
+
+#: scripts/updatesync.sh.in:36
+msgid ""
+"updatesync will update a sync database by reading a PKGBUILD and\\nmodifying "
+"the destfile. updatesync updates the database in a temporary\\ndirectory and "
+"then compresses it to <destfile>.\\n\\n"
+msgstr ""
+"updatesync aggiornerà un database leggendo un PKGBUILD e\\n modificando il "
+"destfile. updatesync aggiorna il database in una directory\\ntemporanea e "
+"quindi lo comprime in <destfile>.\\n\\n"
+
+#: scripts/updatesync.sh.in:40
+msgid "There are two types of actions:\\n\\n"
+msgstr "Esistono due tipi di azioni:\\n\\n"
+
+#: scripts/updatesync.sh.in:41
+msgid ""
+"upd - Will update a package's entry or create it if it doesn't exist."
+"\\n It takes the package's PKGBUILD as an option.\\n"
+msgstr ""
+"upd - Aggiornerà una voce dei pacchetti o la creerà se non esiste.\\n "
+"Esso prende il PKGBUILD del pacchetto come un'opzione.\\n"
+
+#: scripts/updatesync.sh.in:42
+msgid ""
+"del - Will remove a package's entry from the db. It takes the package's"
+"\\n name as an option.\\n"
+msgstr ""
+"del - Rimuoverà una voce del pacchetto dal database. Esso prende il\\n "
+"nome del pacchetto come un'opzione.\\n"
+
+#: scripts/updatesync.sh.in:44
+msgid ""
+"updatesync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+"updatesync calcolerà la somma md5 dei pacchetti nella stessa directory"
+"\\n<destfile>, se non sarà specificata una [directory_package] alternativa."
+"\\n\\n"
+
+#: scripts/updatesync.sh.in:47
+msgid "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
+msgstr "Esempio: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
+
+#: scripts/updatesync.sh.in:53
+msgid ""
+"Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+"Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+
+#: scripts/updatesync.sh.in:123
+msgid "%s not found"
+msgstr "%s non è stato trovato"
+
+#: scripts/updatesync.sh.in:129
+msgid "failed to parse %s"
+msgstr "impossibile analizzare %s"
+
+#: scripts/updatesync.sh.in:136
+msgid "could not find %s-%s-%s-%s.%s - aborting"
+msgstr "impossibile trovare %s-%s-%s-%s.%s"
+
+#~ msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
+#~ msgstr ""
+#~ ":: %s-%s: la versione installata è aggiornata. Aggiornare ugualmente? [S/"
+#~ "n] "
+
+#~ msgid "usage: %s {-R --remove} [options] <package>\n"
+#~ msgstr "uso: %s {-R --remove} [opzioni] <pacchetto>\n"
+
+#~ msgid "Total Package Size: %.2f MB\n"
+#~ msgstr "Dimensione totale dei pacchetti: %.2f MB\n"
diff --git a/po/pacman.pot b/po/pacman.pot
new file mode 100644
index 00000000..6a8f1572
--- /dev/null
+++ b/po/pacman.pot
@@ -0,0 +1,2039 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Judd Vinet <jvinet@zeroflux.org>
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/pacman/add.c:42 src/pacman/remove.c:44
+#, c-format
+msgid "failed to release transaction (%s)\n"
+msgstr ""
+
+#: src/pacman/add.c:79 src/pacman/query.c:372 src/pacman/remove.c:65
+#: src/pacman/sync.c:753
+msgid "no targets specified (use -h for help)\n"
+msgstr ""
+
+#: src/pacman/add.c:106 src/pacman/sync.c:508
+#, c-format
+msgid "error: %s\n"
+msgstr ""
+
+#: src/pacman/add.c:109 src/pacman/remove.c:100 src/pacman/sync.c:482
+#, c-format
+msgid ""
+" if you're sure a package manager is not already\n"
+" running, you can remove %s.\n"
+msgstr ""
+
+#: src/pacman/add.c:116 src/pacman/remove.c:108
+#, c-format
+msgid "loading package data... "
+msgstr ""
+
+#: src/pacman/add.c:120
+#, c-format
+msgid "error: failed to add target '%s' (%s)"
+msgstr ""
+
+#: src/pacman/add.c:126 src/pacman/remove.c:120 src/pacman/sync.c:174
+#: src/pacman/sync.c:192
+#, c-format
+msgid "done.\n"
+msgstr ""
+
+#: src/pacman/add.c:131 src/pacman/remove.c:124 src/pacman/sync.c:614
+#, c-format
+msgid "error: failed to prepare transaction (%s)\n"
+msgstr ""
+
+#: src/pacman/add.c:143 src/pacman/remove.c:132 src/pacman/sync.c:623
+#, c-format
+msgid ":: %s: requires %s\n"
+msgstr ""
+
+#: src/pacman/add.c:151
+#, c-format
+msgid ":: %s: conflicts with %s"
+msgstr ""
+
+#: src/pacman/add.c:160 src/pacman/sync.c:686
+#, c-format
+msgid "%s exists in both '%s' and '%s'\n"
+msgstr ""
+
+#: src/pacman/add.c:166 src/pacman/sync.c:692
+#, c-format
+msgid "%s: %s exists in filesystem\n"
+msgstr ""
+
+#: src/pacman/add.c:172
+#, c-format
+msgid ""
+"\n"
+"errors occurred, no packages were upgraded.\n"
+msgstr ""
+
+#: src/pacman/add.c:186 src/pacman/remove.c:171 src/pacman/sync.c:677
+#, c-format
+msgid "error: failed to commit transaction (%s)\n"
+msgstr ""
+
+#: src/pacman/callback.c:163
+#, c-format
+msgid "checking dependencies...\n"
+msgstr ""
+
+#: src/pacman/callback.c:167
+#, c-format
+msgid "checking for file conflicts...\n"
+msgstr ""
+
+#: src/pacman/callback.c:171
+#, c-format
+msgid "resolving dependencies...\n"
+msgstr ""
+
+#: src/pacman/callback.c:174
+#, c-format
+msgid "looking for inter-conflicts...\n"
+msgstr ""
+
+#: src/pacman/callback.c:178
+#, c-format
+msgid "installing %s...\n"
+msgstr ""
+
+#: src/pacman/callback.c:189
+#, c-format
+msgid "removing %s...\n"
+msgstr ""
+
+#: src/pacman/callback.c:200
+#, c-format
+msgid "upgrading %s...\n"
+msgstr ""
+
+#: src/pacman/callback.c:211
+#, c-format
+msgid "checking package integrity...\n"
+msgstr ""
+
+#: src/pacman/callback.c:214
+#, c-format
+msgid "checking delta integrity...\n"
+msgstr ""
+
+#: src/pacman/callback.c:217
+#, c-format
+msgid "applying deltas...\n"
+msgstr ""
+
+#: src/pacman/callback.c:220
+#, c-format
+msgid "generating %s with %s... "
+msgstr ""
+
+#: src/pacman/callback.c:223
+#, c-format
+msgid "success!\n"
+msgstr ""
+
+#: src/pacman/callback.c:226
+#, c-format
+msgid "failed.\n"
+msgstr ""
+
+#: src/pacman/callback.c:235
+#, c-format
+msgid ":: Retrieving packages from %s...\n"
+msgstr ""
+
+#: src/pacman/callback.c:263
+#, c-format
+msgid ""
+":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway? [Y/"
+"n] "
+msgstr ""
+
+#: src/pacman/callback.c:268
+#, c-format
+msgid ":: %s is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+msgstr ""
+
+#: src/pacman/callback.c:274
+#, c-format
+msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
+msgstr ""
+
+#: src/pacman/callback.c:279
+#, c-format
+msgid ":: Replace %s with %s/%s? [Y/n] "
+msgstr ""
+
+#: src/pacman/callback.c:286
+#, c-format
+msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
+msgstr ""
+
+#: src/pacman/callback.c:294
+#, c-format
+msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
+msgstr ""
+
+#: src/pacman/callback.c:304
+#, c-format
+msgid ":: File %s is corrupted. Do you want to delete it? [Y/n] "
+msgstr ""
+
+#: src/pacman/callback.c:354
+msgid "installing"
+msgstr ""
+
+#: src/pacman/callback.c:357
+msgid "upgrading"
+msgstr ""
+
+#: src/pacman/callback.c:360
+msgid "removing"
+msgstr ""
+
+#: src/pacman/callback.c:363
+msgid "checking for file conflicts"
+msgstr ""
+
+#: src/pacman/package.c:68
+msgid "Explicitly installed"
+msgstr ""
+
+#: src/pacman/package.c:71
+msgid "Installed as a dependency for another package"
+msgstr ""
+
+#: src/pacman/package.c:74
+msgid "Unknown"
+msgstr ""
+
+#: src/pacman/package.c:89
+msgid "Description : "
+msgstr ""
+
+#: src/pacman/package.c:93
+msgid "Filename :"
+msgstr ""
+
+#: src/pacman/package.c:95
+msgid "Name :"
+msgstr ""
+
+#: src/pacman/package.c:96
+msgid "Version :"
+msgstr ""
+
+#: src/pacman/package.c:97
+msgid "URL :"
+msgstr ""
+
+#: src/pacman/package.c:98
+msgid "Licenses :"
+msgstr ""
+
+#: src/pacman/package.c:99
+msgid "Groups :"
+msgstr ""
+
+#: src/pacman/package.c:100
+msgid "Provides :"
+msgstr ""
+
+#: src/pacman/package.c:101
+msgid "Depends On :"
+msgstr ""
+
+#: src/pacman/package.c:102
+msgid "Optional Deps :"
+msgstr ""
+
+#: src/pacman/package.c:105
+msgid "Required By :"
+msgstr ""
+
+#: src/pacman/package.c:108
+msgid "Conflicts With :"
+msgstr ""
+
+#: src/pacman/package.c:109
+msgid "Replaces :"
+msgstr ""
+
+#: src/pacman/package.c:111
+#, c-format
+msgid "Download Size : %6.2f K\n"
+msgstr ""
+
+#: src/pacman/package.c:115
+#, c-format
+msgid "Compressed Size: %6.2f K\n"
+msgstr ""
+
+#: src/pacman/package.c:119
+#, c-format
+msgid "Installed Size : %6.2f K\n"
+msgstr ""
+
+#: src/pacman/package.c:121
+msgid "Packager :"
+msgstr ""
+
+#: src/pacman/package.c:122
+msgid "Architecture :"
+msgstr ""
+
+#: src/pacman/package.c:123
+msgid "Build Date :"
+msgstr ""
+
+#: src/pacman/package.c:125
+msgid "Install Date :"
+msgstr ""
+
+#: src/pacman/package.c:126
+msgid "Install Reason :"
+msgstr ""
+
+#: src/pacman/package.c:129
+msgid "Install Script :"
+msgstr ""
+
+#: src/pacman/package.c:130
+msgid "Yes"
+msgstr ""
+
+#: src/pacman/package.c:130
+msgid "No"
+msgstr ""
+
+#: src/pacman/package.c:135
+msgid "MD5 Sum :"
+msgstr ""
+
+#: src/pacman/package.c:159
+msgid "Repository :"
+msgstr ""
+
+#: src/pacman/package.c:169
+#, c-format
+msgid "Backup Files:\n"
+msgstr ""
+
+#: src/pacman/package.c:189
+#, c-format
+msgid "error: could not calculate checksums for %s\n"
+msgstr ""
+
+#: src/pacman/package.c:197
+#, c-format
+msgid "MODIFIED\t%s\n"
+msgstr ""
+
+#: src/pacman/package.c:199
+#, c-format
+msgid "Not Modified\t%s\n"
+msgstr ""
+
+#: src/pacman/package.c:203
+#, c-format
+msgid "MISSING\t\t%s\n"
+msgstr ""
+
+#: src/pacman/package.c:209
+#, c-format
+msgid "(none)\n"
+msgstr ""
+
+#: src/pacman/package.c:244
+#, c-format
+msgid "error: no changelog available for '%s'.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:62
+msgid "options"
+msgstr ""
+
+#: src/pacman/pacman.c:63
+msgid "file"
+msgstr ""
+
+#: src/pacman/pacman.c:64
+msgid "package"
+msgstr ""
+
+#: src/pacman/pacman.c:65
+msgid "usage"
+msgstr ""
+
+#: src/pacman/pacman.c:66
+msgid "operation"
+msgstr ""
+
+#: src/pacman/pacman.c:78
+#, c-format
+msgid ""
+"\n"
+"use '%s --help' with other options for more syntax\n"
+msgstr ""
+
+#: src/pacman/pacman.c:83 src/pacman/pacman.c:97 src/pacman/pacman.c:119
+#, c-format
+msgid " --asdeps install packages as non-explicitly installed\n"
+msgstr ""
+
+#: src/pacman/pacman.c:84 src/pacman/pacman.c:90 src/pacman/pacman.c:98
+#: src/pacman/pacman.c:121
+#, c-format
+msgid " -d, --nodeps skip dependency checks\n"
+msgstr ""
+
+#: src/pacman/pacman.c:85 src/pacman/pacman.c:99 src/pacman/pacman.c:123
+#, c-format
+msgid " -f, --force force install, overwrite conflicting files\n"
+msgstr ""
+
+#: src/pacman/pacman.c:89
+#, c-format
+msgid ""
+" -c, --cascade remove packages and all packages that depend on them\n"
+msgstr ""
+
+#: src/pacman/pacman.c:91
+#, c-format
+msgid ""
+" -k, --dbonly only remove database entry, do not remove files\n"
+msgstr ""
+
+#: src/pacman/pacman.c:92
+#, c-format
+msgid " -n, --nosave remove configuration files as well\n"
+msgstr ""
+
+#: src/pacman/pacman.c:93
+#, c-format
+msgid ""
+" -s, --recursive remove dependencies also (that won't break packages)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:103
+#, c-format
+msgid " -c, --changelog view the changelog of a package\n"
+msgstr ""
+
+#: src/pacman/pacman.c:104
+#, c-format
+msgid " -d, --deps list all packages installed as dependencies\n"
+msgstr ""
+
+#: src/pacman/pacman.c:105
+#, c-format
+msgid " -e, --explicit list all packages explicitly installed\n"
+msgstr ""
+
+#: src/pacman/pacman.c:106 src/pacman/pacman.c:124
+#, c-format
+msgid " -g, --groups view all members of a package group\n"
+msgstr ""
+
+#: src/pacman/pacman.c:107
+#, c-format
+msgid ""
+" -i, --info view package information (-ii for backup files)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:108
+#, c-format
+msgid " -l, --list list the contents of the queried package\n"
+msgstr ""
+
+#: src/pacman/pacman.c:109
+#, c-format
+msgid ""
+" -m, --foreign list installed packages not found in sync db(s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:110
+#, c-format
+msgid " -o, --owns <file> query the package that owns <file>\n"
+msgstr ""
+
+#: src/pacman/pacman.c:111
+#, c-format
+msgid " -p, --file <package> query a package file instead of the database\n"
+msgstr ""
+
+#: src/pacman/pacman.c:112
+#, c-format
+msgid ""
+" -s, --search <regex> search locally-installed packages for matching "
+"strings\n"
+msgstr ""
+
+#: src/pacman/pacman.c:113
+#, c-format
+msgid " -t, --orphans list all packages not required by any package\n"
+msgstr ""
+
+#: src/pacman/pacman.c:114
+#, c-format
+msgid " -u, --upgrades list all packages that can be upgraded\n"
+msgstr ""
+
+#: src/pacman/pacman.c:115 src/pacman/pacman.c:136
+#, c-format
+msgid " -q --quiet show less information for query and search\n"
+msgstr ""
+
+#: src/pacman/pacman.c:120
+#, c-format
+msgid ""
+" -c, --clean remove old packages from cache directory (-cc for "
+"all)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:122
+#, c-format
+msgid " -e, --dependsonly install dependencies only\n"
+msgstr ""
+
+#: src/pacman/pacman.c:125
+#, c-format
+msgid " -i, --info view package information\n"
+msgstr ""
+
+#: src/pacman/pacman.c:126
+#, c-format
+msgid " -l, --list <repo> view a list of packages in a repo\n"
+msgstr ""
+
+#: src/pacman/pacman.c:127
+#, c-format
+msgid ""
+" -p, --print-uris print out URIs for given packages and their "
+"dependencies\n"
+msgstr ""
+
+#: src/pacman/pacman.c:128
+#, c-format
+msgid ""
+" -s, --search <regex> search remote repositories for matching strings\n"
+msgstr ""
+
+#: src/pacman/pacman.c:129
+#, c-format
+msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
+msgstr ""
+
+#: src/pacman/pacman.c:130
+#, c-format
+msgid ""
+" -w, --downloadonly download packages but do not install/upgrade "
+"anything\n"
+msgstr ""
+
+#: src/pacman/pacman.c:131
+#, c-format
+msgid ""
+" -y, --refresh download fresh package databases from the server\n"
+msgstr ""
+
+#: src/pacman/pacman.c:132
+#, c-format
+msgid ""
+" --needed only install outdated or not yet installed packages\n"
+msgstr ""
+
+#: src/pacman/pacman.c:133
+#, c-format
+msgid ""
+" --ignore <pkg> ignore a package upgrade (can be used more than "
+"once)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:134
+#, c-format
+msgid ""
+" --ignoregroup <grp>\n"
+" ignore a group upgrade (can be used more than once)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:138
+#, c-format
+msgid " --config <path> set an alternate configuration file\n"
+msgstr ""
+
+#: src/pacman/pacman.c:139
+#, c-format
+msgid " --logfile <path> set an alternate log file\n"
+msgstr ""
+
+#: src/pacman/pacman.c:140
+#, c-format
+msgid " --noconfirm do not ask for any confirmation\n"
+msgstr ""
+
+#: src/pacman/pacman.c:141
+#, c-format
+msgid ""
+" --noprogressbar do not show a progress bar when downloading files\n"
+msgstr ""
+
+#: src/pacman/pacman.c:142
+#, c-format
+msgid ""
+" --noscriptlet do not execute the install scriptlet if one exists\n"
+msgstr ""
+
+#: src/pacman/pacman.c:143
+#, c-format
+msgid " -v, --verbose be verbose\n"
+msgstr ""
+
+#: src/pacman/pacman.c:144
+#, c-format
+msgid " -r, --root <path> set an alternate installation root\n"
+msgstr ""
+
+#: src/pacman/pacman.c:145
+#, c-format
+msgid " -b, --dbpath <path> set an alternate database location\n"
+msgstr ""
+
+#: src/pacman/pacman.c:146
+#, c-format
+msgid " --cachedir <dir> set an alternate package cache location\n"
+msgstr ""
+
+#: src/pacman/pacman.c:159
+#, c-format
+msgid ""
+" This program may be freely redistributed under\n"
+" the terms of the GNU General Public License\n"
+msgstr ""
+
+#: src/pacman/pacman.c:250
+#, c-format
+msgid "problem setting rootdir '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:267
+#, c-format
+msgid "problem setting dbpath '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:275
+#, c-format
+msgid "problem setting logfile '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:384
+#, c-format
+msgid "'%s' is not a valid debug level\n"
+msgstr ""
+
+#: src/pacman/pacman.c:398 src/pacman/pacman.c:677
+#, c-format
+msgid "problem adding cachedir '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:484
+msgid "only one operation may be used at a time\n"
+msgstr ""
+
+#: src/pacman/pacman.c:544
+#, c-format
+msgid "config file %s could not be read.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:580
+#, c-format
+msgid "config file %s, line %d: bad section name.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:602
+#, c-format
+msgid "config file %s, line %d: syntax error in config file- missing key.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:612
+#, c-format
+msgid ""
+"config file %s, line %d: 'Include' directive must belong to a section.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:640 src/pacman/pacman.c:702 src/pacman/pacman.c:717
+#, c-format
+msgid "config file %s, line %d: directive '%s' not recognized.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:787
+#, c-format
+msgid "failed to initialize alpm library (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:824
+msgid "you cannot perform this operation unless you are root.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:847
+#, c-format
+msgid "could not register 'local' database (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:873
+msgid "no operation specified (use -h for help)\n"
+msgstr ""
+
+#: src/pacman/query.c:67
+#, c-format
+msgid "error: no file was specified for --owns\n"
+msgstr ""
+
+#: src/pacman/query.c:80
+#, c-format
+msgid "error: failed to read file '%s': %s\n"
+msgstr ""
+
+#: src/pacman/query.c:87
+#, c-format
+msgid "error: cannot determine ownership of a directory\n"
+msgstr ""
+
+#: src/pacman/query.c:95
+#, c-format
+msgid "error: cannot determine real path for '%s': %s\n"
+msgstr ""
+
+#: src/pacman/query.c:117
+#, c-format
+msgid "%s is owned by %s %s\n"
+msgstr ""
+
+#: src/pacman/query.c:125
+#, c-format
+msgid "error: No package owns %s\n"
+msgstr ""
+
+#: src/pacman/query.c:221
+#, c-format
+msgid "error: group \"%s\" was not found\n"
+msgstr ""
+
+#: src/pacman/query.c:232
+#, c-format
+msgid "Checking for package upgrades... \n"
+msgstr ""
+
+#: src/pacman/query.c:243
+#, c-format
+msgid "no upgrades found.\n"
+msgstr ""
+
+#: src/pacman/query.c:362 src/pacman/sync.c:743
+msgid "no usable package repositories configured.\n"
+msgstr ""
+
+#: src/pacman/query.c:406
+#, c-format
+msgid "error: package \"%s\" not found\n"
+msgstr ""
+
+#: src/pacman/remove.c:78 src/pacman/sync.c:583
+#, c-format
+msgid ":: group %s:\n"
+msgstr ""
+
+#: src/pacman/remove.c:80
+msgid " Remove whole content? [Y/n] "
+msgstr ""
+
+#: src/pacman/remove.c:84
+#, c-format
+msgid ":: Remove %s from group %s? [Y/n] "
+msgstr ""
+
+#: src/pacman/remove.c:97 src/pacman/sync.c:479 src/pacman/sync.c:540
+#, c-format
+msgid "error: failed to init transaction (%s)\n"
+msgstr ""
+
+#: src/pacman/remove.c:113
+#, c-format
+msgid "error: failed to add target '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/remove.c:158 src/pacman/util.c:462
+msgid "Targets:"
+msgstr ""
+
+#: src/pacman/remove.c:161
+msgid ""
+"\n"
+"Do you want to remove these packages? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:52
+#, c-format
+msgid "error: could not access database directory\n"
+msgstr ""
+
+#: src/pacman/sync.c:83
+#, c-format
+msgid "Do you want to remove %s? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:88
+#, c-format
+msgid "error: could not remove repository directory\n"
+msgstr ""
+
+#: src/pacman/sync.c:101
+#, c-format
+msgid "Database directory: %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:102
+msgid "Do you want to remove unused repositories? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:112
+#, c-format
+msgid "Database directory cleaned up\n"
+msgstr ""
+
+#: src/pacman/sync.c:130 src/pacman/sync.c:177
+#, c-format
+msgid "Cache directory: %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:131
+msgid "Do you want to remove uninstalled packages from cache? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:134
+#, c-format
+msgid "removing old packages from cache... "
+msgstr ""
+
+#: src/pacman/sync.c:138
+#, c-format
+msgid "error: could not access cache directory\n"
+msgstr ""
+
+#: src/pacman/sync.c:178
+msgid "Do you want to remove ALL packages from cache? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:181
+#, c-format
+msgid "removing all packages from cache... "
+msgstr ""
+
+#: src/pacman/sync.c:184
+#, c-format
+msgid "error: could not remove cache directory\n"
+msgstr ""
+
+#: src/pacman/sync.c:189
+#, c-format
+msgid "error: could not create new cache directory\n"
+msgstr ""
+
+#: src/pacman/sync.c:216
+#, c-format
+msgid "error: failed to synchronize %s: %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:219
+#, c-format
+msgid "error: failed to update %s (%s)\n"
+msgstr ""
+
+#: src/pacman/sync.c:223
+#, c-format
+msgid " %s is up to date\n"
+msgstr ""
+
+#: src/pacman/sync.c:366
+#, c-format
+msgid "error: repository '%s' does not exist\n"
+msgstr ""
+
+#: src/pacman/sync.c:381
+#, c-format
+msgid "error: package '%s' was not found in repository '%s'\n"
+msgstr ""
+
+#: src/pacman/sync.c:401
+#, c-format
+msgid "error: package '%s' was not found\n"
+msgstr ""
+
+#: src/pacman/sync.c:438
+#, c-format
+msgid "error: repository \"%s\" was not found.\n"
+msgstr ""
+
+#: src/pacman/sync.c:490
+#, c-format
+msgid ":: Synchronizing package databases...\n"
+msgstr ""
+
+#: src/pacman/sync.c:493
+#, c-format
+msgid "error: failed to synchronize any databases\n"
+msgstr ""
+
+#: src/pacman/sync.c:505
+#, c-format
+msgid ":: Starting full system upgrade...\n"
+msgstr ""
+
+#: src/pacman/sync.c:526
+#, c-format
+msgid ""
+":: pacman has detected a newer version of itself.\n"
+":: It is recommended that you upgrade pacman by itself\n"
+":: using 'pacman -S pacman', and then rerun the current\n"
+":: operation. If you wish to continue the operation and\n"
+":: not upgrade pacman separately, answer no.\n"
+msgstr ""
+
+#: src/pacman/sync.c:531
+msgid ":: Cancel current operation? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:533 src/pacman/sync.c:720
+#, c-format
+msgid "error: failed to release transaction (%s)\n"
+msgstr ""
+
+#: src/pacman/sync.c:545
+#, c-format
+msgid "error: pacman: %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:569
+#, c-format
+msgid "error: '%s': %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:588
+msgid ":: Install whole content? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:595
+#, c-format
+msgid ":: Install %s from group %s? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:604
+#, c-format
+msgid "error: '%s': not found in sync db\n"
+msgstr ""
+
+#: src/pacman/sync.c:631
+#, c-format
+msgid ":: %s: conflicts with %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:645
+#, c-format
+msgid " local database is up to date\n"
+msgstr ""
+
+#: src/pacman/sync.c:657
+#, c-format
+msgid "Beginning download...\n"
+msgstr ""
+
+#: src/pacman/sync.c:660
+msgid "Proceed with download? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:664
+#, c-format
+msgid "Beginning upgrade process...\n"
+msgstr ""
+
+#: src/pacman/sync.c:667
+msgid "Proceed with installation? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:708
+#, c-format
+msgid "Errors occurred, no packages were upgraded.\n"
+msgstr ""
+
+#: src/pacman/util.c:356 src/pacman/util.c:388
+#, c-format
+msgid "None\n"
+msgstr ""
+
+#: src/pacman/util.c:454
+msgid "Remove:"
+msgstr ""
+
+#: src/pacman/util.c:458
+#, c-format
+msgid "Total Removed Size: %.2f MB\n"
+msgstr ""
+
+#: src/pacman/util.c:465
+#, c-format
+msgid "Total Download Size: %.2f MB\n"
+msgstr ""
+
+#: src/pacman/util.c:469
+#, c-format
+msgid "Total Installed Size: %.2f MB\n"
+msgstr ""
+
+#: src/pacman/util.c:496
+msgid "Y"
+msgstr ""
+
+#: src/pacman/util.c:496
+msgid "YES"
+msgstr ""
+
+#: src/pacman/util.c:557
+#, c-format
+msgid "debug: "
+msgstr ""
+
+#: src/pacman/util.c:560
+#, c-format
+msgid "error: "
+msgstr ""
+
+#: src/pacman/util.c:563
+#, c-format
+msgid "warning: "
+msgstr ""
+
+#: src/pacman/util.c:568
+#, c-format
+msgid "function: "
+msgstr ""
+
+#: scripts/abs.sh.in:60 scripts/makepkg.sh.in:110 scripts/makepkg.sh.in:112
+#: scripts/repo-add.sh.in:50 scripts/repo-remove.sh.in:50
+msgid "ERROR:"
+msgstr ""
+
+#: scripts/abs.sh.in:65
+msgid "abs (pacman) %s - download a PKGBUILD tree from a CVS repository"
+msgstr ""
+
+#: scripts/abs.sh.in:66
+msgid "Usage %s [options] [repository...]"
+msgstr ""
+
+#: scripts/abs.sh.in:67 scripts/makepkg.sh.in:1055
+msgid "Options:"
+msgstr ""
+
+#: scripts/abs.sh.in:68
+msgid " -p, --passive The connection is opened in passive mode."
+msgstr ""
+
+#: scripts/abs.sh.in:70
+msgid " -h, --help Display this help message then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:71
+msgid " -V, --version Display version information then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:73
+msgid ""
+"abs will synchronize build scripts from the CVS repository\\ninto %s. You "
+"can follow different package trees by\\nediting %s files. If no argument is "
+"given, abs\\nwill synchronize from supfiles specified in %s.\\n\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:79
+msgid "Report bugs to <%s>."
+msgstr ""
+
+#: scripts/abs.sh.in:84 scripts/gensync.sh.in:54 scripts/makepkg.sh.in:1088
+#: scripts/pacman-optimize.sh.in:59 scripts/repo-remove.sh.in:66
+msgid ""
+"Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:130 scripts/pacman-optimize.sh.in:100
+msgid "%s does not exist or is not a directory."
+msgstr ""
+
+#: scripts/abs.sh.in:133
+msgid "You do not have write permissions in %s."
+msgstr ""
+
+#: scripts/abs.sh.in:143
+msgid "Missing CVS synchronization utility. Install csup or cvsup."
+msgstr ""
+
+#: scripts/abs.sh.in:166
+msgid "Updating %s..."
+msgstr ""
+
+#: scripts/gensync.sh.in:34
+msgid "Usage: %s <root> <destfile> [package_directory]"
+msgstr ""
+
+#: scripts/gensync.sh.in:35
+msgid ""
+"gensync will generate a sync database by reading all PKGBUILD files\\nfrom "
+"<root>. gensync builds the database in a temporary directory\\nand then "
+"compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:39
+msgid ""
+"gensync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:42
+msgid ""
+"note: The <destfile> name is important. It must be of the form\\n "
+"{treename}.db.tar.gz where {treename} is the name of the custom\\n "
+"package repository you configured in /etc/pacman.conf. The\\n generated "
+"database must reside in the same directory as your\\n custom packages "
+"(also configured in /etc/pacman.conf)\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:48
+msgid "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
+msgstr ""
+
+#: scripts/gensync.sh.in:102 scripts/updatesync.sh.in:101
+msgid "%s not found. Can not continue."
+msgstr ""
+
+#: scripts/gensync.sh.in:120
+msgid "invalid root dir: %s"
+msgstr ""
+
+#: scripts/gensync.sh.in:122
+msgid "gensync: building database entries, generating md5sums..."
+msgstr ""
+
+#: scripts/gensync.sh.in:131
+msgid "failed to parse parse %s"
+msgstr ""
+
+#: scripts/gensync.sh.in:142
+msgid "could not find %s-%s-%s-%s.%s - skipping"
+msgstr ""
+
+#: scripts/gensync.sh.in:152
+msgid "creating repo DB..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:101 scripts/makepkg.sh.in:103
+#: scripts/repo-add.sh.in:45 scripts/repo-remove.sh.in:45
+msgid "WARNING:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:143
+msgid "Cleaning up..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:193
+msgid ""
+"Options beginning with 'no' will be deprecated in the next version of "
+"makepkg!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:194
+msgid "Please replace 'no' with '!': %s -> %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:198
+msgid "Option 'keepdocs' may not work as intended. Please replace with 'docs'."
+msgstr ""
+
+#: scripts/makepkg.sh.in:286
+msgid "There is no agent set up to handle %s URLs. Check %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:287 scripts/makepkg.sh.in:296
+#: scripts/makepkg.sh.in:448 scripts/makepkg.sh.in:476
+#: scripts/makepkg.sh.in:522 scripts/makepkg.sh.in:610
+#: scripts/makepkg.sh.in:638 scripts/makepkg.sh.in:700
+#: scripts/makepkg.sh.in:767 scripts/makepkg.sh.in:1105
+#: scripts/makepkg.sh.in:1415 scripts/makepkg.sh.in:1419
+msgid "Aborting..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:295
+msgid "The download program %s is not installed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:311
+msgid "Pacman returned a fatal error (%i): %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:335
+msgid "Installing missing dependencies..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:345
+msgid "Pacman failed to install missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:349
+msgid "Building missing dependencies..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:354
+msgid "Source root cannot be found - please make sure it is specified in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:362
+msgid "Could not find '%s' under %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:378
+msgid "Failed to build '%s'"
+msgstr ""
+
+#: scripts/makepkg.sh.in:411
+msgid "Failed to install all missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:414
+msgid "Missing Dependencies:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:444
+msgid "Retrieving Sources..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:447
+msgid "You do not have write permission to store downloads in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:458
+msgid "Found %s in build dir"
+msgstr ""
+
+#: scripts/makepkg.sh.in:462
+msgid "Using cached copy of %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:470
+msgid "Downloading %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:475
+msgid "Failure while downloading %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:486
+msgid "Generating checksums for source files..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:495
+msgid "Invalid integrity algorithm '%s' specified."
+msgstr ""
+
+#: scripts/makepkg.sh.in:500 scripts/makepkg.sh.in:552
+msgid "Cannot find the '%s' program."
+msgstr ""
+
+#: scripts/makepkg.sh.in:521
+msgid "Unable to find source file %s to generate checksum."
+msgstr ""
+
+#: scripts/makepkg.sh.in:547
+msgid "Invalid integrity algorithm '%s' specified"
+msgstr ""
+
+#: scripts/makepkg.sh.in:558
+msgid "Validating source files with %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:568
+msgid "NOT FOUND"
+msgstr ""
+
+#: scripts/makepkg.sh.in:577
+msgid "Passed"
+msgstr ""
+
+#: scripts/makepkg.sh.in:579
+msgid "FAILED"
+msgstr ""
+
+#: scripts/makepkg.sh.in:587
+msgid "One or more files did not pass the validity check!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:591
+msgid "Integrity checks (%s) are missing or incomplete."
+msgstr ""
+
+#: scripts/makepkg.sh.in:597
+msgid "Extracting Sources..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:609
+msgid "Unable to find source file %s for extraction."
+msgstr ""
+
+#: scripts/makepkg.sh.in:637
+msgid "Failed to extract %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:669
+msgid "Starting build()..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:699
+msgid "Build Failed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:708
+msgid "Tidying install..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:711
+msgid "Removing info/doc files..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:717
+msgid "Moving usr/share/man files to usr/man..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:724
+msgid "Compressing man pages..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:742
+msgid "Stripping debugging symbols from binaries and libraries..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:754
+msgid "Removing libtool .la files..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:759
+msgid "Removing empty directories..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:766
+msgid "Missing pkg/ directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:772
+msgid "Creating package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:782
+msgid "Generating .FILELIST file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:792
+msgid "Generating .PKGINFO file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:838
+msgid "Please add a license line to your %s!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:839
+msgid "Example for GPL'ed software: license=('GPL')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:847 scripts/makepkg.sh.in:942
+msgid "Adding install script..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:854
+msgid "Adding package changelog..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:860
+msgid "Compressing package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:865
+msgid "Failed to create package file."
+msgstr ""
+
+#: scripts/makepkg.sh.in:874
+msgid "Cannot find the xdelta binary! Is xdelta installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:904
+msgid "Making delta from version %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:918
+msgid "Recreating package tarball from delta to match md5 signatures"
+msgstr ""
+
+#: scripts/makepkg.sh.in:919
+msgid "NOTE: the delta should ONLY be distributed with this tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:923
+msgid "Could not generate the package from the delta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:927
+msgid "Delta was not able to be created."
+msgstr ""
+
+#: scripts/makepkg.sh.in:930
+msgid "No previous version found, skipping xdelta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:936
+msgid "Creating source package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:938 scripts/makepkg.sh.in:950
+#: scripts/makepkg.sh.in:957
+msgid "Adding %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:945
+msgid "Install script %s not found."
+msgstr ""
+
+#: scripts/makepkg.sh.in:965
+msgid "Compressing source package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:967
+msgid "Failed to create source package file."
+msgstr ""
+
+#: scripts/makepkg.sh.in:975
+msgid "Installing package with pacman -U..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:992
+msgid "Determining latest darcs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:995
+msgid "Determining latest cvs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:998
+msgid "Determining latest git revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1001
+msgid "Determining latest svn revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1004
+msgid "Determining latest bzr revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1007
+msgid "Determining latest hg revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1022
+msgid "Version found: %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1053
+msgid "Usage: %s [options]"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1056
+msgid " -A, --ignorearch Ignore incomplete arch field in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1057
+msgid " -b, --builddeps Build missing dependencies from source"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1058
+msgid " -c, --clean Clean up work files after build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1059
+msgid " -C, --cleancache Clean up source files from the cache"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1060
+msgid " -d, --nodeps Skip all dependency checks"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1061
+msgid " -e, --noextract Do not extract source files (use existing src/ dir)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1062
+msgid " -f, --force Overwrite existing package"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1063
+msgid " -g, --geninteg Generate integrity checks for source files"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1064
+msgid " -h, --help This help"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1065
+msgid " -i, --install Install package after successful build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1066
+msgid " -L, --log Log package build process"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1067
+msgid " -m, --nocolor Disable colorized output messages"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1068
+msgid " -o, --nobuild Download and extract files only"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1069
+msgid " -p <buildscript> Use an alternate build script (instead of '%s')"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1070
+msgid ""
+" -r, --rmdeps Remove installed dependencies after a successful build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1072
+msgid " -R, --repackage Repackage contents of pkg/ without building"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1073
+msgid " -s, --syncdeps Install missing dependencies with pacman"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1074
+msgid " --asroot Allow makepkg to run as root user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1075
+msgid " --source Do not build package; generate a source-only tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1077
+msgid "These options can be passed to pacman:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1079
+msgid ""
+" --noconfirm Do not ask for confirmation when resolving "
+"dependencies"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1080
+msgid ""
+" --noprogressbar Do not show a progress bar when downloading files"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1082
+msgid "If -p is not specified, makepkg will look for '%s'"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1104
+msgid "%s not found."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1177
+msgid "Sudo is used by default now. The --usesudo option is deprecated!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1192
+msgid "Cleaning up ALL files from %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1193
+msgid " Are you sure you wish to do this? [Y/n] "
+msgstr ""
+
+#: scripts/makepkg.sh.in:1199
+msgid "Problem removing files; you may not have correct permissions in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1203
+msgid "Source cache cleaned."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1208
+msgid "No files have been removed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1213
+msgid "Source destination must be defined in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1214
+msgid "In addition, please run makepkg -C outside of your cache directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1220
+msgid "BUILDSCRIPT is undefined! Ensure you have updated %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1227
+msgid "Running makepkg as root is a BAD idea and can cause"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1228
+msgid "permanent, catastrophic damage to your system. If you"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1229
+msgid "wish to run as root, please use the --asroot option."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1233
+msgid "The --asroot option is meant for the root user only."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1234
+msgid "Please rerun makepkg without the --asroot flag."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1238
+msgid "Fakeroot must be installed if using the 'fakeroot' option"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1239
+msgid "in the BUILDENV array in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1243
+msgid "Running makepkg as an unprivileged user will result in non-root"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1244
+msgid "ownership of the packaged files. Try using the fakeroot environment by"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1245
+msgid "placing 'fakeroot' in the BUILDENV array in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1250
+msgid "Do not use the '-F' option. This option is only for use by makepkg."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1259
+msgid "Cannot find the sudo binary! Is sudo installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1260
+msgid "Missing dependencies cannot be installed or removed as a normal user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1261
+msgid "without sudo; install and configure sudo to auto-resolve dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1271
+msgid "%s does not exist."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1286 scripts/makepkg.sh.in:1290
+msgid "%s is not allowed to be empty."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1294 scripts/makepkg.sh.in:1298
+msgid "%s is not allowed to contain hyphens."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1308 scripts/makepkg.sh.in:1313
+msgid "%s is not available for the '%s' architecture."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1309 scripts/makepkg.sh.in:1314
+msgid "Note that many packages may need a line added to their %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1310 scripts/makepkg.sh.in:1315
+msgid "such as arch=('%s')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1320
+msgid "Install scriptlet (%s) does not exist."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1330
+msgid "A package has already been built, installing existing package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1334 scripts/makepkg.sh.in:1366
+msgid "A package has already been built. (use -f to overwrite)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1343 scripts/makepkg.sh.in:1442
+msgid "Skipping build."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1352
+msgid "Leaving fakeroot environment."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1356
+msgid "Making package: %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1359
+msgid "Running makepkg as root..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1370
+msgid "Source package created: %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1377
+msgid "Skipping dependency checks."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1384
+msgid "Checking Runtime Dependencies..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1387
+msgid "Checking Buildtime Dependencies..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1391
+msgid "Could not resolve all dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1395
+msgid "pacman was not found in PATH; skipping dependency checks."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1409
+msgid "Skipping source retrieval -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1410
+msgid "Skipping source integrity checks -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1411
+msgid "Skipping source extraction -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1414
+msgid "The source directory is empty, there is nothing to build!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1418
+msgid "The package directory is empty, there is nothing to repackage!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1429
+msgid "Sources are ready."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1434
+msgid "Removing existing pkg/ directory..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1451
+msgid "Entering fakeroot environment..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1464
+msgid "Finished making: %s"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:44
+msgid "Usage: %s [pacman_db_root]"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:45
+msgid ""
+"pacman-optimize is a little hack that should improve the performance\\nof "
+"pacman when reading/writing to its filesystem-based database.\\n\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:48
+msgid ""
+"Because pacman uses many small files to keep track of packages,\\nthere is a "
+"tendency for these files to become fragmented over time.\\nThis script "
+"attempts to relocate these small files into one\\ncontinuous location on "
+"your hard drive. The result is that the hard\\ndrive should be able to read "
+"them faster, since the hard drive head\\ndoes not have to move around the "
+"disk as much.\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:91
+msgid "diff tool was not found, please install diffutils."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:96
+msgid "Pacman lock file was found. Cannot run while pacman is running."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:104
+msgid "You must have correct permissions to optimize the database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:108
+msgid "ERROR: Can not create temp directory for database building."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:114
+msgid "MD5sum'ing the old database..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:118
+msgid "Tar'ing up %s..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:123
+msgid "Tar'ing up %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:127
+msgid "Making and MD5sum'ing the new db..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:132
+msgid "Untar'ing %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:138
+msgid "Checking integrity..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:144
+msgid "Integrity check FAILED, reverting to old database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:149
+msgid "Putting the new database in place..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:158
+msgid "Finished. Your pacman database has been optimized."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:159
+msgid "For full benefits of pacman-optimize, run 'sync' now."
+msgstr ""
+
+#: scripts/repo-add.sh.in:56
+msgid "Usage: %s <path-to-db> [--force] <package> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:57
+msgid ""
+"repo-add will update a package database by reading a package file."
+"\\nMultiple packages to add can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:60
+msgid ""
+"The --force flag will add a 'force' entry to the sync database, which"
+"\\ntells pacman to skip its internal version number checking and update"
+"\\nthe package regardless.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:64
+msgid "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
+msgstr ""
+
+#: scripts/repo-add.sh.in:69
+msgid ""
+"Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:173
+msgid "Invalid package file '%s'."
+msgstr ""
+
+#: scripts/repo-add.sh.in:182 scripts/repo-remove.sh.in:91
+msgid "Removing existing package '%s'..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:192
+msgid "Creating 'desc' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:202
+msgid "Computing md5 checksums..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:214
+msgid "Creating 'depends' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:230
+msgid "Creating 'deltas' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:236
+msgid "Added delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:238
+msgid "Could not add delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:276 scripts/repo-remove.sh.in:123
+msgid "%s not found. Cannot continue."
+msgstr ""
+
+#: scripts/repo-add.sh.in:286 scripts/repo-remove.sh.in:133
+msgid "Cannot create temp directory for database building."
+msgstr ""
+
+#: scripts/repo-add.sh.in:297 scripts/repo-remove.sh.in:142
+msgid "Repository file '%s' is not a proper pacman database."
+msgstr ""
+
+#: scripts/repo-add.sh.in:300 scripts/repo-remove.sh.in:145
+msgid "Extracting database to a temporary location..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:306
+msgid "'%s' is not a package file, skipping"
+msgstr ""
+
+#: scripts/repo-add.sh.in:308
+msgid "Adding package '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:315
+msgid "Package '%s' not found."
+msgstr ""
+
+#: scripts/repo-add.sh.in:322
+msgid "Creating updated database file %s"
+msgstr ""
+
+#: scripts/repo-add.sh.in:332 scripts/repo-remove.sh.in:170
+msgid "No compression set."
+msgstr ""
+
+#: scripts/repo-add.sh.in:340 scripts/repo-remove.sh.in:178
+msgid "No packages modified, nothing to do."
+msgstr ""
+
+#: scripts/repo-remove.sh.in:55
+msgid "repo-remove %s\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:56
+msgid "usage: %s <path-to-db> <packagename> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:57
+msgid ""
+"repo-remove will update a package database by removing the package name"
+"\\nspecified on the command line from the given repo database. Multiple"
+"\\npackages to remove can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:61
+msgid "Example: repo-remove /path/to/repo.db.tar.gz kernel26"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:149
+msgid "Searching for package '%s'..."
+msgstr ""
+
+#: scripts/repo-remove.sh.in:154
+msgid "Package matching '%s' not found."
+msgstr ""
+
+#: scripts/repo-remove.sh.in:161
+msgid "Creating updated database file '%s'..."
+msgstr ""
+
+#: scripts/updatesync.sh.in:35
+msgid "Usage: %s <action> <destfile> <option> [package_directory]"
+msgstr ""
+
+#: scripts/updatesync.sh.in:36
+msgid ""
+"updatesync will update a sync database by reading a PKGBUILD and\\nmodifying "
+"the destfile. updatesync updates the database in a temporary\\ndirectory and "
+"then compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:40
+msgid "There are two types of actions:\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:41
+msgid ""
+"upd - Will update a package's entry or create it if it doesn't exist."
+"\\n It takes the package's PKGBUILD as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:42
+msgid ""
+"del - Will remove a package's entry from the db. It takes the package's"
+"\\n name as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:44
+msgid ""
+"updatesync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:47
+msgid "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
+msgstr ""
+
+#: scripts/updatesync.sh.in:53
+msgid ""
+"Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:123
+msgid "%s not found"
+msgstr ""
+
+#: scripts/updatesync.sh.in:129
+msgid "failed to parse %s"
+msgstr ""
+
+#: scripts/updatesync.sh.in:136
+msgid "could not find %s-%s-%s-%s.%s - aborting"
+msgstr ""
diff --git a/po/pl_PL.po b/po/pl_PL.po
new file mode 100644
index 00000000..7e36036a
--- /dev/null
+++ b/po/pl_PL.po
@@ -0,0 +1,2308 @@
+# Polish translations for Pacman package manager package
+# Polskie tłumaczenia dla pakietu Pacman package manager.
+# Copyright (C) 2007 Judd Vinet <jvinet@zeroflux.org>
+# This file is distributed under the same license as the Pacman package manager package.
+# Mateusz Jędrasik <m.jedrasik@gmail.com>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Pacman package manager 3.0.1\n"
+"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: 2007-04-12 04:22+0200\n"
+"Last-Translator: Mateusz Jędrasik <m.jedrasik@gmail.com>\n"
+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#: src/pacman/add.c:42 src/pacman/remove.c:44
+#, c-format
+msgid "failed to release transaction (%s)\n"
+msgstr "nie udało się wyswobodzić transaction (%s)\n"
+
+#: src/pacman/add.c:79 src/pacman/query.c:372 src/pacman/remove.c:65
+#: src/pacman/sync.c:753
+msgid "no targets specified (use -h for help)\n"
+msgstr "nie podano żadnych celów (użyj -h aby otrzymać pomoc)\n"
+
+#: src/pacman/add.c:106 src/pacman/sync.c:508
+#, fuzzy, c-format
+msgid "error: %s\n"
+msgstr "błąd: "
+
+#: src/pacman/add.c:109 src/pacman/remove.c:100 src/pacman/sync.c:482
+#, fuzzy, c-format
+msgid ""
+" if you're sure a package manager is not already\n"
+" running, you can remove %s.\n"
+msgstr ""
+"jeśli jesteś pewien że menedżer pakietów nie jest już uruchomiony,\n"
+" możesz usunąć %s%s\n"
+
+#: src/pacman/add.c:116 src/pacman/remove.c:108
+#, c-format
+msgid "loading package data... "
+msgstr "Å‚adowanie informacji o pakietach... "
+
+#: src/pacman/add.c:120
+#, fuzzy, c-format
+msgid "error: failed to add target '%s' (%s)"
+msgstr "nie udało się dodać celu '%s' (%s)"
+
+#: src/pacman/add.c:126 src/pacman/remove.c:120 src/pacman/sync.c:174
+#: src/pacman/sync.c:192
+#, c-format
+msgid "done.\n"
+msgstr "gotowe.\n"
+
+#: src/pacman/add.c:131 src/pacman/remove.c:124 src/pacman/sync.c:614
+#, fuzzy, c-format
+msgid "error: failed to prepare transaction (%s)\n"
+msgstr "nie udało się przygotować transakcji (%s)\n"
+
+#: src/pacman/add.c:143 src/pacman/remove.c:132 src/pacman/sync.c:623
+#, fuzzy, c-format
+msgid ":: %s: requires %s\n"
+msgstr ":: %s: wymaga %s"
+
+#: src/pacman/add.c:151
+#, c-format
+msgid ":: %s: conflicts with %s"
+msgstr ":: %s: konfliktuje z %s"
+
+#: src/pacman/add.c:160 src/pacman/sync.c:686
+#, c-format
+msgid "%s exists in both '%s' and '%s'\n"
+msgstr "%s znajduje siÄ™ w '%s' i w '%s'\n"
+
+#: src/pacman/add.c:166 src/pacman/sync.c:692
+#, c-format
+msgid "%s: %s exists in filesystem\n"
+msgstr "%s: %s znajduje się w systemie plików\n"
+
+#: src/pacman/add.c:172
+#, c-format
+msgid ""
+"\n"
+"errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"wystąpiły błędy, nie zaktualizowano żadnych pakietów.\n"
+
+#: src/pacman/add.c:186 src/pacman/remove.c:171 src/pacman/sync.c:677
+#, fuzzy, c-format
+msgid "error: failed to commit transaction (%s)\n"
+msgstr "nie udało się dokonać transakcji (%s)\n"
+
+#: src/pacman/callback.c:163
+#, fuzzy, c-format
+msgid "checking dependencies...\n"
+msgstr "sprawdzanie zależności... "
+
+#: src/pacman/callback.c:167
+#, fuzzy, c-format
+msgid "checking for file conflicts...\n"
+msgstr "sprawdzanie konfliktów w systemie plików... "
+
+#: src/pacman/callback.c:171
+#, fuzzy, c-format
+msgid "resolving dependencies...\n"
+msgstr "rozwiązywanie zależności... "
+
+#: src/pacman/callback.c:174
+#, fuzzy, c-format
+msgid "looking for inter-conflicts...\n"
+msgstr "szukanie konfliktów międzypakietowych... "
+
+#: src/pacman/callback.c:178
+#, fuzzy, c-format
+msgid "installing %s...\n"
+msgstr "instalowanie %s... "
+
+#: src/pacman/callback.c:189
+#, fuzzy, c-format
+msgid "removing %s...\n"
+msgstr "usuwanie %s... "
+
+#: src/pacman/callback.c:200
+#, fuzzy, c-format
+msgid "upgrading %s...\n"
+msgstr "aktualizowanie %s... "
+
+#: src/pacman/callback.c:211
+#, fuzzy, c-format
+msgid "checking package integrity...\n"
+msgstr "sprawdzanie spójności pakietów... "
+
+#: src/pacman/callback.c:214
+#, fuzzy, c-format
+msgid "checking delta integrity...\n"
+msgstr "sprawdzanie spójności pakietów... "
+
+#: src/pacman/callback.c:217
+#, c-format
+msgid "applying deltas...\n"
+msgstr ""
+
+#: src/pacman/callback.c:220
+#, fuzzy, c-format
+msgid "generating %s with %s... "
+msgstr "aktualizowanie %s... "
+
+#: src/pacman/callback.c:223
+#, c-format
+msgid "success!\n"
+msgstr ""
+
+#: src/pacman/callback.c:226
+#, c-format
+msgid "failed.\n"
+msgstr "nieudane.\n"
+
+#: src/pacman/callback.c:235
+#, c-format
+msgid ":: Retrieving packages from %s...\n"
+msgstr ":: Pobieranie pakietów z %s...\n"
+
+#: src/pacman/callback.c:263
+#, fuzzy, c-format
+msgid ""
+":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway? [Y/"
+"n] "
+msgstr ":: %1$s wymaga %2$s z IgnorePkg. Zainstalować %2$s? [T/n] "
+
+#: src/pacman/callback.c:268
+#, fuzzy, c-format
+msgid ":: %s is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+msgstr ":: %s jest w IgnorePkg. Zainstalować mimo to? [T/n] "
+
+#: src/pacman/callback.c:274
+#, c-format
+msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
+msgstr ":: %s desygnowany jest jako HoldPkg. Usunąć mimo tego? [T/n] "
+
+#: src/pacman/callback.c:279
+#, c-format
+msgid ":: Replace %s with %s/%s? [Y/n] "
+msgstr ":: Zastąpić %s przez %s/%s? [T/n] "
+
+#: src/pacman/callback.c:286
+#, c-format
+msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
+msgstr ":: %s konfliktuje z %s. Usunąć %s? [T/n] "
+
+#: src/pacman/callback.c:294
+#, c-format
+msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
+msgstr ":: %s-%s: lokalna wersja jest nowsza. Aktualizować pomimo tego? [T/n] "
+
+#: src/pacman/callback.c:304
+#, fuzzy, c-format
+msgid ":: File %s is corrupted. Do you want to delete it? [Y/n] "
+msgstr ":: Archiwum %s jest skorumpowane. Czy chcesz je usunąć? [T/n] "
+
+#: src/pacman/callback.c:354
+msgid "installing"
+msgstr "instalowanie"
+
+#: src/pacman/callback.c:357
+msgid "upgrading"
+msgstr "aktualizowanie"
+
+#: src/pacman/callback.c:360
+msgid "removing"
+msgstr "usuwanie"
+
+#: src/pacman/callback.c:363
+msgid "checking for file conflicts"
+msgstr "sprawdzanie konfliktów plików"
+
+#: src/pacman/package.c:68
+msgid "Explicitly installed"
+msgstr "Explicitly installed"
+
+#: src/pacman/package.c:71
+msgid "Installed as a dependency for another package"
+msgstr "Zainstalowano jako wymóg innej paczki"
+
+#: src/pacman/package.c:74
+msgid "Unknown"
+msgstr "Nieznane"
+
+#: src/pacman/package.c:89
+msgid "Description : "
+msgstr "Opis : "
+
+#: src/pacman/package.c:93
+#, fuzzy
+msgid "Filename :"
+msgstr "Licencja :"
+
+#: src/pacman/package.c:95
+#, fuzzy
+msgid "Name :"
+msgstr "Nazwa : %s\n"
+
+#: src/pacman/package.c:96
+#, fuzzy
+msgid "Version :"
+msgstr "Wersja : %s\n"
+
+#: src/pacman/package.c:97
+#, fuzzy
+msgid "URL :"
+msgstr "URL : %s\n"
+
+#: src/pacman/package.c:98
+#, fuzzy
+msgid "Licenses :"
+msgstr "Licencja :"
+
+#: src/pacman/package.c:99
+msgid "Groups :"
+msgstr "Grupy :"
+
+#: src/pacman/package.c:100
+msgid "Provides :"
+msgstr "Dostarcza :"
+
+#: src/pacman/package.c:101
+msgid "Depends On :"
+msgstr "Zależy od :"
+
+#: src/pacman/package.c:102
+msgid "Optional Deps :"
+msgstr ""
+
+#: src/pacman/package.c:105
+msgid "Required By :"
+msgstr "Wymagane przez :"
+
+#: src/pacman/package.c:108
+msgid "Conflicts With :"
+msgstr "Konfliktuje z :"
+
+#: src/pacman/package.c:109
+msgid "Replaces :"
+msgstr "Zastępuje :"
+
+#: src/pacman/package.c:111
+#, c-format
+msgid "Download Size : %6.2f K\n"
+msgstr "Ilość danych do pobrania : %6.2f K\n"
+
+#: src/pacman/package.c:115
+#, fuzzy, c-format
+msgid "Compressed Size: %6.2f K\n"
+msgstr "Rozmiar po instalacji : %6.2f K\n"
+
+#: src/pacman/package.c:119
+#, c-format
+msgid "Installed Size : %6.2f K\n"
+msgstr "Rozmiar po instalacji : %6.2f K\n"
+
+#: src/pacman/package.c:121
+#, fuzzy
+msgid "Packager :"
+msgstr "PakujÄ…cy : %s\n"
+
+#: src/pacman/package.c:122
+#, fuzzy
+msgid "Architecture :"
+msgstr "Architektura : %s\n"
+
+#: src/pacman/package.c:123
+#, fuzzy
+msgid "Build Date :"
+msgstr "Data budowy : %s %s\n"
+
+#: src/pacman/package.c:125
+#, fuzzy
+msgid "Install Date :"
+msgstr "Data instalacji : %s %s\n"
+
+#: src/pacman/package.c:126
+#, fuzzy
+msgid "Install Reason :"
+msgstr "Powód ku instalacji : %s\n"
+
+#: src/pacman/package.c:129
+#, fuzzy
+msgid "Install Script :"
+msgstr "Skrypt instalacyjny : %s\n"
+
+#: src/pacman/package.c:130
+msgid "Yes"
+msgstr "Tak"
+
+#: src/pacman/package.c:130
+msgid "No"
+msgstr "Nie"
+
+#: src/pacman/package.c:135
+#, fuzzy
+msgid "MD5 Sum :"
+msgstr "Suma MD5 : %s"
+
+#: src/pacman/package.c:159
+#, fuzzy
+msgid "Repository :"
+msgstr "Repozytorium : %s\n"
+
+#: src/pacman/package.c:169
+#, c-format
+msgid "Backup Files:\n"
+msgstr "Pliki kopii zapasowej:\n"
+
+#: src/pacman/package.c:189
+#, fuzzy, c-format
+msgid "error: could not calculate checksums for %s\n"
+msgstr "błąd kalkulowania sum kontrolnych dla %s\n"
+
+#: src/pacman/package.c:197
+#, c-format
+msgid "MODIFIED\t%s\n"
+msgstr "ZMIENIONE\t%s\n"
+
+#: src/pacman/package.c:199
+#, c-format
+msgid "Not Modified\t%s\n"
+msgstr "Nie zmienione\t%s\n"
+
+#: src/pacman/package.c:203
+#, c-format
+msgid "MISSING\t\t%s\n"
+msgstr "BRAKUJÄ„CE\t\t%s\n"
+
+#: src/pacman/package.c:209
+#, c-format
+msgid "(none)\n"
+msgstr "(żadnych)\n"
+
+#: src/pacman/package.c:244
+#, fuzzy, c-format
+msgid "error: no changelog available for '%s'.\n"
+msgstr "Brak dostępnego changelog'a dla '%s'.\n"
+
+#: src/pacman/pacman.c:62
+#, fuzzy
+msgid "options"
+msgstr "opcje:\n"
+
+#: src/pacman/pacman.c:63
+#, fuzzy
+msgid "file"
+msgstr "nieudane.\n"
+
+#: src/pacman/pacman.c:64
+msgid "package"
+msgstr ""
+
+#: src/pacman/pacman.c:65
+msgid "usage"
+msgstr ""
+
+#: src/pacman/pacman.c:66
+#, fuzzy
+msgid "operation"
+msgstr "opcje:\n"
+
+#: src/pacman/pacman.c:78
+#, c-format
+msgid ""
+"\n"
+"use '%s --help' with other options for more syntax\n"
+msgstr ""
+"\n"
+"użyj '%s --help' z innymi opcjami dla dalszych składni\n"
+
+#: src/pacman/pacman.c:83 src/pacman/pacman.c:97 src/pacman/pacman.c:119
+#, fuzzy, c-format
+msgid " --asdeps install packages as non-explicitly installed\n"
+msgstr ""
+" -u, --upgrades wylistowywuje wszystkie pakiety które można "
+"uaktualnić\n"
+
+#: src/pacman/pacman.c:84 src/pacman/pacman.c:90 src/pacman/pacman.c:98
+#: src/pacman/pacman.c:121
+#, c-format
+msgid " -d, --nodeps skip dependency checks\n"
+msgstr " -d, --nodeps pomija sprawdzanie zależności\n"
+
+#: src/pacman/pacman.c:85 src/pacman/pacman.c:99 src/pacman/pacman.c:123
+#, c-format
+msgid " -f, --force force install, overwrite conflicting files\n"
+msgstr ""
+" -f, --force wymusza instalacjÄ™, nadpisujÄ…c konfliktujÄ…ce pliki\n"
+
+#: src/pacman/pacman.c:89
+#, c-format
+msgid ""
+" -c, --cascade remove packages and all packages that depend on them\n"
+msgstr ""
+" -c, --cascade usuwa pakiet i wszystkie pakiety od niego zależne\n"
+
+#: src/pacman/pacman.c:91
+#, c-format
+msgid ""
+" -k, --dbonly only remove database entry, do not remove files\n"
+msgstr ""
+" -k, --dbonly usuwa jedynie wpis w bazie danych, bez zmian na "
+"plikach \n"
+
+#: src/pacman/pacman.c:92
+#, c-format
+msgid " -n, --nosave remove configuration files as well\n"
+msgstr " -n, --nosave usuwa także pliki konfiguracyjne\n"
+
+#: src/pacman/pacman.c:93
+#, c-format
+msgid ""
+" -s, --recursive remove dependencies also (that won't break packages)\n"
+msgstr ""
+" -s, --recursive usuwa także zależności (które nie złamią działania "
+"innych pakietów)\n"
+
+#: src/pacman/pacman.c:103
+#, c-format
+msgid " -c, --changelog view the changelog of a package\n"
+msgstr " -c, --changelog wyświetla changelog dla pakietu\n"
+
+#: src/pacman/pacman.c:104
+#, fuzzy, c-format
+msgid " -d, --deps list all packages installed as dependencies\n"
+msgstr ""
+" -u, --upgrades wylistowywuje wszystkie pakiety które można "
+"uaktualnić\n"
+
+#: src/pacman/pacman.c:105
+#, fuzzy, c-format
+msgid " -e, --explicit list all packages explicitly installed\n"
+msgstr ""
+" -u, --upgrades wylistowywuje wszystkie pakiety które można "
+"uaktualnić\n"
+
+#: src/pacman/pacman.c:106 src/pacman/pacman.c:124
+#, c-format
+msgid " -g, --groups view all members of a package group\n"
+msgstr " -g, --groups wyświetla zawartość grupy pakietów\n"
+
+#: src/pacman/pacman.c:107
+#, fuzzy, c-format
+msgid ""
+" -i, --info view package information (-ii for backup files)\n"
+msgstr " -i, --info wyświetla informację o pakiecie\n"
+
+#: src/pacman/pacman.c:108
+#, c-format
+msgid " -l, --list list the contents of the queried package\n"
+msgstr " -l, --list wylistowywuje zawartość pytanego pakietu\n"
+
+#: src/pacman/pacman.c:109
+#, c-format
+msgid ""
+" -m, --foreign list installed packages not found in sync db(s)\n"
+msgstr ""
+" -m, --foreign wylistowywuje zainstalowane paczki nie znalezione w "
+"bazach sync\n"
+
+#: src/pacman/pacman.c:110
+#, c-format
+msgid " -o, --owns <file> query the package that owns <file>\n"
+msgstr " -o, --owns <file> pyta pakiet zawierajÄ…cÄ… <file>\n"
+
+#: src/pacman/pacman.c:111
+#, c-format
+msgid " -p, --file <package> query a package file instead of the database\n"
+msgstr " -p, --file <package> pyta plik pakietu zamiast bazy danych\n"
+
+#: src/pacman/pacman.c:112
+#, c-format
+msgid ""
+" -s, --search <regex> search locally-installed packages for matching "
+"strings\n"
+msgstr ""
+" -s, --search <regex> przeszukuje lokalnie zainstalowane pakiety według "
+"pasujących ciągów\n"
+
+#: src/pacman/pacman.c:113
+#, fuzzy, c-format
+msgid " -t, --orphans list all packages not required by any package\n"
+msgstr ""
+" -e, --orphans wylistowywuje wszystkie pakiety zainstalowane jako "
+"zależności ale nie\n"
+
+#: src/pacman/pacman.c:114
+#, c-format
+msgid " -u, --upgrades list all packages that can be upgraded\n"
+msgstr ""
+" -u, --upgrades wylistowywuje wszystkie pakiety które można "
+"uaktualnić\n"
+
+#: src/pacman/pacman.c:115 src/pacman/pacman.c:136
+#, c-format
+msgid " -q --quiet show less information for query and search\n"
+msgstr ""
+
+#: src/pacman/pacman.c:120
+#, c-format
+msgid ""
+" -c, --clean remove old packages from cache directory (-cc for "
+"all)\n"
+msgstr ""
+" -c, --clean usuwa stare pakiety z katalogu pamięci podręcznej (-"
+"cc dla wszystkich)\n"
+
+#: src/pacman/pacman.c:122
+#, c-format
+msgid " -e, --dependsonly install dependencies only\n"
+msgstr " -e, --dependsonly instaluje tylko zależności\n"
+
+#: src/pacman/pacman.c:125
+#, c-format
+msgid " -i, --info view package information\n"
+msgstr " -i, --info wyświetla informację o pakiecie\n"
+
+#: src/pacman/pacman.c:126
+#, c-format
+msgid " -l, --list <repo> view a list of packages in a repo\n"
+msgstr " -l, --list <repo> przegląda listę pakietów w repozytorium \n"
+
+#: src/pacman/pacman.c:127
+#, c-format
+msgid ""
+" -p, --print-uris print out URIs for given packages and their "
+"dependencies\n"
+msgstr ""
+" -p, --print-uris wykazuje URI dla danych pakietów oraz ich zależności\n"
+
+#: src/pacman/pacman.c:128
+#, c-format
+msgid ""
+" -s, --search <regex> search remote repositories for matching strings\n"
+msgstr ""
+" -s, --search <regex> przeszukuje zdalne repozytoria wedle pasujÄ…cych "
+"ciągów\n"
+
+#: src/pacman/pacman.c:129
+#, c-format
+msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
+msgstr " -u, --sysupgrade uaktualnia wszystkie niektualne pakiety\n"
+
+#: src/pacman/pacman.c:130
+#, c-format
+msgid ""
+" -w, --downloadonly download packages but do not install/upgrade "
+"anything\n"
+msgstr ""
+" -w, --downloadonly pobiera jedynie pakiety bez instalacji/"
+"uaktualnianiaczegokolwiek\n"
+
+#: src/pacman/pacman.c:131
+#, c-format
+msgid ""
+" -y, --refresh download fresh package databases from the server\n"
+msgstr " -y, --refresh pobiera świeże bazy danych pakietów z serwera\n"
+
+#: src/pacman/pacman.c:132
+#, c-format
+msgid ""
+" --needed only install outdated or not yet installed packages\n"
+msgstr ""
+
+#: src/pacman/pacman.c:133
+#, c-format
+msgid ""
+" --ignore <pkg> ignore a package upgrade (can be used more than "
+"once)\n"
+msgstr ""
+" --ignore <pkg> ignoruje uaktualnienie pakietu (może zostać użyte "
+"więcej niż raz)\n"
+
+#: src/pacman/pacman.c:134
+#, fuzzy, c-format
+msgid ""
+" --ignoregroup <grp>\n"
+" ignore a group upgrade (can be used more than once)\n"
+msgstr ""
+" --ignore <pkg> ignoruje uaktualnienie pakietu (może zostać użyte "
+"więcej niż raz)\n"
+
+#: src/pacman/pacman.c:138
+#, c-format
+msgid " --config <path> set an alternate configuration file\n"
+msgstr " --config <path> ustawia alternatywny plik konfiguracji\n"
+
+#: src/pacman/pacman.c:139
+#, fuzzy, c-format
+msgid " --logfile <path> set an alternate log file\n"
+msgstr " --config <path> ustawia alternatywny plik konfiguracji\n"
+
+#: src/pacman/pacman.c:140
+#, c-format
+msgid " --noconfirm do not ask for any confirmation\n"
+msgstr ""
+" --noconfirm nie pyta o potwierdzenie ze strony użytkownika\n"
+
+#: src/pacman/pacman.c:141
+#, c-format
+msgid ""
+" --noprogressbar do not show a progress bar when downloading files\n"
+msgstr ""
+" --noprogressbar wyłącza pasek postępu podczas pobierania plików\n"
+
+#: src/pacman/pacman.c:142
+#, fuzzy, c-format
+msgid ""
+" --noscriptlet do not execute the install scriptlet if one exists\n"
+msgstr ""
+" --noscriptlet nie wykonuje skryptu instalacyjnego jeśli takowy "
+"istnieje\n"
+
+#: src/pacman/pacman.c:143
+#, c-format
+msgid " -v, --verbose be verbose\n"
+msgstr " -v, --verbose włącza tryb wypisywania szczegółów\n"
+
+#: src/pacman/pacman.c:144
+#, c-format
+msgid " -r, --root <path> set an alternate installation root\n"
+msgstr " -r, --root <path> ustawia alternatywny cel instalacji\n"
+
+#: src/pacman/pacman.c:145
+#, c-format
+msgid " -b, --dbpath <path> set an alternate database location\n"
+msgstr " -b, --dbpath <path> ustawia alternatywnÄ… lokalizacjÄ™ bazy danych\n"
+
+#: src/pacman/pacman.c:146
+#, c-format
+msgid " --cachedir <dir> set an alternate package cache location\n"
+msgstr ""
+" --cachedir <dir> ustawia alternatywną lokalizację pliku podręcznego "
+"pakietów\n"
+
+#: src/pacman/pacman.c:159
+#, fuzzy, c-format
+msgid ""
+" This program may be freely redistributed under\n"
+" the terms of the GNU General Public License\n"
+msgstr ""
+" Ten program może być wolno rozpowszechniany na\n"
+
+#: src/pacman/pacman.c:250
+#, c-format
+msgid "problem setting rootdir '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:267
+#, c-format
+msgid "problem setting dbpath '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:275
+#, c-format
+msgid "problem setting logfile '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:384
+#, fuzzy, c-format
+msgid "'%s' is not a valid debug level\n"
+msgstr "'%s' nie jest ważnym poziomem debug'owania"
+
+#: src/pacman/pacman.c:398 src/pacman/pacman.c:677
+#, fuzzy, c-format
+msgid "problem adding cachedir '%s' (%s)\n"
+msgstr "nie udało się dodać celu '%s' (%s)\n"
+
+#: src/pacman/pacman.c:484
+msgid "only one operation may be used at a time\n"
+msgstr "tylko jedna operacja może być użyta na raz\n"
+
+#: src/pacman/pacman.c:544
+#, c-format
+msgid "config file %s could not be read.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:580
+#, c-format
+msgid "config file %s, line %d: bad section name.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:602
+#, c-format
+msgid "config file %s, line %d: syntax error in config file- missing key.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:612
+#, c-format
+msgid ""
+"config file %s, line %d: 'Include' directive must belong to a section.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:640 src/pacman/pacman.c:702 src/pacman/pacman.c:717
+#, c-format
+msgid "config file %s, line %d: directive '%s' not recognized.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:787
+#, c-format
+msgid "failed to initialize alpm library (%s)\n"
+msgstr "nie udało się zinicjalizować biblioteki alpm (%s)\n"
+
+#: src/pacman/pacman.c:824
+msgid "you cannot perform this operation unless you are root.\n"
+msgstr "tą operację wykonać można jedynie jako root.\n"
+
+#: src/pacman/pacman.c:847
+#, c-format
+msgid "could not register 'local' database (%s)\n"
+msgstr "nie udało się zarejestrować 'lokalnej' bazy danych (%s)\n"
+
+#: src/pacman/pacman.c:873
+msgid "no operation specified (use -h for help)\n"
+msgstr "nie podano żadnej operacji (użyj -h aby otrzymać pomoc)\n"
+
+#: src/pacman/query.c:67
+#, fuzzy, c-format
+msgid "error: no file was specified for --owns\n"
+msgstr "nie podano pliku dla --owns\n"
+
+#: src/pacman/query.c:80
+#, fuzzy, c-format
+msgid "error: failed to read file '%s': %s\n"
+msgstr "nie udało się odczytać pliku '%s': %s"
+
+#: src/pacman/query.c:87
+#, fuzzy, c-format
+msgid "error: cannot determine ownership of a directory\n"
+msgstr "nie można ustalić właściciela katalogu"
+
+#: src/pacman/query.c:95
+#, fuzzy, c-format
+msgid "error: cannot determine real path for '%s': %s\n"
+msgstr "nie można ustalić pełnej ścieżki dla '%s': %s"
+
+#: src/pacman/query.c:117
+#, c-format
+msgid "%s is owned by %s %s\n"
+msgstr "%s jest własnością %s %s\n"
+
+#: src/pacman/query.c:125
+#, fuzzy, c-format
+msgid "error: No package owns %s\n"
+msgstr "Żaden pakiet nie jest właścicielem %s\n"
+
+#: src/pacman/query.c:221
+#, fuzzy, c-format
+msgid "error: group \"%s\" was not found\n"
+msgstr "grupa \"%s\" nie została znaleziona\n"
+
+#: src/pacman/query.c:232
+#, fuzzy, c-format
+msgid "Checking for package upgrades... \n"
+msgstr "Sprawdzanie możliwych aktualizacji..."
+
+#: src/pacman/query.c:243
+#, fuzzy, c-format
+msgid "no upgrades found.\n"
+msgstr "żadnych aktualizacji nie znaleziono"
+
+#: src/pacman/query.c:362 src/pacman/sync.c:743
+msgid "no usable package repositories configured.\n"
+msgstr "nie skonfigurowano używalnych repozytoriów.\n"
+
+#: src/pacman/query.c:406
+#, fuzzy, c-format
+msgid "error: package \"%s\" not found\n"
+msgstr "pakiet \"%s\" nie został odnaleziony\n"
+
+#: src/pacman/remove.c:78 src/pacman/sync.c:583
+#, c-format
+msgid ":: group %s:\n"
+msgstr ":: grupa %s:\n"
+
+#: src/pacman/remove.c:80
+msgid " Remove whole content? [Y/n] "
+msgstr " Usunąć całą zawartość [T/n] "
+
+#: src/pacman/remove.c:84
+#, c-format
+msgid ":: Remove %s from group %s? [Y/n] "
+msgstr ":: Usunąć %s z grupy %s? [T/n] "
+
+#: src/pacman/remove.c:97 src/pacman/sync.c:479 src/pacman/sync.c:540
+#, fuzzy, c-format
+msgid "error: failed to init transaction (%s)\n"
+msgstr "nie udało się zainicjować transakcji (%s)\n"
+
+#: src/pacman/remove.c:113
+#, fuzzy, c-format
+msgid "error: failed to add target '%s' (%s)\n"
+msgstr "nie udało się dodać celu '%s' (%s)\n"
+
+#: src/pacman/remove.c:158 src/pacman/util.c:462
+msgid "Targets:"
+msgstr "Celuje:"
+
+#: src/pacman/remove.c:161
+msgid ""
+"\n"
+"Do you want to remove these packages? [Y/n] "
+msgstr ""
+"\n"
+"Czy chcesz usunąć te pakiety? [T/n] "
+
+#: src/pacman/sync.c:52
+#, fuzzy, c-format
+msgid "error: could not access database directory\n"
+msgstr "brak dostępu do katalogu pamięci podręcznej\n"
+
+#: src/pacman/sync.c:83
+#, fuzzy, c-format
+msgid "Do you want to remove %s? [Y/n] "
+msgstr ""
+"\n"
+"Czy chcesz usunąć te pakiety? [T/n] "
+
+#: src/pacman/sync.c:88
+#, fuzzy, c-format
+msgid "error: could not remove repository directory\n"
+msgstr "nie udało się usunąć katalogu pamięci podręcznej\n"
+
+#: src/pacman/sync.c:101
+#, c-format
+msgid "Database directory: %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:102
+#, fuzzy
+msgid "Do you want to remove unused repositories? [Y/n] "
+msgstr ""
+"\n"
+"Czy chcesz usunąć te pakiety? [T/n] "
+
+#: src/pacman/sync.c:112
+#, c-format
+msgid "Database directory cleaned up\n"
+msgstr ""
+
+#: src/pacman/sync.c:130 src/pacman/sync.c:177
+#, fuzzy, c-format
+msgid "Cache directory: %s\n"
+msgstr "Architektura : %s\n"
+
+#: src/pacman/sync.c:131
+#, fuzzy
+msgid "Do you want to remove uninstalled packages from cache? [Y/n] "
+msgstr "Czy chcesz usunąć wszystkie pakiety z pamięci podręcznej? [T/n] "
+
+#: src/pacman/sync.c:134
+#, c-format
+msgid "removing old packages from cache... "
+msgstr "usuwanie starych pakietów z pamięci podręcznej... "
+
+#: src/pacman/sync.c:138
+#, fuzzy, c-format
+msgid "error: could not access cache directory\n"
+msgstr "brak dostępu do katalogu pamięci podręcznej\n"
+
+#: src/pacman/sync.c:178
+#, fuzzy
+msgid "Do you want to remove ALL packages from cache? [Y/n] "
+msgstr "Czy chcesz usunąć stare pakiety z pamięci podręcznej? [T/n] "
+
+#: src/pacman/sync.c:181
+#, c-format
+msgid "removing all packages from cache... "
+msgstr "usuwanie wszystkich pakietów z pamięci podręcznej... "
+
+#: src/pacman/sync.c:184
+#, fuzzy, c-format
+msgid "error: could not remove cache directory\n"
+msgstr "nie udało się usunąć katalogu pamięci podręcznej\n"
+
+#: src/pacman/sync.c:189
+#, fuzzy, c-format
+msgid "error: could not create new cache directory\n"
+msgstr "nie udało się utworzyć nowego katalogu pamięci podręcznej\n"
+
+#: src/pacman/sync.c:216
+#, fuzzy, c-format
+msgid "error: failed to synchronize %s: %s\n"
+msgstr "nie udało się zsynchronizować %s: %s\n"
+
+#: src/pacman/sync.c:219
+#, fuzzy, c-format
+msgid "error: failed to update %s (%s)\n"
+msgstr "nie udało się zaktualizować %s (%s)\n"
+
+#: src/pacman/sync.c:223
+#, c-format
+msgid " %s is up to date\n"
+msgstr " %s jest już w najnowszej wersji\n"
+
+#: src/pacman/sync.c:366
+#, fuzzy, c-format
+msgid "error: repository '%s' does not exist\n"
+msgstr "repozytorium '%s' nie istnieje\n"
+
+#: src/pacman/sync.c:381
+#, fuzzy, c-format
+msgid "error: package '%s' was not found in repository '%s'\n"
+msgstr "pakiet '%s' nie został odnaleziony w repozytorium '%s'\n"
+
+#: src/pacman/sync.c:401
+#, fuzzy, c-format
+msgid "error: package '%s' was not found\n"
+msgstr "pakiet '%s' nie został odnaleziony\n"
+
+#: src/pacman/sync.c:438
+#, fuzzy, c-format
+msgid "error: repository \"%s\" was not found.\n"
+msgstr "repozytorium \"%s\" nie zostało znalezione.\n"
+
+#: src/pacman/sync.c:490
+#, c-format
+msgid ":: Synchronizing package databases...\n"
+msgstr ":: Synchronizowanie baz danych z pakietami...\n"
+
+#: src/pacman/sync.c:493
+#, fuzzy, c-format
+msgid "error: failed to synchronize any databases\n"
+msgstr "nie udało się zsynchronizować żadnych baz danych"
+
+#: src/pacman/sync.c:505
+#, c-format
+msgid ":: Starting full system upgrade...\n"
+msgstr ":: Rozpoczynanie pełnej aktualizacji systemu...\n"
+
+#: src/pacman/sync.c:526
+#, c-format
+msgid ""
+":: pacman has detected a newer version of itself.\n"
+":: It is recommended that you upgrade pacman by itself\n"
+":: using 'pacman -S pacman', and then rerun the current\n"
+":: operation. If you wish to continue the operation and\n"
+":: not upgrade pacman separately, answer no.\n"
+msgstr ""
+
+#: src/pacman/sync.c:531
+msgid ":: Cancel current operation? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:533 src/pacman/sync.c:720
+#, fuzzy, c-format
+msgid "error: failed to release transaction (%s)\n"
+msgstr "nie udało się wyswobodzić transaction (%s)\n"
+
+#: src/pacman/sync.c:545
+#, fuzzy, c-format
+msgid "error: pacman: %s\n"
+msgstr "pacman: %s\n"
+
+#: src/pacman/sync.c:569
+#, fuzzy, c-format
+msgid "error: '%s': %s\n"
+msgstr "błąd: "
+
+#: src/pacman/sync.c:588
+msgid ":: Install whole content? [Y/n] "
+msgstr ":: Zainstalować całą zawartość? [T/n] "
+
+#: src/pacman/sync.c:595
+#, c-format
+msgid ":: Install %s from group %s? [Y/n] "
+msgstr ":: Zainstalować %s z grupy %s? [T/n] "
+
+#: src/pacman/sync.c:604
+#, fuzzy, c-format
+msgid "error: '%s': not found in sync db\n"
+msgstr "'%s': nie znaleziono w bazie danych synchronizacji\n"
+
+#: src/pacman/sync.c:631
+#, fuzzy, c-format
+msgid ":: %s: conflicts with %s\n"
+msgstr ":: %s: konfliktuje z %s"
+
+#: src/pacman/sync.c:645
+#, c-format
+msgid " local database is up to date\n"
+msgstr " lokalna baza pakietów jest już w najnowszej wersji\n"
+
+#: src/pacman/sync.c:657
+#, fuzzy, c-format
+msgid "Beginning download...\n"
+msgstr ""
+"\n"
+"Rozpoczynanie pobierania...\n"
+
+#: src/pacman/sync.c:660
+msgid "Proceed with download? [Y/n] "
+msgstr "Kontynuować pobieranie? [T/n] "
+
+#: src/pacman/sync.c:664
+#, fuzzy, c-format
+msgid "Beginning upgrade process...\n"
+msgstr ""
+"\n"
+"Rozpoczynanie procesu aktualizacji...\n"
+
+#: src/pacman/sync.c:667
+msgid "Proceed with installation? [Y/n] "
+msgstr "Kontynuować instalację? [T/n] "
+
+#: src/pacman/sync.c:708
+#, fuzzy, c-format
+msgid "Errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"wystąpiły błędy, nie zaktualizowano żadnych pakietów.\n"
+
+#: src/pacman/util.c:356 src/pacman/util.c:388
+#, c-format
+msgid "None\n"
+msgstr "Żadnych\n"
+
+#: src/pacman/util.c:454
+msgid "Remove:"
+msgstr "Usunąć:"
+
+#: src/pacman/util.c:458
+#, fuzzy, c-format
+msgid "Total Removed Size: %.2f MB\n"
+msgstr ""
+"\n"
+"Całkowity rozmiar usunięć: %.2f MB\n"
+
+#: src/pacman/util.c:465
+#, fuzzy, c-format
+msgid "Total Download Size: %.2f MB\n"
+msgstr "Całkowity rozmiar po instalacji: %.2f MB\n"
+
+#: src/pacman/util.c:469
+#, c-format
+msgid "Total Installed Size: %.2f MB\n"
+msgstr "Całkowity rozmiar po instalacji: %.2f MB\n"
+
+#: src/pacman/util.c:496
+msgid "Y"
+msgstr "T"
+
+#: src/pacman/util.c:496
+msgid "YES"
+msgstr "TAK"
+
+#: src/pacman/util.c:557
+#, fuzzy, c-format
+msgid "debug: "
+msgstr "debug"
+
+#: src/pacman/util.c:560
+#, c-format
+msgid "error: "
+msgstr "błąd: "
+
+#: src/pacman/util.c:563
+#, c-format
+msgid "warning: "
+msgstr "ostrzeżenie: "
+
+#: src/pacman/util.c:568
+#, fuzzy, c-format
+msgid "function: "
+msgstr "funkcja"
+
+#: scripts/abs.sh.in:60 scripts/makepkg.sh.in:110 scripts/makepkg.sh.in:112
+#: scripts/repo-add.sh.in:50 scripts/repo-remove.sh.in:50
+msgid "ERROR:"
+msgstr ""
+
+#: scripts/abs.sh.in:65
+msgid "abs (pacman) %s - download a PKGBUILD tree from a CVS repository"
+msgstr ""
+
+#: scripts/abs.sh.in:66
+msgid "Usage %s [options] [repository...]"
+msgstr ""
+
+#: scripts/abs.sh.in:67 scripts/makepkg.sh.in:1055
+#, fuzzy
+msgid "Options:"
+msgstr "opcje:\n"
+
+#: scripts/abs.sh.in:68
+msgid " -p, --passive The connection is opened in passive mode."
+msgstr ""
+
+#: scripts/abs.sh.in:70
+msgid " -h, --help Display this help message then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:71
+msgid " -V, --version Display version information then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:73
+msgid ""
+"abs will synchronize build scripts from the CVS repository\\ninto %s. You "
+"can follow different package trees by\\nediting %s files. If no argument is "
+"given, abs\\nwill synchronize from supfiles specified in %s.\\n\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:79
+msgid "Report bugs to <%s>."
+msgstr ""
+
+#: scripts/abs.sh.in:84 scripts/gensync.sh.in:54 scripts/makepkg.sh.in:1088
+#: scripts/pacman-optimize.sh.in:59 scripts/repo-remove.sh.in:66
+msgid ""
+"Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:130 scripts/pacman-optimize.sh.in:100
+#, fuzzy
+msgid "%s does not exist or is not a directory."
+msgstr "'%s' nie jest ważnym katalogiem pamięci podręcznej\n"
+
+#: scripts/abs.sh.in:133
+msgid "You do not have write permissions in %s."
+msgstr ""
+
+#: scripts/abs.sh.in:143
+msgid "Missing CVS synchronization utility. Install csup or cvsup."
+msgstr ""
+
+#: scripts/abs.sh.in:166
+#, fuzzy
+msgid "Updating %s..."
+msgstr "aktualizowanie %s... "
+
+#: scripts/gensync.sh.in:34
+msgid "Usage: %s <root> <destfile> [package_directory]"
+msgstr ""
+
+#: scripts/gensync.sh.in:35
+msgid ""
+"gensync will generate a sync database by reading all PKGBUILD files\\nfrom "
+"<root>. gensync builds the database in a temporary directory\\nand then "
+"compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:39
+msgid ""
+"gensync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:42
+msgid ""
+"note: The <destfile> name is important. It must be of the form\\n "
+"{treename}.db.tar.gz where {treename} is the name of the custom\\n "
+"package repository you configured in /etc/pacman.conf. The\\n generated "
+"database must reside in the same directory as your\\n custom packages "
+"(also configured in /etc/pacman.conf)\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:48
+msgid "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
+msgstr ""
+
+#: scripts/gensync.sh.in:102 scripts/updatesync.sh.in:101
+msgid "%s not found. Can not continue."
+msgstr ""
+
+#: scripts/gensync.sh.in:120
+msgid "invalid root dir: %s"
+msgstr ""
+
+#: scripts/gensync.sh.in:122
+msgid "gensync: building database entries, generating md5sums..."
+msgstr ""
+
+#: scripts/gensync.sh.in:131
+#, fuzzy
+msgid "failed to parse parse %s"
+msgstr "nie udało się zaktualizować %s (%s)\n"
+
+#: scripts/gensync.sh.in:142
+msgid "could not find %s-%s-%s-%s.%s - skipping"
+msgstr ""
+
+#: scripts/gensync.sh.in:152
+#, fuzzy
+msgid "creating repo DB..."
+msgstr "czyszczenie... "
+
+#: scripts/makepkg.sh.in:101 scripts/makepkg.sh.in:103
+#: scripts/repo-add.sh.in:45 scripts/repo-remove.sh.in:45
+msgid "WARNING:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:143
+#, fuzzy
+msgid "Cleaning up..."
+msgstr "czyszczenie... "
+
+#: scripts/makepkg.sh.in:193
+msgid ""
+"Options beginning with 'no' will be deprecated in the next version of "
+"makepkg!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:194
+msgid "Please replace 'no' with '!': %s -> %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:198
+msgid "Option 'keepdocs' may not work as intended. Please replace with 'docs'."
+msgstr ""
+
+#: scripts/makepkg.sh.in:286
+msgid "There is no agent set up to handle %s URLs. Check %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:287 scripts/makepkg.sh.in:296
+#: scripts/makepkg.sh.in:448 scripts/makepkg.sh.in:476
+#: scripts/makepkg.sh.in:522 scripts/makepkg.sh.in:610
+#: scripts/makepkg.sh.in:638 scripts/makepkg.sh.in:700
+#: scripts/makepkg.sh.in:767 scripts/makepkg.sh.in:1105
+#: scripts/makepkg.sh.in:1415 scripts/makepkg.sh.in:1419
+msgid "Aborting..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:295
+msgid "The download program %s is not installed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:311
+msgid "Pacman returned a fatal error (%i): %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:335
+#, fuzzy
+msgid "Installing missing dependencies..."
+msgstr "rozwiązywanie zależności... "
+
+#: scripts/makepkg.sh.in:345
+msgid "Pacman failed to install missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:349
+#, fuzzy
+msgid "Building missing dependencies..."
+msgstr "rozwiązywanie zależności... "
+
+#: scripts/makepkg.sh.in:354
+msgid "Source root cannot be found - please make sure it is specified in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:362
+msgid "Could not find '%s' under %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:378
+#, fuzzy
+msgid "Failed to build '%s'"
+msgstr "nie udało się odczytać pliku '%s': %s"
+
+#: scripts/makepkg.sh.in:411
+msgid "Failed to install all missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:414
+#, fuzzy
+msgid "Missing Dependencies:"
+msgstr "rozwiązywanie zależności... "
+
+#: scripts/makepkg.sh.in:444
+#, fuzzy
+msgid "Retrieving Sources..."
+msgstr ":: Pobieranie pakietów z %s...\n"
+
+#: scripts/makepkg.sh.in:447
+msgid "You do not have write permission to store downloads in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:458
+msgid "Found %s in build dir"
+msgstr ""
+
+#: scripts/makepkg.sh.in:462
+msgid "Using cached copy of %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:470
+#, fuzzy
+msgid "Downloading %s..."
+msgstr "aktualizowanie %s... "
+
+#: scripts/makepkg.sh.in:475
+msgid "Failure while downloading %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:486
+#, fuzzy
+msgid "Generating checksums for source files..."
+msgstr "błąd kalkulowania sum kontrolnych dla %s\n"
+
+#: scripts/makepkg.sh.in:495
+msgid "Invalid integrity algorithm '%s' specified."
+msgstr ""
+
+#: scripts/makepkg.sh.in:500 scripts/makepkg.sh.in:552
+msgid "Cannot find the '%s' program."
+msgstr ""
+
+#: scripts/makepkg.sh.in:521
+msgid "Unable to find source file %s to generate checksum."
+msgstr ""
+
+#: scripts/makepkg.sh.in:547
+msgid "Invalid integrity algorithm '%s' specified"
+msgstr ""
+
+#: scripts/makepkg.sh.in:558
+msgid "Validating source files with %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:568
+msgid "NOT FOUND"
+msgstr ""
+
+#: scripts/makepkg.sh.in:577
+msgid "Passed"
+msgstr ""
+
+#: scripts/makepkg.sh.in:579
+msgid "FAILED"
+msgstr ""
+
+#: scripts/makepkg.sh.in:587
+msgid "One or more files did not pass the validity check!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:591
+msgid "Integrity checks (%s) are missing or incomplete."
+msgstr ""
+
+#: scripts/makepkg.sh.in:597
+msgid "Extracting Sources..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:609
+msgid "Unable to find source file %s for extraction."
+msgstr ""
+
+#: scripts/makepkg.sh.in:637
+#, fuzzy
+msgid "Failed to extract %s"
+msgstr "nie udało się przygotować transakcji (%s)\n"
+
+#: scripts/makepkg.sh.in:669
+msgid "Starting build()..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:699
+msgid "Build Failed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:708
+msgid "Tidying install..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:711
+#, fuzzy
+msgid "Removing info/doc files..."
+msgstr "rozwiązywanie zależności... "
+
+#: scripts/makepkg.sh.in:717
+msgid "Moving usr/share/man files to usr/man..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:724
+msgid "Compressing man pages..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:742
+msgid "Stripping debugging symbols from binaries and libraries..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:754
+msgid "Removing libtool .la files..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:759
+#, fuzzy
+msgid "Removing empty directories..."
+msgstr "rozwiązywanie zależności... "
+
+#: scripts/makepkg.sh.in:766
+msgid "Missing pkg/ directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:772
+#, fuzzy
+msgid "Creating package..."
+msgstr "Å‚adowanie informacji o pakietach... "
+
+#: scripts/makepkg.sh.in:782
+msgid "Generating .FILELIST file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:792
+msgid "Generating .PKGINFO file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:838
+msgid "Please add a license line to your %s!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:839
+msgid "Example for GPL'ed software: license=('GPL')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:847 scripts/makepkg.sh.in:942
+msgid "Adding install script..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:854
+#, fuzzy
+msgid "Adding package changelog..."
+msgstr "Å‚adowanie informacji o pakietach... "
+
+#: scripts/makepkg.sh.in:860
+#, fuzzy
+msgid "Compressing package..."
+msgstr "Å‚adowanie informacji o pakietach... "
+
+#: scripts/makepkg.sh.in:865
+#, fuzzy
+msgid "Failed to create package file."
+msgstr "nie udało się załadować pakietu '%s' (%s)\n"
+
+#: scripts/makepkg.sh.in:874
+msgid "Cannot find the xdelta binary! Is xdelta installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:904
+msgid "Making delta from version %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:918
+msgid "Recreating package tarball from delta to match md5 signatures"
+msgstr ""
+
+#: scripts/makepkg.sh.in:919
+msgid "NOTE: the delta should ONLY be distributed with this tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:923
+msgid "Could not generate the package from the delta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:927
+msgid "Delta was not able to be created."
+msgstr ""
+
+#: scripts/makepkg.sh.in:930
+msgid "No previous version found, skipping xdelta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:936
+#, fuzzy
+msgid "Creating source package..."
+msgstr "Sprawdzanie możliwych aktualizacji..."
+
+#: scripts/makepkg.sh.in:938 scripts/makepkg.sh.in:950
+#: scripts/makepkg.sh.in:957
+#, fuzzy
+msgid "Adding %s..."
+msgstr "aktualizowanie %s... "
+
+#: scripts/makepkg.sh.in:945
+#, fuzzy
+msgid "Install script %s not found."
+msgstr "Skrypt instalacyjny : %s\n"
+
+#: scripts/makepkg.sh.in:965
+#, fuzzy
+msgid "Compressing source package..."
+msgstr "Sprawdzanie możliwych aktualizacji..."
+
+#: scripts/makepkg.sh.in:967
+msgid "Failed to create source package file."
+msgstr ""
+
+#: scripts/makepkg.sh.in:975
+#, fuzzy
+msgid "Installing package with pacman -U..."
+msgstr "Å‚adowanie informacji o pakietach... "
+
+#: scripts/makepkg.sh.in:992
+msgid "Determining latest darcs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:995
+msgid "Determining latest cvs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:998
+msgid "Determining latest git revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1001
+msgid "Determining latest svn revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1004
+msgid "Determining latest bzr revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1007
+msgid "Determining latest hg revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1022
+#, fuzzy
+msgid "Version found: %s"
+msgstr "Wersja : %s\n"
+
+#: scripts/makepkg.sh.in:1053
+#, fuzzy
+msgid "Usage: %s [options]"
+msgstr "składnia: %s {-A --add} [options] <file>\n"
+
+#: scripts/makepkg.sh.in:1056
+msgid " -A, --ignorearch Ignore incomplete arch field in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1057
+msgid " -b, --builddeps Build missing dependencies from source"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1058
+msgid " -c, --clean Clean up work files after build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1059
+msgid " -C, --cleancache Clean up source files from the cache"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1060
+#, fuzzy
+msgid " -d, --nodeps Skip all dependency checks"
+msgstr " -d, --nodeps pomija sprawdzanie zależności\n"
+
+#: scripts/makepkg.sh.in:1061
+msgid " -e, --noextract Do not extract source files (use existing src/ dir)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1062
+#, fuzzy
+msgid " -f, --force Overwrite existing package"
+msgstr ""
+" -f, --force wymusza instalacjÄ™, nadpisujÄ…c konfliktujÄ…ce pliki\n"
+
+#: scripts/makepkg.sh.in:1063
+msgid " -g, --geninteg Generate integrity checks for source files"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1064
+msgid " -h, --help This help"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1065
+msgid " -i, --install Install package after successful build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1066
+#, fuzzy
+msgid " -L, --log Log package build process"
+msgstr " -i, --info wyświetla informację o pakiecie\n"
+
+#: scripts/makepkg.sh.in:1067
+msgid " -m, --nocolor Disable colorized output messages"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1068
+msgid " -o, --nobuild Download and extract files only"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1069
+msgid " -p <buildscript> Use an alternate build script (instead of '%s')"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1070
+#, fuzzy
+msgid ""
+" -r, --rmdeps Remove installed dependencies after a successful build"
+msgstr " -e, --dependsonly instaluje tylko zależności\n"
+
+#: scripts/makepkg.sh.in:1072
+msgid " -R, --repackage Repackage contents of pkg/ without building"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1073
+#, fuzzy
+msgid " -s, --syncdeps Install missing dependencies with pacman"
+msgstr " -e, --dependsonly instaluje tylko zależności\n"
+
+#: scripts/makepkg.sh.in:1074
+msgid " --asroot Allow makepkg to run as root user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1075
+msgid " --source Do not build package; generate a source-only tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1077
+msgid "These options can be passed to pacman:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1079
+#, fuzzy
+msgid ""
+" --noconfirm Do not ask for confirmation when resolving "
+"dependencies"
+msgstr ""
+" --noconfirm nie pyta o potwierdzenie ze strony użytkownika\n"
+
+#: scripts/makepkg.sh.in:1080
+#, fuzzy
+msgid ""
+" --noprogressbar Do not show a progress bar when downloading files"
+msgstr ""
+" --noprogressbar wyłącza pasek postępu podczas pobierania plików\n"
+
+#: scripts/makepkg.sh.in:1082
+msgid "If -p is not specified, makepkg will look for '%s'"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1104
+#, fuzzy
+msgid "%s not found."
+msgstr "pakiet \"%s\" nie został odnaleziony\n"
+
+#: scripts/makepkg.sh.in:1177
+msgid "Sudo is used by default now. The --usesudo option is deprecated!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1192
+msgid "Cleaning up ALL files from %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1193
+msgid " Are you sure you wish to do this? [Y/n] "
+msgstr ""
+
+#: scripts/makepkg.sh.in:1199
+msgid "Problem removing files; you may not have correct permissions in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1203
+msgid "Source cache cleaned."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1208
+msgid "No files have been removed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1213
+msgid "Source destination must be defined in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1214
+msgid "In addition, please run makepkg -C outside of your cache directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1220
+msgid "BUILDSCRIPT is undefined! Ensure you have updated %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1227
+msgid "Running makepkg as root is a BAD idea and can cause"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1228
+msgid "permanent, catastrophic damage to your system. If you"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1229
+msgid "wish to run as root, please use the --asroot option."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1233
+msgid "The --asroot option is meant for the root user only."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1234
+msgid "Please rerun makepkg without the --asroot flag."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1238
+msgid "Fakeroot must be installed if using the 'fakeroot' option"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1239
+msgid "in the BUILDENV array in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1243
+msgid "Running makepkg as an unprivileged user will result in non-root"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1244
+msgid "ownership of the packaged files. Try using the fakeroot environment by"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1245
+msgid "placing 'fakeroot' in the BUILDENV array in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1250
+msgid "Do not use the '-F' option. This option is only for use by makepkg."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1259
+msgid "Cannot find the sudo binary! Is sudo installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1260
+msgid "Missing dependencies cannot be installed or removed as a normal user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1261
+msgid "without sudo; install and configure sudo to auto-resolve dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1271
+#, fuzzy
+msgid "%s does not exist."
+msgstr "repozytorium '%s' nie istnieje\n"
+
+#: scripts/makepkg.sh.in:1286 scripts/makepkg.sh.in:1290
+#, fuzzy
+msgid "%s is not allowed to be empty."
+msgstr "'%s' nie jest ważną ścieżką db (bazy danych)\n"
+
+#: scripts/makepkg.sh.in:1294 scripts/makepkg.sh.in:1298
+msgid "%s is not allowed to contain hyphens."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1308 scripts/makepkg.sh.in:1313
+msgid "%s is not available for the '%s' architecture."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1309 scripts/makepkg.sh.in:1314
+msgid "Note that many packages may need a line added to their %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1310 scripts/makepkg.sh.in:1315
+msgid "such as arch=('%s')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1320
+#, fuzzy
+msgid "Install scriptlet (%s) does not exist."
+msgstr "repozytorium '%s' nie istnieje\n"
+
+#: scripts/makepkg.sh.in:1330
+msgid "A package has already been built, installing existing package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1334 scripts/makepkg.sh.in:1366
+msgid "A package has already been built. (use -f to overwrite)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1343 scripts/makepkg.sh.in:1442
+msgid "Skipping build."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1352
+msgid "Leaving fakeroot environment."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1356
+#, fuzzy
+msgid "Making package: %s"
+msgstr "Å‚adowanie informacji o pakietach... "
+
+#: scripts/makepkg.sh.in:1359
+msgid "Running makepkg as root..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1370
+msgid "Source package created: %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1377
+#, fuzzy
+msgid "Skipping dependency checks."
+msgstr "sprawdzanie zależności... "
+
+#: scripts/makepkg.sh.in:1384
+#, fuzzy
+msgid "Checking Runtime Dependencies..."
+msgstr "sprawdzanie zależności... "
+
+#: scripts/makepkg.sh.in:1387
+#, fuzzy
+msgid "Checking Buildtime Dependencies..."
+msgstr "sprawdzanie zależności... "
+
+#: scripts/makepkg.sh.in:1391
+#, fuzzy
+msgid "Could not resolve all dependencies."
+msgstr "rozwiązywanie zależności... "
+
+#: scripts/makepkg.sh.in:1395
+msgid "pacman was not found in PATH; skipping dependency checks."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1409
+msgid "Skipping source retrieval -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1410
+msgid "Skipping source integrity checks -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1411
+msgid "Skipping source extraction -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1414
+msgid "The source directory is empty, there is nothing to build!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1418
+msgid "The package directory is empty, there is nothing to repackage!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1429
+msgid "Sources are ready."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1434
+msgid "Removing existing pkg/ directory..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1451
+msgid "Entering fakeroot environment..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1464
+msgid "Finished making: %s"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:44
+msgid "Usage: %s [pacman_db_root]"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:45
+msgid ""
+"pacman-optimize is a little hack that should improve the performance\\nof "
+"pacman when reading/writing to its filesystem-based database.\\n\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:48
+msgid ""
+"Because pacman uses many small files to keep track of packages,\\nthere is a "
+"tendency for these files to become fragmented over time.\\nThis script "
+"attempts to relocate these small files into one\\ncontinuous location on "
+"your hard drive. The result is that the hard\\ndrive should be able to read "
+"them faster, since the hard drive head\\ndoes not have to move around the "
+"disk as much.\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:91
+msgid "diff tool was not found, please install diffutils."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:96
+msgid "Pacman lock file was found. Cannot run while pacman is running."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:104
+msgid "You must have correct permissions to optimize the database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:108
+msgid "ERROR: Can not create temp directory for database building."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:114
+msgid "MD5sum'ing the old database..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:118
+#, fuzzy
+msgid "Tar'ing up %s..."
+msgstr "czyszczenie... "
+
+#: scripts/pacman-optimize.sh.in:123
+msgid "Tar'ing up %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:127
+msgid "Making and MD5sum'ing the new db..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:132
+msgid "Untar'ing %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:138
+#, fuzzy
+msgid "Checking integrity..."
+msgstr "sprawdzanie spójności pakietów... "
+
+#: scripts/pacman-optimize.sh.in:144
+msgid "Integrity check FAILED, reverting to old database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:149
+msgid "Putting the new database in place..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:158
+msgid "Finished. Your pacman database has been optimized."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:159
+msgid "For full benefits of pacman-optimize, run 'sync' now."
+msgstr ""
+
+#: scripts/repo-add.sh.in:56
+msgid "Usage: %s <path-to-db> [--force] <package> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:57
+msgid ""
+"repo-add will update a package database by reading a package file."
+"\\nMultiple packages to add can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:60
+msgid ""
+"The --force flag will add a 'force' entry to the sync database, which"
+"\\ntells pacman to skip its internal version number checking and update"
+"\\nthe package regardless.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:64
+msgid "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
+msgstr ""
+
+#: scripts/repo-add.sh.in:69
+msgid ""
+"Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:173
+msgid "Invalid package file '%s'."
+msgstr ""
+
+#: scripts/repo-add.sh.in:182 scripts/repo-remove.sh.in:91
+#, fuzzy
+msgid "Removing existing package '%s'..."
+msgstr ":: Pobieranie pakietów z %s...\n"
+
+#: scripts/repo-add.sh.in:192
+msgid "Creating 'desc' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:202
+msgid "Computing md5 checksums..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:214
+#, fuzzy
+msgid "Creating 'depends' db entry..."
+msgstr "rozwiązywanie zależności... "
+
+#: scripts/repo-add.sh.in:230
+msgid "Creating 'deltas' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:236
+msgid "Added delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:238
+msgid "Could not add delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:276 scripts/repo-remove.sh.in:123
+msgid "%s not found. Cannot continue."
+msgstr ""
+
+#: scripts/repo-add.sh.in:286 scripts/repo-remove.sh.in:133
+msgid "Cannot create temp directory for database building."
+msgstr ""
+
+#: scripts/repo-add.sh.in:297 scripts/repo-remove.sh.in:142
+msgid "Repository file '%s' is not a proper pacman database."
+msgstr ""
+
+#: scripts/repo-add.sh.in:300 scripts/repo-remove.sh.in:145
+msgid "Extracting database to a temporary location..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:306
+msgid "'%s' is not a package file, skipping"
+msgstr ""
+
+#: scripts/repo-add.sh.in:308
+#, fuzzy
+msgid "Adding package '%s'"
+msgstr "Å‚adowanie informacji o pakietach... "
+
+#: scripts/repo-add.sh.in:315
+#, fuzzy
+msgid "Package '%s' not found."
+msgstr "pakiet '%s' nie został odnaleziony\n"
+
+#: scripts/repo-add.sh.in:322
+msgid "Creating updated database file %s"
+msgstr ""
+
+#: scripts/repo-add.sh.in:332 scripts/repo-remove.sh.in:170
+msgid "No compression set."
+msgstr ""
+
+#: scripts/repo-add.sh.in:340 scripts/repo-remove.sh.in:178
+msgid "No packages modified, nothing to do."
+msgstr ""
+
+#: scripts/repo-remove.sh.in:55
+msgid "repo-remove %s\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:56
+msgid "usage: %s <path-to-db> <packagename> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:57
+msgid ""
+"repo-remove will update a package database by removing the package name"
+"\\nspecified on the command line from the given repo database. Multiple"
+"\\npackages to remove can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:61
+msgid "Example: repo-remove /path/to/repo.db.tar.gz kernel26"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:149
+#, fuzzy
+msgid "Searching for package '%s'..."
+msgstr "Sprawdzanie możliwych aktualizacji..."
+
+#: scripts/repo-remove.sh.in:154
+#, fuzzy
+msgid "Package matching '%s' not found."
+msgstr "pakiet '%s' nie został odnaleziony\n"
+
+#: scripts/repo-remove.sh.in:161
+msgid "Creating updated database file '%s'..."
+msgstr ""
+
+#: scripts/updatesync.sh.in:35
+msgid "Usage: %s <action> <destfile> <option> [package_directory]"
+msgstr ""
+
+#: scripts/updatesync.sh.in:36
+msgid ""
+"updatesync will update a sync database by reading a PKGBUILD and\\nmodifying "
+"the destfile. updatesync updates the database in a temporary\\ndirectory and "
+"then compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:40
+msgid "There are two types of actions:\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:41
+msgid ""
+"upd - Will update a package's entry or create it if it doesn't exist."
+"\\n It takes the package's PKGBUILD as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:42
+msgid ""
+"del - Will remove a package's entry from the db. It takes the package's"
+"\\n name as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:44
+msgid ""
+"updatesync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:47
+msgid "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
+msgstr ""
+
+#: scripts/updatesync.sh.in:53
+msgid ""
+"Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:123
+#, fuzzy
+msgid "%s not found"
+msgstr "pakiet \"%s\" nie został odnaleziony\n"
+
+#: scripts/updatesync.sh.in:129
+#, fuzzy
+msgid "failed to parse %s"
+msgstr "nie udało się przeczytać pliku konfiguracji (%s)\n"
+
+#: scripts/updatesync.sh.in:136
+msgid "could not find %s-%s-%s-%s.%s - aborting"
+msgstr ""
+
+#~ msgid ":: %.1f MB required, have %.1f MB"
+#~ msgstr ":: %.1f MB wymagane, dostępnych %.1f MB"
+
+#~ msgid "error"
+#~ msgstr "błąd"
+
+#~ msgid "warning"
+#~ msgstr "ostrzeżenie"
+
+#~ msgid "Removes :"
+#~ msgstr "Usuwa :"
+
+#~ msgid "Build Type : %s\n"
+#~ msgstr "Typ budowy : %s\n"
+
+#~ msgid "SHA1 Sum : %s"
+#~ msgstr "Suma SHA1 : %s"
+
+#~ msgid "usage: %s {-R --remove} [options] <package>\n"
+#~ msgstr "składnia: %s {-R --remove} [opcje] <package>\n"
+
+#~ msgid ""
+#~ " --ask <number> pre-specify answers for questions (see manpage)\n"
+#~ msgstr ""
+#~ " --ask <number> zadaje pytania z góry (zobacz stronę podręcznika)\n"
+
+#~ msgid "'%s' is not a valid root path\n"
+#~ msgstr "'%s' nie jest ważną ścieżką docelową\n"
+
+#~ msgid "Targets :"
+#~ msgstr "Cele :"
+
+#~ msgid "no package file was specified for --file\n"
+#~ msgstr "nie podano pliku pakietu dla --file\n"
+
+#~ msgid ":: %s is required by %s\n"
+#~ msgstr ":: %s jest wymagane przez %s\n"
+
+#~ msgid "synchronizing package lists"
+#~ msgstr "synchronizowanie list pakietów"
+
+#~ msgid "starting full system upgrade"
+#~ msgstr "rozpoczynanie pełnej aktualizacji systemu"
+
+#~ msgid ""
+#~ "\n"
+#~ ":: pacman has detected a newer version of the \"pacman\" package.\n"
+#~ msgstr ""
+#~ "\n"
+#~ ":: pacman wykrył nowszą wersję pakietu \"pacman\".\n"
+
+#~ msgid ":: It is recommended that you allow pacman to upgrade itself\n"
+#~ msgstr ":: Rekomendowane jest ażeby pozwolić pacman'owi zaktualizować się\n"
+
+#~ msgid ""
+#~ ":: first, then you can re-run the operation with the newer version.\n"
+#~ msgstr ":: najpierw, po czym uruchomić ponownie operację z nowszą wersją.\n"
+
+#~ msgid ":: Upgrade pacman first? [Y/n] "
+#~ msgstr ":: Zaktualizować pacman'a najpierw? [T/n] "
+
+#~ msgid "requires"
+#~ msgstr "wymaga"
+
+#~ msgid "installed %s (%s)"
+#~ msgstr "zainstalowano %s (%s)"
+
+#~ msgid "removed %s (%s)"
+#~ msgstr "usunięto %s (%s)"
+
+#~ msgid "upgraded %s (%s -> %s)"
+#~ msgstr "zaktualizowano %s (%s -> %s)"
+
+#~ msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
+#~ msgstr ""
+#~ ":: %s-%s: lokalny pakiet jest już w najnowszej wersji. Aktualizować mimo "
+#~ "tego? [T/n] "
+
+#~ msgid ""
+#~ "\n"
+#~ "Total Package Size: %.2f MB\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Całkowity rozmiar pakietów: %.2f MB\n"
+
+#~ msgid "requires: %s"
+#~ msgstr "wymaga: %s"
+
+#~ msgid "usage: %s {-h --help}\n"
+#~ msgstr "składnia: %s {-h --help}\n"
+
+#~ msgid " %s {-V --version}\n"
+#~ msgstr " %s {-V --version}\n"
+
+#~ msgid " %s {-A --add} [options] <file>\n"
+#~ msgstr " %s {-A --add} [opcje] <file>\n"
+
+#~ msgid " %s {-F --freshen} [options] <file>\n"
+#~ msgstr " %s {-F --freshen} [opcje] <file>\n"
+
+#~ msgid " %s {-Q --query} [options] [package]\n"
+#~ msgstr " %s {-Q --query} [opcje] [pakiet]\n"
+
+#~ msgid " %s {-R --remove} [options] <package>\n"
+#~ msgstr " %s {-R --remove} [opcje] <package>\n"
+
+#~ msgid " %s {-S --sync} [options] [package]\n"
+#~ msgstr " %s {-S --sync} [opcje] [pakiet]\n"
+
+#~ msgid " %s {-U --upgrade} [options] <file>\n"
+#~ msgstr " %s {-U --upgrade} [opcje] <file>\n"
+
+#~ msgid "usage: %s {-F --freshen} [options] <file>\n"
+#~ msgstr "składnia: %s {-F --freshen} [opcje] <file>\n"
+
+#~ msgid "usage: %s {-U --upgrade} [options] <file>\n"
+#~ msgstr "składnia: %s {-U --upgrade} [opcje] <file>\n"
+
+#~ msgid "usage: %s {-Q --query} [options] [package]\n"
+#~ msgstr "składnia: %s {-Q --query} [opcje] [pakiet]\n"
+
+#~ msgid " required by any package\n"
+#~ msgstr " wymagane już przez jakikolwiek pakiet\n"
+
+#~ msgid "usage: %s {-S --sync} [options] [package]\n"
+#~ msgstr "składnia: %s {-S --sync} [opcje] [paczka]\n"
+
+#~ msgid " the terms of the GNU General Public License\n"
+#~ msgstr " zasadach Licencji Publicznej GNU (GPL)\n"
+
+#~ msgid "warning: current locale is invalid; using default \"C\" locale"
+#~ msgstr ""
+#~ "ostrzeżenie: ustawione locale jest niewłaściwe; używanie locale \"C\""
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 00000000..3000885b
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,2325 @@
+# translation of pt_BR.po to Português do Brasil
+# Brazilian Portuguese translations for Pacman package manager package.
+# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
+# This file is distributed under the same license as the Pacman package manager package.
+#
+# Douglas Soares de Andrade <douglas@archlinux-br.org>, 2007.
+# Hugo Doria <hugodoria@archlinux-br.org>, 2007.
+# Lincoln de Sousa <lincoln@archlinux-br.org>, 2007.
+# Leandro Inácio <leandro@archlinux-br.org>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: pt_BR\n"
+"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: 2007-03-22 13:52-0300\n"
+"Last-Translator: Douglas Soares de Andrade <douglas@archlinux-br.org>\n"
+"Language-Team: Archlinux-br <contato@archlinux-br.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: src/pacman/add.c:42 src/pacman/remove.c:44
+#, c-format
+msgid "failed to release transaction (%s)\n"
+msgstr "falha ao liberar a transação (%s)\n"
+
+#: src/pacman/add.c:79 src/pacman/query.c:372 src/pacman/remove.c:65
+#: src/pacman/sync.c:753
+msgid "no targets specified (use -h for help)\n"
+msgstr "nenhum arquivo definido (use -h para obter ajuda)\n"
+
+#: src/pacman/add.c:106 src/pacman/sync.c:508
+#, fuzzy, c-format
+msgid "error: %s\n"
+msgstr "erro: "
+
+#: src/pacman/add.c:109 src/pacman/remove.c:100 src/pacman/sync.c:482
+#, fuzzy, c-format
+msgid ""
+" if you're sure a package manager is not already\n"
+" running, you can remove %s.\n"
+msgstr ""
+" caso tenha certeza que nenhum gerenciador de pacotes está rodando,\n"
+" você pode remover %s%s\n"
+
+#: src/pacman/add.c:116 src/pacman/remove.c:108
+#, c-format
+msgid "loading package data... "
+msgstr "carregando informações do pacote... "
+
+#: src/pacman/add.c:120
+#, fuzzy, c-format
+msgid "error: failed to add target '%s' (%s)"
+msgstr "falha com o parametro'%s' (%s)"
+
+#: src/pacman/add.c:126 src/pacman/remove.c:120 src/pacman/sync.c:174
+#: src/pacman/sync.c:192
+#, c-format
+msgid "done.\n"
+msgstr "concluído.\n"
+
+#: src/pacman/add.c:131 src/pacman/remove.c:124 src/pacman/sync.c:614
+#, fuzzy, c-format
+msgid "error: failed to prepare transaction (%s)\n"
+msgstr "falha ao preparar transação (%s)\n"
+
+#: src/pacman/add.c:143 src/pacman/remove.c:132 src/pacman/sync.c:623
+#, fuzzy, c-format
+msgid ":: %s: requires %s\n"
+msgstr ":: %s: requer %s"
+
+#: src/pacman/add.c:151
+#, c-format
+msgid ":: %s: conflicts with %s"
+msgstr ":: %s: conflita com %s"
+
+#: src/pacman/add.c:160 src/pacman/sync.c:686
+#, c-format
+msgid "%s exists in both '%s' and '%s'\n"
+msgstr "%s existe em '%s' e em '%s'\n"
+
+#: src/pacman/add.c:166 src/pacman/sync.c:692
+#, c-format
+msgid "%s: %s exists in filesystem\n"
+msgstr "%s: %s existe no sistema de arquivos\n"
+
+#: src/pacman/add.c:172
+#, c-format
+msgid ""
+"\n"
+"errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"ocorreram alguns erros, portanto, nenhum pacote foi atualizado.\n"
+
+#: src/pacman/add.c:186 src/pacman/remove.c:171 src/pacman/sync.c:677
+#, fuzzy, c-format
+msgid "error: failed to commit transaction (%s)\n"
+msgstr "falha ao terminar a transação (%s)\n"
+
+#: src/pacman/callback.c:163
+#, fuzzy, c-format
+msgid "checking dependencies...\n"
+msgstr "verificando dependências... "
+
+#: src/pacman/callback.c:167
+#, fuzzy, c-format
+msgid "checking for file conflicts...\n"
+msgstr "verificando conflitos de arquivos... "
+
+#: src/pacman/callback.c:171
+#, fuzzy, c-format
+msgid "resolving dependencies...\n"
+msgstr "resolvendo dependências... "
+
+#: src/pacman/callback.c:174
+#, fuzzy, c-format
+msgid "looking for inter-conflicts...\n"
+msgstr "procurando por conflitos internos... "
+
+#: src/pacman/callback.c:178
+#, fuzzy, c-format
+msgid "installing %s...\n"
+msgstr "instalando %s... "
+
+#: src/pacman/callback.c:189
+#, fuzzy, c-format
+msgid "removing %s...\n"
+msgstr "removendo %s... "
+
+#: src/pacman/callback.c:200
+#, fuzzy, c-format
+msgid "upgrading %s...\n"
+msgstr "atualizando %s... "
+
+#: src/pacman/callback.c:211
+#, fuzzy, c-format
+msgid "checking package integrity...\n"
+msgstr "verificando a integridade do pacote... "
+
+#: src/pacman/callback.c:214
+#, fuzzy, c-format
+msgid "checking delta integrity...\n"
+msgstr "verificando a integridade do pacote... "
+
+#: src/pacman/callback.c:217
+#, c-format
+msgid "applying deltas...\n"
+msgstr ""
+
+#: src/pacman/callback.c:220
+#, fuzzy, c-format
+msgid "generating %s with %s... "
+msgstr "atualizando %s... "
+
+#: src/pacman/callback.c:223
+#, c-format
+msgid "success!\n"
+msgstr ""
+
+#: src/pacman/callback.c:226
+#, c-format
+msgid "failed.\n"
+msgstr "falhou.\n"
+
+#: src/pacman/callback.c:235
+#, c-format
+msgid ":: Retrieving packages from %s...\n"
+msgstr ":: Obtendo pacotes do repositório %s...\n"
+
+#: src/pacman/callback.c:263
+#, fuzzy, c-format
+msgid ""
+":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway? [Y/"
+"n] "
+msgstr ""
+":: %1$s requer %2$s, mas ele está em IgnorePkg. Instalar %2$s assim mesmo? "
+"[S/n] "
+
+#: src/pacman/callback.c:268
+#, fuzzy, c-format
+msgid ":: %s is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+msgstr ""
+"::O pacote %s está na lista de pacotes ignorados (IgnorePkg). Instalar assim "
+"mesmo? [S/n] "
+
+#: src/pacman/callback.c:274
+#, c-format
+msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
+msgstr ":: %s é designado como um HoldPkg Remover assim mesmo? [S/n] "
+
+#: src/pacman/callback.c:279
+#, c-format
+msgid ":: Replace %s with %s/%s? [Y/n] "
+msgstr ":: Substituir %s com %s/%s? [S/n] "
+
+#: src/pacman/callback.c:286
+#, c-format
+msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
+msgstr ":: %s conflita com %s. Remover %s? [S/n] "
+
+#: src/pacman/callback.c:294
+#, c-format
+msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
+msgstr ""
+":: %s-%s: a versão local é mais recente. Deseja atualizar mesmo assim? [S/n] "
+
+#: src/pacman/callback.c:304
+#, fuzzy, c-format
+msgid ":: File %s is corrupted. Do you want to delete it? [Y/n] "
+msgstr ":: Arquivo %s está corrompido. Você gostaria de apagá-lo? [S/n] "
+
+#: src/pacman/callback.c:354
+msgid "installing"
+msgstr "instalando"
+
+#: src/pacman/callback.c:357
+msgid "upgrading"
+msgstr "atualizando"
+
+#: src/pacman/callback.c:360
+msgid "removing"
+msgstr "removendo"
+
+#: src/pacman/callback.c:363
+msgid "checking for file conflicts"
+msgstr "verificando conflitos de arquivo"
+
+#: src/pacman/package.c:68
+msgid "Explicitly installed"
+msgstr "Explicitamente Instalado"
+
+#: src/pacman/package.c:71
+msgid "Installed as a dependency for another package"
+msgstr "Instalado como dependência de outro pacote"
+
+#: src/pacman/package.c:74
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: src/pacman/package.c:89
+msgid "Description : "
+msgstr "Descrição : "
+
+#: src/pacman/package.c:93
+#, fuzzy
+msgid "Filename :"
+msgstr "Licença :"
+
+#: src/pacman/package.c:95
+#, fuzzy
+msgid "Name :"
+msgstr "Nome : %s\n"
+
+#: src/pacman/package.c:96
+#, fuzzy
+msgid "Version :"
+msgstr "Versão : %s\n"
+
+#: src/pacman/package.c:97
+#, fuzzy
+msgid "URL :"
+msgstr "URL : %s\n"
+
+#: src/pacman/package.c:98
+#, fuzzy
+msgid "Licenses :"
+msgstr "Licença :"
+
+#: src/pacman/package.c:99
+msgid "Groups :"
+msgstr "Grupos :"
+
+#: src/pacman/package.c:100
+msgid "Provides :"
+msgstr "Provê :"
+
+#: src/pacman/package.c:101
+msgid "Depends On :"
+msgstr "Depende de :"
+
+#: src/pacman/package.c:102
+msgid "Optional Deps :"
+msgstr ""
+
+#: src/pacman/package.c:105
+msgid "Required By :"
+msgstr "Requerido Por :"
+
+#: src/pacman/package.c:108
+msgid "Conflicts With :"
+msgstr "Conflita Com :"
+
+#: src/pacman/package.c:109
+msgid "Replaces :"
+msgstr "Substitui :"
+
+#: src/pacman/package.c:111
+#, c-format
+msgid "Download Size : %6.2f K\n"
+msgstr "Tamanho do Download : %6.2f K\n"
+
+#: src/pacman/package.c:115
+#, fuzzy, c-format
+msgid "Compressed Size: %6.2f K\n"
+msgstr "Tamanho Instalado : %6.2f K\n"
+
+#: src/pacman/package.c:119
+#, c-format
+msgid "Installed Size : %6.2f K\n"
+msgstr "Tamanho Instalado : %6.2f K\n"
+
+#: src/pacman/package.c:121
+#, fuzzy
+msgid "Packager :"
+msgstr "Empacotador : %s\n"
+
+#: src/pacman/package.c:122
+#, fuzzy
+msgid "Architecture :"
+msgstr "Arquitetura : %s\n"
+
+#: src/pacman/package.c:123
+#, fuzzy
+msgid "Build Date :"
+msgstr "Compilado em : %s %s\n"
+
+#: src/pacman/package.c:125
+#, fuzzy
+msgid "Install Date :"
+msgstr "Data da Instalação : %s %s\n"
+
+#: src/pacman/package.c:126
+#, fuzzy
+msgid "Install Reason :"
+msgstr "Razão da instalação : %s\n"
+
+#: src/pacman/package.c:129
+#, fuzzy
+msgid "Install Script :"
+msgstr "Script de Instalação : %s\n"
+
+#: src/pacman/package.c:130
+msgid "Yes"
+msgstr "Sim"
+
+#: src/pacman/package.c:130
+msgid "No"
+msgstr "Não"
+
+#: src/pacman/package.c:135
+#, fuzzy
+msgid "MD5 Sum :"
+msgstr "Soma MD5 : %s"
+
+#: src/pacman/package.c:159
+#, fuzzy
+msgid "Repository :"
+msgstr "Repositório : %s\n"
+
+#: src/pacman/package.c:169
+#, c-format
+msgid "Backup Files:\n"
+msgstr "Arquivos de Backup:\n"
+
+#: src/pacman/package.c:189
+#, fuzzy, c-format
+msgid "error: could not calculate checksums for %s\n"
+msgstr "erro ao calcular as somas de verificação para %s\n"
+
+#: src/pacman/package.c:197
+#, c-format
+msgid "MODIFIED\t%s\n"
+msgstr "MODIFICADO\t%s\n"
+
+#: src/pacman/package.c:199
+#, c-format
+msgid "Not Modified\t%s\n"
+msgstr "Não modificado\t%s\n"
+
+#: src/pacman/package.c:203
+#, c-format
+msgid "MISSING\t\t%s\n"
+msgstr "NÃO ENCONTRADO\t\t%s\n"
+
+#: src/pacman/package.c:209
+#, c-format
+msgid "(none)\n"
+msgstr "(Nenhum)\n"
+
+#: src/pacman/package.c:244
+#, fuzzy, c-format
+msgid "error: no changelog available for '%s'.\n"
+msgstr "changelog não disponível para '%s'.\n"
+
+#: src/pacman/pacman.c:62
+#, fuzzy
+msgid "options"
+msgstr "opções:\n"
+
+#: src/pacman/pacman.c:63
+#, fuzzy
+msgid "file"
+msgstr "falhou.\n"
+
+#: src/pacman/pacman.c:64
+msgid "package"
+msgstr ""
+
+#: src/pacman/pacman.c:65
+msgid "usage"
+msgstr ""
+
+#: src/pacman/pacman.c:66
+#, fuzzy
+msgid "operation"
+msgstr "opções:\n"
+
+#: src/pacman/pacman.c:78
+#, c-format
+msgid ""
+"\n"
+"use '%s --help' with other options for more syntax\n"
+msgstr ""
+"\n"
+"use '%s --help' com outras opções para mais sintaxes\n"
+
+#: src/pacman/pacman.c:83 src/pacman/pacman.c:97 src/pacman/pacman.c:119
+#, fuzzy, c-format
+msgid " --asdeps install packages as non-explicitly installed\n"
+msgstr ""
+" -u, --upgrades lista todos os pacotes que podem ser atualizados\n"
+
+#: src/pacman/pacman.c:84 src/pacman/pacman.c:90 src/pacman/pacman.c:98
+#: src/pacman/pacman.c:121
+#, c-format
+msgid " -d, --nodeps skip dependency checks\n"
+msgstr " -d, --nodeps ignora a verificação de dependências\n"
+
+#: src/pacman/pacman.c:85 src/pacman/pacman.c:99 src/pacman/pacman.c:123
+#, c-format
+msgid " -f, --force force install, overwrite conflicting files\n"
+msgstr ""
+" -f, --force forçar instalação, sobrescrever arquivos "
+"conflitantes\n"
+
+#: src/pacman/pacman.c:89
+#, c-format
+msgid ""
+" -c, --cascade remove packages and all packages that depend on them\n"
+msgstr " -c, --cascade remove pacotes e suas dependências\n"
+
+#: src/pacman/pacman.c:91
+#, c-format
+msgid ""
+" -k, --dbonly only remove database entry, do not remove files\n"
+msgstr ""
+" -k, --dbonly remove apenas a entrada na base de dados, mas não "
+"remove os arquivos\n"
+
+#: src/pacman/pacman.c:92
+#, c-format
+msgid " -n, --nosave remove configuration files as well\n"
+msgstr " -n, --nosave remove os arquivos de configuração\n"
+
+#: src/pacman/pacman.c:93
+#, c-format
+msgid ""
+" -s, --recursive remove dependencies also (that won't break packages)\n"
+msgstr ""
+" -s, --recursive remove também as dependências (aquelas que não vão "
+"quebrar outros pacotes)\n"
+
+#: src/pacman/pacman.c:103
+#, c-format
+msgid " -c, --changelog view the changelog of a package\n"
+msgstr " -c, --changelog visualiza o changelog de um pacote\n"
+
+#: src/pacman/pacman.c:104
+#, fuzzy, c-format
+msgid " -d, --deps list all packages installed as dependencies\n"
+msgstr ""
+" -u, --upgrades lista todos os pacotes que podem ser atualizados\n"
+
+#: src/pacman/pacman.c:105
+#, fuzzy, c-format
+msgid " -e, --explicit list all packages explicitly installed\n"
+msgstr ""
+" -u, --upgrades lista todos os pacotes que podem ser atualizados\n"
+
+#: src/pacman/pacman.c:106 src/pacman/pacman.c:124
+#, c-format
+msgid " -g, --groups view all members of a package group\n"
+msgstr ""
+" -g, --groups visualiza todos os membros de um grupos de pacotes\n"
+
+#: src/pacman/pacman.c:107
+#, fuzzy, c-format
+msgid ""
+" -i, --info view package information (-ii for backup files)\n"
+msgstr " -i, --info visualiza informações do pacote\n"
+
+#: src/pacman/pacman.c:108
+#, c-format
+msgid " -l, --list list the contents of the queried package\n"
+msgstr " -l, --list lista o conteúdo do pacote pesquisado\n"
+
+#: src/pacman/pacman.c:109
+#, c-format
+msgid ""
+" -m, --foreign list installed packages not found in sync db(s)\n"
+msgstr ""
+" -m, --foreign lista todos os pacotes que não foram encontrados na"
+"(s) base(s) de dados de pacotes\n"
+
+#: src/pacman/pacman.c:110
+#, c-format
+msgid " -o, --owns <file> query the package that owns <file>\n"
+msgstr " -o, --owns <arquivo> pesquisa o pacote que contém <arquivo>\n"
+
+#: src/pacman/pacman.c:111
+#, c-format
+msgid " -p, --file <package> query a package file instead of the database\n"
+msgstr ""
+" -p, --file <pacote> pesquisa o arquivo de pacote <pacote> ao invés da "
+"base de dados\n"
+
+#: src/pacman/pacman.c:112
+#, c-format
+msgid ""
+" -s, --search <regex> search locally-installed packages for matching "
+"strings\n"
+msgstr ""
+" -s, --search <regex> busca em arquivos localmente instalados por textos "
+"coincidentes\n"
+
+#: src/pacman/pacman.c:113
+#, fuzzy, c-format
+msgid " -t, --orphans list all packages not required by any package\n"
+msgstr ""
+" -e, --orphans lista todos os pacotes instalados como "
+"dependências, mas que não são mais\n"
+
+#: src/pacman/pacman.c:114
+#, c-format
+msgid " -u, --upgrades list all packages that can be upgraded\n"
+msgstr ""
+" -u, --upgrades lista todos os pacotes que podem ser atualizados\n"
+
+#: src/pacman/pacman.c:115 src/pacman/pacman.c:136
+#, c-format
+msgid " -q --quiet show less information for query and search\n"
+msgstr ""
+
+#: src/pacman/pacman.c:120
+#, c-format
+msgid ""
+" -c, --clean remove old packages from cache directory (-cc for "
+"all)\n"
+msgstr ""
+" -c, --clean remove pacotes antigos do diretório de cache (use -"
+"cc para remover todos os pacotes)\n"
+
+#: src/pacman/pacman.c:122
+#, c-format
+msgid " -e, --dependsonly install dependencies only\n"
+msgstr " -e, --dependsonly instala apenas as dependências \n"
+
+#: src/pacman/pacman.c:125
+#, c-format
+msgid " -i, --info view package information\n"
+msgstr " -i, --info visualiza informações do pacote\n"
+
+#: src/pacman/pacman.c:126
+#, c-format
+msgid " -l, --list <repo> view a list of packages in a repo\n"
+msgstr ""
+" -l, --list <repo> visualizar uma lista dos pacotes em um repositório\n"
+
+#: src/pacman/pacman.c:127
+#, c-format
+msgid ""
+" -p, --print-uris print out URIs for given packages and their "
+"dependencies\n"
+msgstr ""
+" -p, --print-uris imprime as URIs dos pacotes e suas dependências\n"
+
+#: src/pacman/pacman.c:128
+#, c-format
+msgid ""
+" -s, --search <regex> search remote repositories for matching strings\n"
+msgstr ""
+" -s, --search <regex> procura em repositórios remotos por textos "
+"coincidentes\n"
+
+#: src/pacman/pacman.c:129
+#, c-format
+msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
+msgstr ""
+" -u, --sysupgrade atualiza todos os pacotes que estão desatualizados "
+"no sistema\n"
+
+#: src/pacman/pacman.c:130
+#, c-format
+msgid ""
+" -w, --downloadonly download packages but do not install/upgrade "
+"anything\n"
+msgstr ""
+" -w, --downloadonly baixa os pacotes mas não instala/atualiza nenhum "
+"pacote\n"
+
+#: src/pacman/pacman.c:131
+#, c-format
+msgid ""
+" -y, --refresh download fresh package databases from the server\n"
+msgstr " -y, --refresh atualizar a base de dados de pacotes\n"
+
+#: src/pacman/pacman.c:132
+#, c-format
+msgid ""
+" --needed only install outdated or not yet installed packages\n"
+msgstr ""
+
+#: src/pacman/pacman.c:133
+#, c-format
+msgid ""
+" --ignore <pkg> ignore a package upgrade (can be used more than "
+"once)\n"
+msgstr ""
+" --ignore <pkg> ignora a atualização de um pacote (pode ser usado "
+"mais de uma vez)\n"
+
+#: src/pacman/pacman.c:134
+#, fuzzy, c-format
+msgid ""
+" --ignoregroup <grp>\n"
+" ignore a group upgrade (can be used more than once)\n"
+msgstr ""
+" --ignore <pkg> ignora a atualização de um pacote (pode ser usado "
+"mais de uma vez)\n"
+
+#: src/pacman/pacman.c:138
+#, c-format
+msgid " --config <path> set an alternate configuration file\n"
+msgstr ""
+" --config <caminho> define um arquivo de configuração alternativo\n"
+
+#: src/pacman/pacman.c:139
+#, fuzzy, c-format
+msgid " --logfile <path> set an alternate log file\n"
+msgstr ""
+" --config <caminho> define um arquivo de configuração alternativo\n"
+
+#: src/pacman/pacman.c:140
+#, c-format
+msgid " --noconfirm do not ask for any confirmation\n"
+msgstr " --noconfirm não pede nenhuma confirmação\n"
+
+#: src/pacman/pacman.c:141
+#, c-format
+msgid ""
+" --noprogressbar do not show a progress bar when downloading files\n"
+msgstr ""
+" --noprogressbar não mostra a barra de progresso enquanto baixa os "
+"arquivos\n"
+
+#: src/pacman/pacman.c:142
+#, fuzzy, c-format
+msgid ""
+" --noscriptlet do not execute the install scriptlet if one exists\n"
+msgstr ""
+" --noscriptlet não executar o scriptlet de instalação se o mesmo "
+"existir\n"
+
+#: src/pacman/pacman.c:143
+#, c-format
+msgid " -v, --verbose be verbose\n"
+msgstr " -v, --verbose informações adicionais\n"
+
+#: src/pacman/pacman.c:144
+#, c-format
+msgid " -r, --root <path> set an alternate installation root\n"
+msgstr ""
+" -r, --root <caminho> define um diretório de instalação alternativo\n"
+
+#: src/pacman/pacman.c:145
+#, c-format
+msgid " -b, --dbpath <path> set an alternate database location\n"
+msgstr ""
+" -b, --dbpath <caminho> define uma localização diferente para a base de "
+"dados\n"
+
+#: src/pacman/pacman.c:146
+#, c-format
+msgid " --cachedir <dir> set an alternate package cache location\n"
+msgstr " --cachedir <dir> define um diretório de cache alternativo\n"
+
+#: src/pacman/pacman.c:159
+#, fuzzy, c-format
+msgid ""
+" This program may be freely redistributed under\n"
+" the terms of the GNU General Public License\n"
+msgstr ""
+" Este programa pode ser distribuído livremente sob\n"
+
+#: src/pacman/pacman.c:250
+#, c-format
+msgid "problem setting rootdir '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:267
+#, c-format
+msgid "problem setting dbpath '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:275
+#, c-format
+msgid "problem setting logfile '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:384
+#, fuzzy, c-format
+msgid "'%s' is not a valid debug level\n"
+msgstr "'%s' não é um nível de depuração válido"
+
+#: src/pacman/pacman.c:398 src/pacman/pacman.c:677
+#, fuzzy, c-format
+msgid "problem adding cachedir '%s' (%s)\n"
+msgstr "falha com o parametro '%s' (%s)\n"
+
+#: src/pacman/pacman.c:484
+msgid "only one operation may be used at a time\n"
+msgstr "só uma operação pode ser usada de cada vez\n"
+
+#: src/pacman/pacman.c:544
+#, c-format
+msgid "config file %s could not be read.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:580
+#, c-format
+msgid "config file %s, line %d: bad section name.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:602
+#, c-format
+msgid "config file %s, line %d: syntax error in config file- missing key.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:612
+#, c-format
+msgid ""
+"config file %s, line %d: 'Include' directive must belong to a section.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:640 src/pacman/pacman.c:702 src/pacman/pacman.c:717
+#, c-format
+msgid "config file %s, line %d: directive '%s' not recognized.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:787
+#, c-format
+msgid "failed to initialize alpm library (%s)\n"
+msgstr "falha ao iniciar biblioteca alpm (%s)\n"
+
+#: src/pacman/pacman.c:824
+msgid "you cannot perform this operation unless you are root.\n"
+msgstr "você não pode realizar esta operação a menos que você seja root\n"
+
+#: src/pacman/pacman.c:847
+#, c-format
+msgid "could not register 'local' database (%s)\n"
+msgstr "não foi possível registar a base de dados local (%s)\n"
+
+#: src/pacman/pacman.c:873
+msgid "no operation specified (use -h for help)\n"
+msgstr "nenhuma operação definida (use -h para obter ajuda)\n"
+
+#: src/pacman/query.c:67
+#, fuzzy, c-format
+msgid "error: no file was specified for --owns\n"
+msgstr "nenhum arquivo especificado para --owns\n"
+
+#: src/pacman/query.c:80
+#, fuzzy, c-format
+msgid "error: failed to read file '%s': %s\n"
+msgstr "falha ao ler o arquivo '%s' %s"
+
+#: src/pacman/query.c:87
+#, fuzzy, c-format
+msgid "error: cannot determine ownership of a directory\n"
+msgstr "não é possível determinar o dono de um diretório"
+
+#: src/pacman/query.c:95
+#, fuzzy, c-format
+msgid "error: cannot determine real path for '%s': %s\n"
+msgstr "não é possível determinar o caminho de '%s': %s"
+
+#: src/pacman/query.c:117
+#, c-format
+msgid "%s is owned by %s %s\n"
+msgstr "%s pertence a %s %s\n"
+
+#: src/pacman/query.c:125
+#, fuzzy, c-format
+msgid "error: No package owns %s\n"
+msgstr "Nenhum pacote possui %s\n"
+
+#: src/pacman/query.c:221
+#, fuzzy, c-format
+msgid "error: group \"%s\" was not found\n"
+msgstr "grupo \"%s\" não encontrado\n"
+
+#: src/pacman/query.c:232
+#, fuzzy, c-format
+msgid "Checking for package upgrades... \n"
+msgstr "Buscando atualizações de pacotes..."
+
+#: src/pacman/query.c:243
+#, fuzzy, c-format
+msgid "no upgrades found.\n"
+msgstr "nenhuma atualização encontrada"
+
+#: src/pacman/query.c:362 src/pacman/sync.c:743
+msgid "no usable package repositories configured.\n"
+msgstr "nenhum repositório de pacotes configurado.\n"
+
+#: src/pacman/query.c:406
+#, fuzzy, c-format
+msgid "error: package \"%s\" not found\n"
+msgstr "pacote \"%s\" não encontrado\n"
+
+#: src/pacman/remove.c:78 src/pacman/sync.c:583
+#, c-format
+msgid ":: group %s:\n"
+msgstr ":: grupo %s:\n"
+
+#: src/pacman/remove.c:80
+msgid " Remove whole content? [Y/n] "
+msgstr " Remover todo o conteúdo? [S/n] "
+
+#: src/pacman/remove.c:84
+#, c-format
+msgid ":: Remove %s from group %s? [Y/n] "
+msgstr ":: Remover %s do grupo %s? [S/n] "
+
+#: src/pacman/remove.c:97 src/pacman/sync.c:479 src/pacman/sync.c:540
+#, fuzzy, c-format
+msgid "error: failed to init transaction (%s)\n"
+msgstr "falha ao iniciar transação (%s)\n"
+
+#: src/pacman/remove.c:113
+#, fuzzy, c-format
+msgid "error: failed to add target '%s' (%s)\n"
+msgstr "falha com o parametro '%s' (%s)\n"
+
+#: src/pacman/remove.c:158 src/pacman/util.c:462
+msgid "Targets:"
+msgstr "Pacotes:"
+
+#: src/pacman/remove.c:161
+msgid ""
+"\n"
+"Do you want to remove these packages? [Y/n] "
+msgstr ""
+"\n"
+"Você deseja remover estes pacotes? [S/n] "
+
+#: src/pacman/sync.c:52
+#, fuzzy, c-format
+msgid "error: could not access database directory\n"
+msgstr "não foi possível acessar o diretório de cache\n"
+
+#: src/pacman/sync.c:83
+#, fuzzy, c-format
+msgid "Do you want to remove %s? [Y/n] "
+msgstr ""
+"\n"
+"Você deseja remover estes pacotes? [S/n] "
+
+#: src/pacman/sync.c:88
+#, fuzzy, c-format
+msgid "error: could not remove repository directory\n"
+msgstr "não foi possível remover o diretório de cache\n"
+
+#: src/pacman/sync.c:101
+#, c-format
+msgid "Database directory: %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:102
+#, fuzzy
+msgid "Do you want to remove unused repositories? [Y/n] "
+msgstr ""
+"\n"
+"Você deseja remover estes pacotes? [S/n] "
+
+#: src/pacman/sync.c:112
+#, c-format
+msgid "Database directory cleaned up\n"
+msgstr ""
+
+#: src/pacman/sync.c:130 src/pacman/sync.c:177
+#, fuzzy, c-format
+msgid "Cache directory: %s\n"
+msgstr "Arquitetura : %s\n"
+
+#: src/pacman/sync.c:131
+#, fuzzy
+msgid "Do you want to remove uninstalled packages from cache? [Y/n] "
+msgstr "Você deseja remover todos os pacotes do diretório de cache? [S/n] "
+
+#: src/pacman/sync.c:134
+#, c-format
+msgid "removing old packages from cache... "
+msgstr "removendo pacotes antigos do cache... "
+
+#: src/pacman/sync.c:138
+#, fuzzy, c-format
+msgid "error: could not access cache directory\n"
+msgstr "não foi possível acessar o diretório de cache\n"
+
+#: src/pacman/sync.c:178
+#, fuzzy
+msgid "Do you want to remove ALL packages from cache? [Y/n] "
+msgstr "Deseja remover os pacotes antigos do cache? [S/n] "
+
+#: src/pacman/sync.c:181
+#, c-format
+msgid "removing all packages from cache... "
+msgstr "removendo todos os pacotes do diretório de cache... "
+
+#: src/pacman/sync.c:184
+#, fuzzy, c-format
+msgid "error: could not remove cache directory\n"
+msgstr "não foi possível remover o diretório de cache\n"
+
+#: src/pacman/sync.c:189
+#, fuzzy, c-format
+msgid "error: could not create new cache directory\n"
+msgstr "não foi possível criar o novo diretório de cache\n"
+
+#: src/pacman/sync.c:216
+#, fuzzy, c-format
+msgid "error: failed to synchronize %s: %s\n"
+msgstr "falha ao sincronizar %s: %s\n"
+
+#: src/pacman/sync.c:219
+#, fuzzy, c-format
+msgid "error: failed to update %s (%s)\n"
+msgstr "falha ao atualizar %s (%s)\n"
+
+#: src/pacman/sync.c:223
+#, c-format
+msgid " %s is up to date\n"
+msgstr " %s está atualizado\n"
+
+#: src/pacman/sync.c:366
+#, fuzzy, c-format
+msgid "error: repository '%s' does not exist\n"
+msgstr "repositório '%s' não existe\n"
+
+#: src/pacman/sync.c:381
+#, fuzzy, c-format
+msgid "error: package '%s' was not found in repository '%s'\n"
+msgstr "pacote '%s' não foi encontrado no repositório '%s'\n"
+
+#: src/pacman/sync.c:401
+#, fuzzy, c-format
+msgid "error: package '%s' was not found\n"
+msgstr "pacote '%s' não foi encontrado.\n"
+
+#: src/pacman/sync.c:438
+#, fuzzy, c-format
+msgid "error: repository \"%s\" was not found.\n"
+msgstr "repositório \"%s\" não foi encontrado.\n"
+
+#: src/pacman/sync.c:490
+#, c-format
+msgid ":: Synchronizing package databases...\n"
+msgstr ":: Sincronizando a base de dados de pacotes...\n"
+
+#: src/pacman/sync.c:493
+#, fuzzy, c-format
+msgid "error: failed to synchronize any databases\n"
+msgstr "falha ao sincronizar algumas bases de dados"
+
+#: src/pacman/sync.c:505
+#, c-format
+msgid ":: Starting full system upgrade...\n"
+msgstr ":: Iniciando atualização do sistema...\n"
+
+#: src/pacman/sync.c:526
+#, c-format
+msgid ""
+":: pacman has detected a newer version of itself.\n"
+":: It is recommended that you upgrade pacman by itself\n"
+":: using 'pacman -S pacman', and then rerun the current\n"
+":: operation. If you wish to continue the operation and\n"
+":: not upgrade pacman separately, answer no.\n"
+msgstr ""
+
+#: src/pacman/sync.c:531
+msgid ":: Cancel current operation? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:533 src/pacman/sync.c:720
+#, fuzzy, c-format
+msgid "error: failed to release transaction (%s)\n"
+msgstr "falha ao liberar a transação (%s)\n"
+
+#: src/pacman/sync.c:545
+#, fuzzy, c-format
+msgid "error: pacman: %s\n"
+msgstr "pacman: %s\n"
+
+#: src/pacman/sync.c:569
+#, fuzzy, c-format
+msgid "error: '%s': %s\n"
+msgstr "'%s': %s\n"
+
+#: src/pacman/sync.c:588
+msgid ":: Install whole content? [Y/n] "
+msgstr ":: Instalar todo o conteúdo? [S/n] "
+
+#: src/pacman/sync.c:595
+#, c-format
+msgid ":: Install %s from group %s? [Y/n] "
+msgstr ":: Instalar %s do grupo %s? [S/n] "
+
+#: src/pacman/sync.c:604
+#, fuzzy, c-format
+msgid "error: '%s': not found in sync db\n"
+msgstr "'%s': não foi encontrado na base de dados de pacotes\n"
+
+#: src/pacman/sync.c:631
+#, fuzzy, c-format
+msgid ":: %s: conflicts with %s\n"
+msgstr ":: %s: conflita com %s"
+
+#: src/pacman/sync.c:645
+#, c-format
+msgid " local database is up to date\n"
+msgstr "Base de dados de pacotes está atualizada.\n"
+
+#: src/pacman/sync.c:657
+#, fuzzy, c-format
+msgid "Beginning download...\n"
+msgstr ""
+"\n"
+"Iniciando download...\n"
+
+#: src/pacman/sync.c:660
+msgid "Proceed with download? [Y/n] "
+msgstr "Continuar o download? [S/n] "
+
+#: src/pacman/sync.c:664
+#, fuzzy, c-format
+msgid "Beginning upgrade process...\n"
+msgstr ""
+"\n"
+"Iniciando processo de atualização...\n"
+
+#: src/pacman/sync.c:667
+msgid "Proceed with installation? [Y/n] "
+msgstr "Continuar a instalação? [S/n] "
+
+#: src/pacman/sync.c:708
+#, fuzzy, c-format
+msgid "Errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"ocorreram alguns erros, portanto, nenhum pacote foi atualizado.\n"
+
+#: src/pacman/util.c:356 src/pacman/util.c:388
+#, c-format
+msgid "None\n"
+msgstr "Nenhum\n"
+
+#: src/pacman/util.c:454
+msgid "Remove:"
+msgstr "Remover:"
+
+#: src/pacman/util.c:458
+#, fuzzy, c-format
+msgid "Total Removed Size: %.2f MB\n"
+msgstr ""
+"\n"
+"Tamanho total dos pacotes a serem removidos: %.2f MB\n"
+
+#: src/pacman/util.c:465
+#, fuzzy, c-format
+msgid "Total Download Size: %.2f MB\n"
+msgstr "Tamanho total da instalação: %.2f MB\n"
+
+#: src/pacman/util.c:469
+#, c-format
+msgid "Total Installed Size: %.2f MB\n"
+msgstr "Tamanho total da instalação: %.2f MB\n"
+
+#: src/pacman/util.c:496
+msgid "Y"
+msgstr "S"
+
+#: src/pacman/util.c:496
+msgid "YES"
+msgstr "SIM"
+
+#: src/pacman/util.c:557
+#, fuzzy, c-format
+msgid "debug: "
+msgstr "depurar"
+
+#: src/pacman/util.c:560
+#, c-format
+msgid "error: "
+msgstr "erro: "
+
+#: src/pacman/util.c:563
+#, c-format
+msgid "warning: "
+msgstr "aviso: "
+
+#: src/pacman/util.c:568
+#, fuzzy, c-format
+msgid "function: "
+msgstr "função"
+
+#: scripts/abs.sh.in:60 scripts/makepkg.sh.in:110 scripts/makepkg.sh.in:112
+#: scripts/repo-add.sh.in:50 scripts/repo-remove.sh.in:50
+msgid "ERROR:"
+msgstr ""
+
+#: scripts/abs.sh.in:65
+msgid "abs (pacman) %s - download a PKGBUILD tree from a CVS repository"
+msgstr ""
+
+#: scripts/abs.sh.in:66
+msgid "Usage %s [options] [repository...]"
+msgstr ""
+
+#: scripts/abs.sh.in:67 scripts/makepkg.sh.in:1055
+#, fuzzy
+msgid "Options:"
+msgstr "opções:\n"
+
+#: scripts/abs.sh.in:68
+msgid " -p, --passive The connection is opened in passive mode."
+msgstr ""
+
+#: scripts/abs.sh.in:70
+msgid " -h, --help Display this help message then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:71
+msgid " -V, --version Display version information then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:73
+msgid ""
+"abs will synchronize build scripts from the CVS repository\\ninto %s. You "
+"can follow different package trees by\\nediting %s files. If no argument is "
+"given, abs\\nwill synchronize from supfiles specified in %s.\\n\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:79
+msgid "Report bugs to <%s>."
+msgstr ""
+
+#: scripts/abs.sh.in:84 scripts/gensync.sh.in:54 scripts/makepkg.sh.in:1088
+#: scripts/pacman-optimize.sh.in:59 scripts/repo-remove.sh.in:66
+msgid ""
+"Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:130 scripts/pacman-optimize.sh.in:100
+#, fuzzy
+msgid "%s does not exist or is not a directory."
+msgstr "'%s' não é um diretório de cache válido\n"
+
+#: scripts/abs.sh.in:133
+msgid "You do not have write permissions in %s."
+msgstr ""
+
+#: scripts/abs.sh.in:143
+msgid "Missing CVS synchronization utility. Install csup or cvsup."
+msgstr ""
+
+#: scripts/abs.sh.in:166
+#, fuzzy
+msgid "Updating %s..."
+msgstr "atualizando %s... "
+
+#: scripts/gensync.sh.in:34
+msgid "Usage: %s <root> <destfile> [package_directory]"
+msgstr ""
+
+#: scripts/gensync.sh.in:35
+msgid ""
+"gensync will generate a sync database by reading all PKGBUILD files\\nfrom "
+"<root>. gensync builds the database in a temporary directory\\nand then "
+"compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:39
+msgid ""
+"gensync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:42
+msgid ""
+"note: The <destfile> name is important. It must be of the form\\n "
+"{treename}.db.tar.gz where {treename} is the name of the custom\\n "
+"package repository you configured in /etc/pacman.conf. The\\n generated "
+"database must reside in the same directory as your\\n custom packages "
+"(also configured in /etc/pacman.conf)\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:48
+msgid "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
+msgstr ""
+
+#: scripts/gensync.sh.in:102 scripts/updatesync.sh.in:101
+msgid "%s not found. Can not continue."
+msgstr ""
+
+#: scripts/gensync.sh.in:120
+msgid "invalid root dir: %s"
+msgstr ""
+
+#: scripts/gensync.sh.in:122
+msgid "gensync: building database entries, generating md5sums..."
+msgstr ""
+
+#: scripts/gensync.sh.in:131
+#, fuzzy
+msgid "failed to parse parse %s"
+msgstr "falha ao atualizar %s (%s)\n"
+
+#: scripts/gensync.sh.in:142
+msgid "could not find %s-%s-%s-%s.%s - skipping"
+msgstr ""
+
+#: scripts/gensync.sh.in:152
+#, fuzzy
+msgid "creating repo DB..."
+msgstr "finalizando..."
+
+#: scripts/makepkg.sh.in:101 scripts/makepkg.sh.in:103
+#: scripts/repo-add.sh.in:45 scripts/repo-remove.sh.in:45
+msgid "WARNING:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:143
+#, fuzzy
+msgid "Cleaning up..."
+msgstr "finalizando..."
+
+#: scripts/makepkg.sh.in:193
+msgid ""
+"Options beginning with 'no' will be deprecated in the next version of "
+"makepkg!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:194
+msgid "Please replace 'no' with '!': %s -> %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:198
+msgid "Option 'keepdocs' may not work as intended. Please replace with 'docs'."
+msgstr ""
+
+#: scripts/makepkg.sh.in:286
+msgid "There is no agent set up to handle %s URLs. Check %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:287 scripts/makepkg.sh.in:296
+#: scripts/makepkg.sh.in:448 scripts/makepkg.sh.in:476
+#: scripts/makepkg.sh.in:522 scripts/makepkg.sh.in:610
+#: scripts/makepkg.sh.in:638 scripts/makepkg.sh.in:700
+#: scripts/makepkg.sh.in:767 scripts/makepkg.sh.in:1105
+#: scripts/makepkg.sh.in:1415 scripts/makepkg.sh.in:1419
+msgid "Aborting..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:295
+msgid "The download program %s is not installed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:311
+msgid "Pacman returned a fatal error (%i): %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:335
+#, fuzzy
+msgid "Installing missing dependencies..."
+msgstr "resolvendo dependências... "
+
+#: scripts/makepkg.sh.in:345
+msgid "Pacman failed to install missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:349
+#, fuzzy
+msgid "Building missing dependencies..."
+msgstr "resolvendo dependências... "
+
+#: scripts/makepkg.sh.in:354
+msgid "Source root cannot be found - please make sure it is specified in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:362
+msgid "Could not find '%s' under %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:378
+#, fuzzy
+msgid "Failed to build '%s'"
+msgstr "falha ao ler o arquivo '%s' %s"
+
+#: scripts/makepkg.sh.in:411
+msgid "Failed to install all missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:414
+#, fuzzy
+msgid "Missing Dependencies:"
+msgstr "resolvendo dependências... "
+
+#: scripts/makepkg.sh.in:444
+#, fuzzy
+msgid "Retrieving Sources..."
+msgstr ":: Obtendo pacotes do repositório %s...\n"
+
+#: scripts/makepkg.sh.in:447
+msgid "You do not have write permission to store downloads in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:458
+msgid "Found %s in build dir"
+msgstr ""
+
+#: scripts/makepkg.sh.in:462
+msgid "Using cached copy of %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:470
+#, fuzzy
+msgid "Downloading %s..."
+msgstr "atualizando %s... "
+
+#: scripts/makepkg.sh.in:475
+msgid "Failure while downloading %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:486
+#, fuzzy
+msgid "Generating checksums for source files..."
+msgstr "erro ao calcular as somas de verificação para %s\n"
+
+#: scripts/makepkg.sh.in:495
+msgid "Invalid integrity algorithm '%s' specified."
+msgstr ""
+
+#: scripts/makepkg.sh.in:500 scripts/makepkg.sh.in:552
+msgid "Cannot find the '%s' program."
+msgstr ""
+
+#: scripts/makepkg.sh.in:521
+msgid "Unable to find source file %s to generate checksum."
+msgstr ""
+
+#: scripts/makepkg.sh.in:547
+msgid "Invalid integrity algorithm '%s' specified"
+msgstr ""
+
+#: scripts/makepkg.sh.in:558
+msgid "Validating source files with %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:568
+msgid "NOT FOUND"
+msgstr ""
+
+#: scripts/makepkg.sh.in:577
+msgid "Passed"
+msgstr ""
+
+#: scripts/makepkg.sh.in:579
+msgid "FAILED"
+msgstr ""
+
+#: scripts/makepkg.sh.in:587
+msgid "One or more files did not pass the validity check!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:591
+msgid "Integrity checks (%s) are missing or incomplete."
+msgstr ""
+
+#: scripts/makepkg.sh.in:597
+msgid "Extracting Sources..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:609
+msgid "Unable to find source file %s for extraction."
+msgstr ""
+
+#: scripts/makepkg.sh.in:637
+#, fuzzy
+msgid "Failed to extract %s"
+msgstr "falha ao preparar transação (%s)\n"
+
+#: scripts/makepkg.sh.in:669
+msgid "Starting build()..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:699
+msgid "Build Failed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:708
+msgid "Tidying install..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:711
+#, fuzzy
+msgid "Removing info/doc files..."
+msgstr "resolvendo dependências... "
+
+#: scripts/makepkg.sh.in:717
+msgid "Moving usr/share/man files to usr/man..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:724
+msgid "Compressing man pages..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:742
+msgid "Stripping debugging symbols from binaries and libraries..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:754
+msgid "Removing libtool .la files..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:759
+#, fuzzy
+msgid "Removing empty directories..."
+msgstr "resolvendo dependências... "
+
+#: scripts/makepkg.sh.in:766
+msgid "Missing pkg/ directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:772
+#, fuzzy
+msgid "Creating package..."
+msgstr "carregando informações do pacote... "
+
+#: scripts/makepkg.sh.in:782
+msgid "Generating .FILELIST file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:792
+msgid "Generating .PKGINFO file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:838
+msgid "Please add a license line to your %s!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:839
+msgid "Example for GPL'ed software: license=('GPL')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:847 scripts/makepkg.sh.in:942
+msgid "Adding install script..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:854
+#, fuzzy
+msgid "Adding package changelog..."
+msgstr "carregando informações do pacote... "
+
+#: scripts/makepkg.sh.in:860
+#, fuzzy
+msgid "Compressing package..."
+msgstr "carregando informações do pacote... "
+
+#: scripts/makepkg.sh.in:865
+#, fuzzy
+msgid "Failed to create package file."
+msgstr "falha ao carregar o pacote '%s' (%s)\n"
+
+#: scripts/makepkg.sh.in:874
+msgid "Cannot find the xdelta binary! Is xdelta installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:904
+msgid "Making delta from version %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:918
+msgid "Recreating package tarball from delta to match md5 signatures"
+msgstr ""
+
+#: scripts/makepkg.sh.in:919
+msgid "NOTE: the delta should ONLY be distributed with this tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:923
+msgid "Could not generate the package from the delta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:927
+msgid "Delta was not able to be created."
+msgstr ""
+
+#: scripts/makepkg.sh.in:930
+msgid "No previous version found, skipping xdelta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:936
+#, fuzzy
+msgid "Creating source package..."
+msgstr "Buscando atualizações de pacotes..."
+
+#: scripts/makepkg.sh.in:938 scripts/makepkg.sh.in:950
+#: scripts/makepkg.sh.in:957
+#, fuzzy
+msgid "Adding %s..."
+msgstr "atualizando %s... "
+
+#: scripts/makepkg.sh.in:945
+#, fuzzy
+msgid "Install script %s not found."
+msgstr "Script de Instalação : %s\n"
+
+#: scripts/makepkg.sh.in:965
+#, fuzzy
+msgid "Compressing source package..."
+msgstr "Buscando atualizações de pacotes..."
+
+#: scripts/makepkg.sh.in:967
+msgid "Failed to create source package file."
+msgstr ""
+
+#: scripts/makepkg.sh.in:975
+#, fuzzy
+msgid "Installing package with pacman -U..."
+msgstr "carregando informações do pacote... "
+
+#: scripts/makepkg.sh.in:992
+msgid "Determining latest darcs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:995
+msgid "Determining latest cvs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:998
+msgid "Determining latest git revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1001
+msgid "Determining latest svn revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1004
+msgid "Determining latest bzr revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1007
+msgid "Determining latest hg revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1022
+#, fuzzy
+msgid "Version found: %s"
+msgstr "Versão : %s\n"
+
+#: scripts/makepkg.sh.in:1053
+#, fuzzy
+msgid "Usage: %s [options]"
+msgstr "uso: %s {-A --add} [opções] <arquivo>\n"
+
+#: scripts/makepkg.sh.in:1056
+msgid " -A, --ignorearch Ignore incomplete arch field in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1057
+msgid " -b, --builddeps Build missing dependencies from source"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1058
+msgid " -c, --clean Clean up work files after build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1059
+msgid " -C, --cleancache Clean up source files from the cache"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1060
+#, fuzzy
+msgid " -d, --nodeps Skip all dependency checks"
+msgstr " -d, --nodeps ignora a verificação de dependências\n"
+
+#: scripts/makepkg.sh.in:1061
+msgid " -e, --noextract Do not extract source files (use existing src/ dir)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1062
+#, fuzzy
+msgid " -f, --force Overwrite existing package"
+msgstr ""
+" -f, --force forçar instalação, sobrescrever arquivos "
+"conflitantes\n"
+
+#: scripts/makepkg.sh.in:1063
+msgid " -g, --geninteg Generate integrity checks for source files"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1064
+msgid " -h, --help This help"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1065
+msgid " -i, --install Install package after successful build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1066
+#, fuzzy
+msgid " -L, --log Log package build process"
+msgstr " -i, --info visualiza informações do pacote\n"
+
+#: scripts/makepkg.sh.in:1067
+msgid " -m, --nocolor Disable colorized output messages"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1068
+msgid " -o, --nobuild Download and extract files only"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1069
+msgid " -p <buildscript> Use an alternate build script (instead of '%s')"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1070
+#, fuzzy
+msgid ""
+" -r, --rmdeps Remove installed dependencies after a successful build"
+msgstr " -e, --dependsonly instala apenas as dependências \n"
+
+#: scripts/makepkg.sh.in:1072
+msgid " -R, --repackage Repackage contents of pkg/ without building"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1073
+#, fuzzy
+msgid " -s, --syncdeps Install missing dependencies with pacman"
+msgstr " -e, --dependsonly instala apenas as dependências \n"
+
+#: scripts/makepkg.sh.in:1074
+msgid " --asroot Allow makepkg to run as root user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1075
+msgid " --source Do not build package; generate a source-only tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1077
+msgid "These options can be passed to pacman:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1079
+#, fuzzy
+msgid ""
+" --noconfirm Do not ask for confirmation when resolving "
+"dependencies"
+msgstr " --noconfirm não pede nenhuma confirmação\n"
+
+#: scripts/makepkg.sh.in:1080
+#, fuzzy
+msgid ""
+" --noprogressbar Do not show a progress bar when downloading files"
+msgstr ""
+" --noprogressbar não mostra a barra de progresso enquanto baixa os "
+"arquivos\n"
+
+#: scripts/makepkg.sh.in:1082
+msgid "If -p is not specified, makepkg will look for '%s'"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1104
+#, fuzzy
+msgid "%s not found."
+msgstr "pacote \"%s\" não encontrado\n"
+
+#: scripts/makepkg.sh.in:1177
+msgid "Sudo is used by default now. The --usesudo option is deprecated!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1192
+msgid "Cleaning up ALL files from %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1193
+msgid " Are you sure you wish to do this? [Y/n] "
+msgstr ""
+
+#: scripts/makepkg.sh.in:1199
+msgid "Problem removing files; you may not have correct permissions in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1203
+msgid "Source cache cleaned."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1208
+msgid "No files have been removed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1213
+msgid "Source destination must be defined in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1214
+msgid "In addition, please run makepkg -C outside of your cache directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1220
+msgid "BUILDSCRIPT is undefined! Ensure you have updated %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1227
+msgid "Running makepkg as root is a BAD idea and can cause"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1228
+msgid "permanent, catastrophic damage to your system. If you"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1229
+msgid "wish to run as root, please use the --asroot option."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1233
+msgid "The --asroot option is meant for the root user only."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1234
+msgid "Please rerun makepkg without the --asroot flag."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1238
+msgid "Fakeroot must be installed if using the 'fakeroot' option"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1239
+msgid "in the BUILDENV array in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1243
+msgid "Running makepkg as an unprivileged user will result in non-root"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1244
+msgid "ownership of the packaged files. Try using the fakeroot environment by"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1245
+msgid "placing 'fakeroot' in the BUILDENV array in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1250
+msgid "Do not use the '-F' option. This option is only for use by makepkg."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1259
+msgid "Cannot find the sudo binary! Is sudo installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1260
+msgid "Missing dependencies cannot be installed or removed as a normal user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1261
+msgid "without sudo; install and configure sudo to auto-resolve dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1271
+#, fuzzy
+msgid "%s does not exist."
+msgstr "repositório '%s' não existe\n"
+
+#: scripts/makepkg.sh.in:1286 scripts/makepkg.sh.in:1290
+#, fuzzy
+msgid "%s is not allowed to be empty."
+msgstr "'%s' não é um caminho de base de dados válido\n"
+
+#: scripts/makepkg.sh.in:1294 scripts/makepkg.sh.in:1298
+msgid "%s is not allowed to contain hyphens."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1308 scripts/makepkg.sh.in:1313
+msgid "%s is not available for the '%s' architecture."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1309 scripts/makepkg.sh.in:1314
+msgid "Note that many packages may need a line added to their %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1310 scripts/makepkg.sh.in:1315
+msgid "such as arch=('%s')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1320
+#, fuzzy
+msgid "Install scriptlet (%s) does not exist."
+msgstr "repositório '%s' não existe\n"
+
+#: scripts/makepkg.sh.in:1330
+msgid "A package has already been built, installing existing package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1334 scripts/makepkg.sh.in:1366
+msgid "A package has already been built. (use -f to overwrite)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1343 scripts/makepkg.sh.in:1442
+msgid "Skipping build."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1352
+msgid "Leaving fakeroot environment."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1356
+#, fuzzy
+msgid "Making package: %s"
+msgstr "carregando informações do pacote... "
+
+#: scripts/makepkg.sh.in:1359
+msgid "Running makepkg as root..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1370
+msgid "Source package created: %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1377
+#, fuzzy
+msgid "Skipping dependency checks."
+msgstr "verificando dependências... "
+
+#: scripts/makepkg.sh.in:1384
+#, fuzzy
+msgid "Checking Runtime Dependencies..."
+msgstr "verificando dependências... "
+
+#: scripts/makepkg.sh.in:1387
+#, fuzzy
+msgid "Checking Buildtime Dependencies..."
+msgstr "verificando dependências... "
+
+#: scripts/makepkg.sh.in:1391
+#, fuzzy
+msgid "Could not resolve all dependencies."
+msgstr "resolvendo dependências... "
+
+#: scripts/makepkg.sh.in:1395
+msgid "pacman was not found in PATH; skipping dependency checks."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1409
+msgid "Skipping source retrieval -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1410
+msgid "Skipping source integrity checks -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1411
+msgid "Skipping source extraction -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1414
+msgid "The source directory is empty, there is nothing to build!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1418
+msgid "The package directory is empty, there is nothing to repackage!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1429
+msgid "Sources are ready."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1434
+msgid "Removing existing pkg/ directory..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1451
+msgid "Entering fakeroot environment..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1464
+msgid "Finished making: %s"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:44
+msgid "Usage: %s [pacman_db_root]"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:45
+msgid ""
+"pacman-optimize is a little hack that should improve the performance\\nof "
+"pacman when reading/writing to its filesystem-based database.\\n\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:48
+msgid ""
+"Because pacman uses many small files to keep track of packages,\\nthere is a "
+"tendency for these files to become fragmented over time.\\nThis script "
+"attempts to relocate these small files into one\\ncontinuous location on "
+"your hard drive. The result is that the hard\\ndrive should be able to read "
+"them faster, since the hard drive head\\ndoes not have to move around the "
+"disk as much.\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:91
+msgid "diff tool was not found, please install diffutils."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:96
+msgid "Pacman lock file was found. Cannot run while pacman is running."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:104
+msgid "You must have correct permissions to optimize the database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:108
+msgid "ERROR: Can not create temp directory for database building."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:114
+msgid "MD5sum'ing the old database..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:118
+#, fuzzy
+msgid "Tar'ing up %s..."
+msgstr "finalizando..."
+
+#: scripts/pacman-optimize.sh.in:123
+msgid "Tar'ing up %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:127
+msgid "Making and MD5sum'ing the new db..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:132
+msgid "Untar'ing %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:138
+#, fuzzy
+msgid "Checking integrity..."
+msgstr "verificando a integridade do pacote... "
+
+#: scripts/pacman-optimize.sh.in:144
+msgid "Integrity check FAILED, reverting to old database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:149
+msgid "Putting the new database in place..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:158
+msgid "Finished. Your pacman database has been optimized."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:159
+msgid "For full benefits of pacman-optimize, run 'sync' now."
+msgstr ""
+
+#: scripts/repo-add.sh.in:56
+msgid "Usage: %s <path-to-db> [--force] <package> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:57
+msgid ""
+"repo-add will update a package database by reading a package file."
+"\\nMultiple packages to add can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:60
+msgid ""
+"The --force flag will add a 'force' entry to the sync database, which"
+"\\ntells pacman to skip its internal version number checking and update"
+"\\nthe package regardless.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:64
+msgid "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
+msgstr ""
+
+#: scripts/repo-add.sh.in:69
+msgid ""
+"Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:173
+msgid "Invalid package file '%s'."
+msgstr ""
+
+#: scripts/repo-add.sh.in:182 scripts/repo-remove.sh.in:91
+#, fuzzy
+msgid "Removing existing package '%s'..."
+msgstr ":: Obtendo pacotes do repositório %s...\n"
+
+#: scripts/repo-add.sh.in:192
+msgid "Creating 'desc' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:202
+msgid "Computing md5 checksums..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:214
+#, fuzzy
+msgid "Creating 'depends' db entry..."
+msgstr "resolvendo dependências... "
+
+#: scripts/repo-add.sh.in:230
+msgid "Creating 'deltas' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:236
+msgid "Added delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:238
+msgid "Could not add delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:276 scripts/repo-remove.sh.in:123
+msgid "%s not found. Cannot continue."
+msgstr ""
+
+#: scripts/repo-add.sh.in:286 scripts/repo-remove.sh.in:133
+msgid "Cannot create temp directory for database building."
+msgstr ""
+
+#: scripts/repo-add.sh.in:297 scripts/repo-remove.sh.in:142
+msgid "Repository file '%s' is not a proper pacman database."
+msgstr ""
+
+#: scripts/repo-add.sh.in:300 scripts/repo-remove.sh.in:145
+msgid "Extracting database to a temporary location..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:306
+msgid "'%s' is not a package file, skipping"
+msgstr ""
+
+#: scripts/repo-add.sh.in:308
+#, fuzzy
+msgid "Adding package '%s'"
+msgstr "carregando informações do pacote... "
+
+#: scripts/repo-add.sh.in:315
+#, fuzzy
+msgid "Package '%s' not found."
+msgstr "pacote '%s' não foi encontrado.\n"
+
+#: scripts/repo-add.sh.in:322
+msgid "Creating updated database file %s"
+msgstr ""
+
+#: scripts/repo-add.sh.in:332 scripts/repo-remove.sh.in:170
+msgid "No compression set."
+msgstr ""
+
+#: scripts/repo-add.sh.in:340 scripts/repo-remove.sh.in:178
+msgid "No packages modified, nothing to do."
+msgstr ""
+
+#: scripts/repo-remove.sh.in:55
+msgid "repo-remove %s\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:56
+msgid "usage: %s <path-to-db> <packagename> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:57
+msgid ""
+"repo-remove will update a package database by removing the package name"
+"\\nspecified on the command line from the given repo database. Multiple"
+"\\npackages to remove can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:61
+msgid "Example: repo-remove /path/to/repo.db.tar.gz kernel26"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:149
+#, fuzzy
+msgid "Searching for package '%s'..."
+msgstr "Buscando atualizações de pacotes..."
+
+#: scripts/repo-remove.sh.in:154
+#, fuzzy
+msgid "Package matching '%s' not found."
+msgstr "pacote '%s' não foi encontrado.\n"
+
+#: scripts/repo-remove.sh.in:161
+msgid "Creating updated database file '%s'..."
+msgstr ""
+
+#: scripts/updatesync.sh.in:35
+msgid "Usage: %s <action> <destfile> <option> [package_directory]"
+msgstr ""
+
+#: scripts/updatesync.sh.in:36
+msgid ""
+"updatesync will update a sync database by reading a PKGBUILD and\\nmodifying "
+"the destfile. updatesync updates the database in a temporary\\ndirectory and "
+"then compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:40
+msgid "There are two types of actions:\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:41
+msgid ""
+"upd - Will update a package's entry or create it if it doesn't exist."
+"\\n It takes the package's PKGBUILD as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:42
+msgid ""
+"del - Will remove a package's entry from the db. It takes the package's"
+"\\n name as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:44
+msgid ""
+"updatesync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:47
+msgid "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
+msgstr ""
+
+#: scripts/updatesync.sh.in:53
+msgid ""
+"Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:123
+#, fuzzy
+msgid "%s not found"
+msgstr "pacote \"%s\" não encontrado\n"
+
+#: scripts/updatesync.sh.in:129
+#, fuzzy
+msgid "failed to parse %s"
+msgstr "falha ao interpretar configuração (%s)\n"
+
+#: scripts/updatesync.sh.in:136
+msgid "could not find %s-%s-%s-%s.%s - aborting"
+msgstr ""
+
+#~ msgid ":: %.1f MB required, have %.1f MB"
+#~ msgstr ":: %.1f MB requerido, possui %.1f MB"
+
+#~ msgid "error"
+#~ msgstr "erro"
+
+#~ msgid "warning"
+#~ msgstr "aviso"
+
+#~ msgid "Removes :"
+#~ msgstr "Remove :"
+
+#~ msgid "Build Type : %s\n"
+#~ msgstr "Tipo da compilação : %s\n"
+
+#~ msgid "SHA1 Sum : %s"
+#~ msgstr "Soma SHA1 : %s"
+
+#~ msgid "usage: %s {-R --remove} [options] <package>\n"
+#~ msgstr "uso: %s {-R --remove} [opções] <pacote>\n"
+
+#~ msgid ""
+#~ " --ask <number> pre-specify answers for questions (see manpage)\n"
+#~ msgstr ""
+#~ " --ask <número> pré-especificar respostas para as perguntas "
+#~ "(veja a manpage)\n"
+
+#~ msgid "'%s' is not a valid root path\n"
+#~ msgstr "'%s' não é uma caminho válido\n"
+
+#~ msgid "Targets :"
+#~ msgstr "Pacotes :"
+
+#~ msgid "no package file was specified for --file\n"
+#~ msgstr "nenhum pacote foi especificado para a opção --file\n"
+
+#~ msgid ":: %s is required by %s\n"
+#~ msgstr ":: %s é necessário para %s\n"
+
+#~ msgid "synchronizing package lists"
+#~ msgstr "sincronizando as listas de pacotes"
+
+#~ msgid "starting full system upgrade"
+#~ msgstr "iniciando atualização de todo o sistema"
+
+#~ msgid ""
+#~ "\n"
+#~ ":: pacman has detected a newer version of the \"pacman\" package.\n"
+#~ msgstr ""
+#~ "\n"
+#~ ":: pacman detectou uma nova versão do pacote \"pacman\".\n"
+
+#~ msgid ":: It is recommended that you allow pacman to upgrade itself\n"
+#~ msgstr ":: É recomendado que você permita que o pacman se atualize\n"
+
+#~ msgid ""
+#~ ":: first, then you can re-run the operation with the newer version.\n"
+#~ msgstr ""
+#~ ":: primeiro, em seguida você pode executar a operação novamente com a "
+#~ "nova versão.\n"
+
+#~ msgid ":: Upgrade pacman first? [Y/n] "
+#~ msgstr ":: Atualizar o pacman primeiro? [S/n] "
+
+#~ msgid "requires"
+#~ msgstr "requer"
+
+#~ msgid "installed %s (%s)"
+#~ msgstr "%s instalado (%s)"
+
+#~ msgid "removed %s (%s)"
+#~ msgstr "%s removido (%s)"
+
+#~ msgid "upgraded %s (%s -> %s)"
+#~ msgstr "%s atualizado (%s -> %s)"
+
+#~ msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
+#~ msgstr ""
+#~ ":: %s-%s: a versão local está atualizada. Deseja atualizar mesmo assim? "
+#~ "[S/n] "
+
+#~ msgid ""
+#~ "\n"
+#~ "Total Package Size: %.2f MB\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Tamanho total dos pacotes a serem baixados: %.2f MB\n"
+
+#~ msgid "requires: %s"
+#~ msgstr "requer: %s"
+
+#~ msgid "usage: %s {-h --help}\n"
+#~ msgstr "modo de usar: %s {-h --help}\n"
+
+#~ msgid " %s {-V --version}\n"
+#~ msgstr " %s {-V --version}\n"
+
+#~ msgid " %s {-A --add} [options] <file>\n"
+#~ msgstr " %s {-A --add} [opções] <arquivo>\n"
+
+#~ msgid " %s {-F --freshen} [options] <file>\n"
+#~ msgstr " %s {-F --freshen} [opções] <arquivo>\n"
+
+#~ msgid " %s {-Q --query} [options] [package]\n"
+#~ msgstr " %s {-Q --query} [opções] [pacote]\n"
+
+#~ msgid " %s {-R --remove} [options] <package>\n"
+#~ msgstr " %s {-R --remove} [opções] <pacote>\n"
+
+#~ msgid " %s {-S --sync} [options] [package]\n"
+#~ msgstr " %s {-S --sync} [opções] [pacote]\n"
+
+#~ msgid " %s {-U --upgrade} [options] <file>\n"
+#~ msgstr " %s {-U --upgrade} [opções] <arquivo>\n"
+
+#~ msgid "usage: %s {-F --freshen} [options] <file>\n"
+#~ msgstr "uso: %s {-F --freshen} [opções] <arquivo>\n"
+
+#~ msgid "usage: %s {-U --upgrade} [options] <file>\n"
+#~ msgstr "uso: %s {-U --upgrade} [opções] <arquivo>\n"
+
+#~ msgid "usage: %s {-Q --query} [options] [package]\n"
+#~ msgstr "usor: %s {-Q --query} [opções] [pacote]\n"
+
+#~ msgid " required by any package\n"
+#~ msgstr " requeridos por outros pacotes\n"
+
+#~ msgid "usage: %s {-S --sync} [options] [package]\n"
+#~ msgstr "uso: %s {-S --sync} [opções] [pacote]\n"
+
+#~ msgid " the terms of the GNU General Public License\n"
+#~ msgstr ""
+#~ " os termos da Licença GPL - General Public License\n"
+
+#~ msgid "warning: current locale is invalid; using default \"C\" locale"
+#~ msgstr "aviso: o locale atual é inválido; usando o locale padrão \"C\""
diff --git a/src/pacman/po/remove-potcdate.sin b/po/remove-potcdate.sin
index 2436c49e..2436c49e 100644
--- a/src/pacman/po/remove-potcdate.sin
+++ b/po/remove-potcdate.sin
diff --git a/po/ru_RU.po b/po/ru_RU.po
new file mode 100644
index 00000000..5411ba66
--- /dev/null
+++ b/po/ru_RU.po
@@ -0,0 +1,2311 @@
+# Pacman Russian Translation
+# Copyright (C) 2007 Judd Vinet <jvinet@zeroflux.org>
+# This file is distributed under the same license as the Pacman package.
+# Vladimir Bayrakovskiy <4rayven@gmail.com>, 2007
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Pacman package manager 3.0.0\n"
+"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
+"POT-Creation-Date: 2007-12-02 21:40-0600\n"
+"PO-Revision-Date: 2007-03-07 11:45-0500\n"
+"Last-Translator: Vladimir Bayrakovskiy <4rayven@gmail.com>\n"
+"Language-Team: Russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: src/pacman/add.c:42 src/pacman/remove.c:44
+#, c-format
+msgid "failed to release transaction (%s)\n"
+msgstr "не удалоÑÑŒ продолжить операцию (%s)\n"
+
+#: src/pacman/add.c:79 src/pacman/query.c:372 src/pacman/remove.c:65
+#: src/pacman/sync.c:753
+msgid "no targets specified (use -h for help)\n"
+msgstr "не задано целей (Ð´Ð»Ñ Ñправки иÑпользуйте -h)\n"
+
+#: src/pacman/add.c:106 src/pacman/sync.c:508
+#, fuzzy, c-format
+msgid "error: %s\n"
+msgstr "ошибка: "
+
+#: src/pacman/add.c:109 src/pacman/remove.c:100 src/pacman/sync.c:482
+#, fuzzy, c-format
+msgid ""
+" if you're sure a package manager is not already\n"
+" running, you can remove %s.\n"
+msgstr ""
+" еÑли Ð’Ñ‹ уверены, что pacman уже не запущен, можете\n"
+" удалить %s%s\n"
+
+#: src/pacman/add.c:116 src/pacman/remove.c:108
+#, c-format
+msgid "loading package data... "
+msgstr "чтение информации о пакете... "
+
+#: src/pacman/add.c:120
+#, fuzzy, c-format
+msgid "error: failed to add target '%s' (%s)"
+msgstr "не удалоÑÑŒ добавить цель '%s' (%s)"
+
+#: src/pacman/add.c:126 src/pacman/remove.c:120 src/pacman/sync.c:174
+#: src/pacman/sync.c:192
+#, c-format
+msgid "done.\n"
+msgstr "готово.\n"
+
+#: src/pacman/add.c:131 src/pacman/remove.c:124 src/pacman/sync.c:614
+#, fuzzy, c-format
+msgid "error: failed to prepare transaction (%s)\n"
+msgstr "не удалоÑÑŒ подготовить операцию (%s)\n"
+
+#: src/pacman/add.c:143 src/pacman/remove.c:132 src/pacman/sync.c:623
+#, fuzzy, c-format
+msgid ":: %s: requires %s\n"
+msgstr ":: %s: требует %s"
+
+#: src/pacman/add.c:151
+#, c-format
+msgid ":: %s: conflicts with %s"
+msgstr ":: %s: конфликтует Ñ %s"
+
+#: src/pacman/add.c:160 src/pacman/sync.c:686
+#, c-format
+msgid "%s exists in both '%s' and '%s'\n"
+msgstr "%s ÑодержитÑÑ Ð² '%s' и в '%s'\n"
+
+#: src/pacman/add.c:166 src/pacman/sync.c:692
+#, c-format
+msgid "%s: %s exists in filesystem\n"
+msgstr "%s: %s уже еÑÑ‚ÑŒ на диÑке\n"
+
+#: src/pacman/add.c:172
+#, c-format
+msgid ""
+"\n"
+"errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"произошли ошибки, пакеты не были обновлены.\n"
+
+#: src/pacman/add.c:186 src/pacman/remove.c:171 src/pacman/sync.c:677
+#, fuzzy, c-format
+msgid "error: failed to commit transaction (%s)\n"
+msgstr "не удалоÑÑŒ завершить операцию (%s)\n"
+
+#: src/pacman/callback.c:163
+#, fuzzy, c-format
+msgid "checking dependencies...\n"
+msgstr "проверÑÑŽ завиÑимоÑти... "
+
+#: src/pacman/callback.c:167
+#, fuzzy, c-format
+msgid "checking for file conflicts...\n"
+msgstr "проверÑÑŽ возможные конфликты файлов... "
+
+#: src/pacman/callback.c:171
+#, fuzzy, c-format
+msgid "resolving dependencies...\n"
+msgstr "разрешаю завиÑимоÑти... "
+
+#: src/pacman/callback.c:174
+#, fuzzy, c-format
+msgid "looking for inter-conflicts...\n"
+msgstr "проверÑÑŽ на взаимную неÑовмеÑтимоÑÑ‚ÑŒ... "
+
+#: src/pacman/callback.c:178
+#, fuzzy, c-format
+msgid "installing %s...\n"
+msgstr "уÑтанавливаю %s... "
+
+#: src/pacman/callback.c:189
+#, fuzzy, c-format
+msgid "removing %s...\n"
+msgstr "удалÑÑŽ %s... "
+
+#: src/pacman/callback.c:200
+#, fuzzy, c-format
+msgid "upgrading %s...\n"
+msgstr "обновлÑÑŽ %s... "
+
+#: src/pacman/callback.c:211
+#, fuzzy, c-format
+msgid "checking package integrity...\n"
+msgstr "проверÑÑŽ целоÑтноÑÑ‚ÑŒ пакета... "
+
+#: src/pacman/callback.c:214
+#, fuzzy, c-format
+msgid "checking delta integrity...\n"
+msgstr "проверÑÑŽ целоÑтноÑÑ‚ÑŒ пакета... "
+
+#: src/pacman/callback.c:217
+#, c-format
+msgid "applying deltas...\n"
+msgstr ""
+
+#: src/pacman/callback.c:220
+#, fuzzy, c-format
+msgid "generating %s with %s... "
+msgstr "обновлÑÑŽ %s... "
+
+#: src/pacman/callback.c:223
+#, c-format
+msgid "success!\n"
+msgstr ""
+
+#: src/pacman/callback.c:226
+#, c-format
+msgid "failed.\n"
+msgstr "провал.\n"
+
+#: src/pacman/callback.c:235
+#, c-format
+msgid ":: Retrieving packages from %s...\n"
+msgstr ":: Получение пакетов Ñ %s...\n"
+
+#: src/pacman/callback.c:263
+#, fuzzy, c-format
+msgid ""
+":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway? [Y/"
+"n] "
+msgstr ":: %1$s требует %2$s из IgnorePkg. УÑтановить %2$s? [Y/n] "
+
+#: src/pacman/callback.c:268
+#, fuzzy, c-format
+msgid ":: %s is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "
+msgstr ":: %s указан в IgnorePkg. Ð’ÑÑ‘ равно уÑтановить? [Y/n] "
+
+#: src/pacman/callback.c:274
+#, c-format
+msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
+msgstr ":: %s указан в HoldPkg. Ð’ÑÑ‘ равно удалить? [Y/n] "
+
+#: src/pacman/callback.c:279
+#, c-format
+msgid ":: Replace %s with %s/%s? [Y/n] "
+msgstr ":: Заменить %s на %s/%s? [Y/n] "
+
+#: src/pacman/callback.c:286
+#, c-format
+msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
+msgstr ":: %s конфликтует Ñ %s. Удалить %s? [Y/n] "
+
+#: src/pacman/callback.c:294
+#, c-format
+msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
+msgstr ":: %s-%s: уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð½Ð¾Ð²ÐµÐµ. Ð’ÑÑ‘ равно обновить? [Y/n] "
+
+#: src/pacman/callback.c:304
+#, fuzzy, c-format
+msgid ":: File %s is corrupted. Do you want to delete it? [Y/n] "
+msgstr ":: Ðрхив %s поврежден. Хотите его удалить? [Y/n] "
+
+#: src/pacman/callback.c:354
+msgid "installing"
+msgstr "уÑтановка"
+
+#: src/pacman/callback.c:357
+msgid "upgrading"
+msgstr "обновление"
+
+#: src/pacman/callback.c:360
+msgid "removing"
+msgstr "удаление"
+
+#: src/pacman/callback.c:363
+msgid "checking for file conflicts"
+msgstr "проверÑÑŽ возможные конфликты файлов"
+
+#: src/pacman/package.c:68
+msgid "Explicitly installed"
+msgstr "Явно уÑтановлен"
+
+#: src/pacman/package.c:71
+msgid "Installed as a dependency for another package"
+msgstr "УÑтановлен как завиÑимоÑÑ‚ÑŒ другого пакета"
+
+#: src/pacman/package.c:74
+msgid "Unknown"
+msgstr "ÐеизвеÑтно"
+
+#: src/pacman/package.c:89
+msgid "Description : "
+msgstr "ОпиÑание : "
+
+#: src/pacman/package.c:93
+#, fuzzy
+msgid "Filename :"
+msgstr "Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ :"
+
+#: src/pacman/package.c:95
+#, fuzzy
+msgid "Name :"
+msgstr "Ðазвание : %s\n"
+
+#: src/pacman/package.c:96
+#, fuzzy
+msgid "Version :"
+msgstr "ВерÑÐ¸Ñ : %s\n"
+
+#: src/pacman/package.c:97
+#, fuzzy
+msgid "URL :"
+msgstr "URL : %s\n"
+
+#: src/pacman/package.c:98
+#, fuzzy
+msgid "Licenses :"
+msgstr "Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ :"
+
+#: src/pacman/package.c:99
+msgid "Groups :"
+msgstr "Группы :"
+
+#: src/pacman/package.c:100
+msgid "Provides :"
+msgstr "ПредоÑтавлÑет :"
+
+#: src/pacman/package.c:101
+msgid "Depends On :"
+msgstr "ЗавиÑит от :"
+
+#: src/pacman/package.c:102
+msgid "Optional Deps :"
+msgstr ""
+
+#: src/pacman/package.c:105
+msgid "Required By :"
+msgstr "ТребуетÑÑ Ð¿Ð°ÐºÐµÑ‚Ð°Ð¼Ð¸ :"
+
+#: src/pacman/package.c:108
+msgid "Conflicts With :"
+msgstr "Конфликтует Ñ :"
+
+#: src/pacman/package.c:109
+msgid "Replaces :"
+msgstr "ЗаменÑет :"
+
+#: src/pacman/package.c:111
+#, c-format
+msgid "Download Size : %6.2f K\n"
+msgstr "Размер при закачке : %6.2f K\n"
+
+#: src/pacman/package.c:115
+#, fuzzy, c-format
+msgid "Compressed Size: %6.2f K\n"
+msgstr "Размер уÑтановленного : %6.2f K\n"
+
+#: src/pacman/package.c:119
+#, c-format
+msgid "Installed Size : %6.2f K\n"
+msgstr "Размер уÑтановленного : %6.2f K\n"
+
+#: src/pacman/package.c:121
+#, fuzzy
+msgid "Packager :"
+msgstr "Сборщик : %s\n"
+
+#: src/pacman/package.c:122
+#, fuzzy
+msgid "Architecture :"
+msgstr "Ðрхитектура : %s\n"
+
+#: src/pacman/package.c:123
+#, fuzzy
+msgid "Build Date :"
+msgstr "Дата Ñборки : %s %s\n"
+
+#: src/pacman/package.c:125
+#, fuzzy
+msgid "Install Date :"
+msgstr "Дата уÑтановки : %s %s\n"
+
+#: src/pacman/package.c:126
+#, fuzzy
+msgid "Install Reason :"
+msgstr "Причина уÑтановки : %s\n"
+
+#: src/pacman/package.c:129
+#, fuzzy
+msgid "Install Script :"
+msgstr "Скрипт при уÑтановке : %s\n"
+
+#: src/pacman/package.c:130
+msgid "Yes"
+msgstr "Yes"
+
+#: src/pacman/package.c:130
+msgid "No"
+msgstr "No"
+
+#: src/pacman/package.c:135
+#, fuzzy
+msgid "MD5 Sum :"
+msgstr "Сумма MD5 : %s"
+
+#: src/pacman/package.c:159
+#, fuzzy
+msgid "Repository :"
+msgstr "Репозиторий : %s\n"
+
+#: src/pacman/package.c:169
+#, c-format
+msgid "Backup Files:\n"
+msgstr "Создаёт резервные копии файлов:\n"
+
+#: src/pacman/package.c:189
+#, fuzzy, c-format
+msgid "error: could not calculate checksums for %s\n"
+msgstr "ошибка при вычиÑлении контрольной Ñуммы Ð´Ð»Ñ %s\n"
+
+#: src/pacman/package.c:197
+#, c-format
+msgid "MODIFIED\t%s\n"
+msgstr "ИЗМЕÐÐÐ\t%s\n"
+
+#: src/pacman/package.c:199
+#, c-format
+msgid "Not Modified\t%s\n"
+msgstr "Ðе Изменён\t%s\n"
+
+#: src/pacman/package.c:203
+#, c-format
+msgid "MISSING\t\t%s\n"
+msgstr "ÐЕ ÐÐЙДЕÐ\t\t%s\n"
+
+#: src/pacman/package.c:209
+#, c-format
+msgid "(none)\n"
+msgstr "(пуÑто)\n"
+
+#: src/pacman/package.c:244
+#, fuzzy, c-format
+msgid "error: no changelog available for '%s'.\n"
+msgstr "СпиÑок изменений недоÑтупен Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° '%s'.\n"
+
+#: src/pacman/pacman.c:62
+#, fuzzy
+msgid "options"
+msgstr "параметры:\n"
+
+#: src/pacman/pacman.c:63
+#, fuzzy
+msgid "file"
+msgstr "провал.\n"
+
+#: src/pacman/pacman.c:64
+msgid "package"
+msgstr ""
+
+#: src/pacman/pacman.c:65
+msgid "usage"
+msgstr ""
+
+#: src/pacman/pacman.c:66
+#, fuzzy
+msgid "operation"
+msgstr "параметры:\n"
+
+#: src/pacman/pacman.c:78
+#, c-format
+msgid ""
+"\n"
+"use '%s --help' with other options for more syntax\n"
+msgstr ""
+"\n"
+"иÑпользуйте '%s --help' вмеÑте Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ опциÑми Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подробной "
+"информации\n"
+
+#: src/pacman/pacman.c:83 src/pacman/pacman.c:97 src/pacman/pacman.c:119
+#, fuzzy, c-format
+msgid " --asdeps install packages as non-explicitly installed\n"
+msgstr ""
+" -u, --upgrades показать ÑпиÑок вÑех пакетов, которые могут быть "
+"обновлены\n"
+
+#: src/pacman/pacman.c:84 src/pacman/pacman.c:90 src/pacman/pacman.c:98
+#: src/pacman/pacman.c:121
+#, c-format
+msgid " -d, --nodeps skip dependency checks\n"
+msgstr " -d, --nodeps не проверÑÑ‚ÑŒ завиÑимоÑти\n"
+
+#: src/pacman/pacman.c:85 src/pacman/pacman.c:99 src/pacman/pacman.c:123
+#, c-format
+msgid " -f, --force force install, overwrite conflicting files\n"
+msgstr ""
+" -f, --force Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÑƒÑтановка, перезапиÑывать "
+"конфликтующие файлы\n"
+
+#: src/pacman/pacman.c:89
+#, c-format
+msgid ""
+" -c, --cascade remove packages and all packages that depend on them\n"
+msgstr " -c, --cascade удалить пакет и вÑе завиÑÑщие от него пакеты\n"
+
+#: src/pacman/pacman.c:91
+#, c-format
+msgid ""
+" -k, --dbonly only remove database entry, do not remove files\n"
+msgstr ""
+" -k, --dbonly Ñтереть только запиÑÑŒ в базе данных, файлы не "
+"удалÑÑ‚ÑŒ\n"
+
+#: src/pacman/pacman.c:92
+#, c-format
+msgid " -n, --nosave remove configuration files as well\n"
+msgstr " -n, --nosave удалить в том чиÑле и конфигурационные файлы\n"
+
+#: src/pacman/pacman.c:93
+#, c-format
+msgid ""
+" -s, --recursive remove dependencies also (that won't break packages)\n"
+msgstr ""
+" -s, --recursive удалить вмеÑте Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑ‚Ñми (которые не повредÑÑ‚ "
+"другие пакеты)\n"
+
+#: src/pacman/pacman.c:103
+#, c-format
+msgid " -c, --changelog view the changelog of a package\n"
+msgstr " -c, --changelog показать ÑпиÑок изменений пакета\n"
+
+#: src/pacman/pacman.c:104
+#, fuzzy, c-format
+msgid " -d, --deps list all packages installed as dependencies\n"
+msgstr ""
+" -u, --upgrades показать ÑпиÑок вÑех пакетов, которые могут быть "
+"обновлены\n"
+
+#: src/pacman/pacman.c:105
+#, fuzzy, c-format
+msgid " -e, --explicit list all packages explicitly installed\n"
+msgstr ""
+" -u, --upgrades показать ÑпиÑок вÑех пакетов, которые могут быть "
+"обновлены\n"
+
+#: src/pacman/pacman.c:106 src/pacman/pacman.c:124
+#, c-format
+msgid " -g, --groups view all members of a package group\n"
+msgstr " -g, --groups показать вÑе пакеты данной группы\n"
+
+#: src/pacman/pacman.c:107
+#, fuzzy, c-format
+msgid ""
+" -i, --info view package information (-ii for backup files)\n"
+msgstr " -i, --info показать информацию о пакете\n"
+
+#: src/pacman/pacman.c:108
+#, c-format
+msgid " -l, --list list the contents of the queried package\n"
+msgstr " -l, --list показать Ñодержимое запрашиваемого пакета\n"
+
+#: src/pacman/pacman.c:109
+#, c-format
+msgid ""
+" -m, --foreign list installed packages not found in sync db(s)\n"
+msgstr ""
+" -m, --foreign показать вÑе пакеты не найденные в базе(ах) данных\n"
+
+#: src/pacman/pacman.c:110
+#, c-format
+msgid " -o, --owns <file> query the package that owns <file>\n"
+msgstr " -o, --owns <файл> найти пакет Ñодержащий <файл>\n"
+
+#: src/pacman/pacman.c:111
+#, c-format
+msgid " -p, --file <package> query a package file instead of the database\n"
+msgstr ""
+" -p, --file <пакет> извлечь информацию из файла пакета <пакет>, а не из "
+"базы данных\n"
+
+#: src/pacman/pacman.c:112
+#, c-format
+msgid ""
+" -s, --search <regex> search locally-installed packages for matching "
+"strings\n"
+msgstr ""
+" -s, --search <regex> иÑкать указанную Ñтроку в локально уÑтановленных "
+"пакетах\n"
+
+#: src/pacman/pacman.c:113
+#, fuzzy, c-format
+msgid " -t, --orphans list all packages not required by any package\n"
+msgstr ""
+" -e, --orphans показать пакеты, уÑтановленные как завиÑимоÑти,\n"
+
+#: src/pacman/pacman.c:114
+#, c-format
+msgid " -u, --upgrades list all packages that can be upgraded\n"
+msgstr ""
+" -u, --upgrades показать ÑпиÑок вÑех пакетов, которые могут быть "
+"обновлены\n"
+
+#: src/pacman/pacman.c:115 src/pacman/pacman.c:136
+#, c-format
+msgid " -q --quiet show less information for query and search\n"
+msgstr ""
+
+#: src/pacman/pacman.c:120
+#, c-format
+msgid ""
+" -c, --clean remove old packages from cache directory (-cc for "
+"all)\n"
+msgstr ""
+" -c, --clean удалить Ñтарые пакеты из кÑша (-cc чтобы удалить вÑе "
+"пакеты из кÑша)\n"
+
+#: src/pacman/pacman.c:122
+#, c-format
+msgid " -e, --dependsonly install dependencies only\n"
+msgstr " -e, --dependsonly уÑтановить только завиÑимоÑти\n"
+
+#: src/pacman/pacman.c:125
+#, c-format
+msgid " -i, --info view package information\n"
+msgstr " -i, --info показать информацию о пакете\n"
+
+#: src/pacman/pacman.c:126
+#, c-format
+msgid " -l, --list <repo> view a list of packages in a repo\n"
+msgstr " -l, --list <repo> показать вÑе пакеты данного репозиториÑ\n"
+
+#: src/pacman/pacman.c:127
+#, c-format
+msgid ""
+" -p, --print-uris print out URIs for given packages and their "
+"dependencies\n"
+msgstr ""
+" -p, --print-uris напечатать ÑÑылки Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ указанных пакетов и их "
+"завиÑимоÑтей\n"
+
+#: src/pacman/pacman.c:128
+#, c-format
+msgid ""
+" -s, --search <regex> search remote repositories for matching strings\n"
+msgstr ""
+" -s, --search <regex> иÑкать указанную Ñтроку в репозиториÑÑ… на удаленных "
+"Ñерверах\n"
+
+#: src/pacman/pacman.c:129
+#, c-format
+msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
+msgstr " -u, --sysupgrade обновить вÑе уÑтаревшие пакеты\n"
+
+#: src/pacman/pacman.c:130
+#, c-format
+msgid ""
+" -w, --downloadonly download packages but do not install/upgrade "
+"anything\n"
+msgstr ""
+" -w, --downloadonly загрузить пакеты Ñ Ñервера, но не уÑтанавливать\n"
+
+#: src/pacman/pacman.c:131
+#, c-format
+msgid ""
+" -y, --refresh download fresh package databases from the server\n"
+msgstr ""
+" -y, --refresh загрузить Ñвежие базы данных пакетов Ñ Ñервера\n"
+
+#: src/pacman/pacman.c:132
+#, c-format
+msgid ""
+" --needed only install outdated or not yet installed packages\n"
+msgstr ""
+
+#: src/pacman/pacman.c:133
+#, c-format
+msgid ""
+" --ignore <pkg> ignore a package upgrade (can be used more than "
+"once)\n"
+msgstr ""
+" --ignore <пакет> игнорировать пакет при обновлении (может быть "
+"иÑпользовано неоднократно)\n"
+
+#: src/pacman/pacman.c:134
+#, fuzzy, c-format
+msgid ""
+" --ignoregroup <grp>\n"
+" ignore a group upgrade (can be used more than once)\n"
+msgstr ""
+" --ignore <пакет> игнорировать пакет при обновлении (может быть "
+"иÑпользовано неоднократно)\n"
+
+#: src/pacman/pacman.c:138
+#, c-format
+msgid " --config <path> set an alternate configuration file\n"
+msgstr ""
+" --config <путь> иÑпользовать альтернативный конфигурационный файл\n"
+
+#: src/pacman/pacman.c:139
+#, fuzzy, c-format
+msgid " --logfile <path> set an alternate log file\n"
+msgstr ""
+" --config <путь> иÑпользовать альтернативный конфигурационный файл\n"
+
+#: src/pacman/pacman.c:140
+#, c-format
+msgid " --noconfirm do not ask for any confirmation\n"
+msgstr " --noconfirm не Ñпрашивать подтверждениÑ\n"
+
+#: src/pacman/pacman.c:141
+#, c-format
+msgid ""
+" --noprogressbar do not show a progress bar when downloading files\n"
+msgstr " --noprogressbar не отображать прогреÑÑ Ð¿Ñ€Ð¸ Ñкачивании файлов\n"
+
+#: src/pacman/pacman.c:142
+#, fuzzy, c-format
+msgid ""
+" --noscriptlet do not execute the install scriptlet if one exists\n"
+msgstr ""
+" --noscriptlet не запуÑкать уÑтановочные Ñкрипты, еÑли они еÑÑ‚ÑŒ\n"
+
+#: src/pacman/pacman.c:143
+#, c-format
+msgid " -v, --verbose be verbose\n"
+msgstr " -v, --verbose выводить больше информации\n"
+
+#: src/pacman/pacman.c:144
+#, c-format
+msgid " -r, --root <path> set an alternate installation root\n"
+msgstr ""
+" -r, --root <путь> указать альтернативную корневую директорию Ð´Ð»Ñ "
+"уÑтановки\n"
+
+#: src/pacman/pacman.c:145
+#, c-format
+msgid " -b, --dbpath <path> set an alternate database location\n"
+msgstr ""
+" -b, --dbpath <путь> указать альтернативное раÑположение базы данных\n"
+
+#: src/pacman/pacman.c:146
+#, c-format
+msgid " --cachedir <dir> set an alternate package cache location\n"
+msgstr " --cachedir <dir> указать альтернативное раÑположение кÑша\n"
+
+#: src/pacman/pacman.c:159
+#, fuzzy, c-format
+msgid ""
+" This program may be freely redistributed under\n"
+" the terms of the GNU General Public License\n"
+msgstr ""
+" This program may be freely redistributed under\n"
+
+#: src/pacman/pacman.c:250
+#, c-format
+msgid "problem setting rootdir '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:267
+#, c-format
+msgid "problem setting dbpath '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:275
+#, c-format
+msgid "problem setting logfile '%s' (%s)\n"
+msgstr ""
+
+#: src/pacman/pacman.c:384
+#, fuzzy, c-format
+msgid "'%s' is not a valid debug level\n"
+msgstr "'%s' - неверный уровень отладки"
+
+#: src/pacman/pacman.c:398 src/pacman/pacman.c:677
+#, fuzzy, c-format
+msgid "problem adding cachedir '%s' (%s)\n"
+msgstr "ну удалоÑÑŒ добавить цель '%s' (%s)\n"
+
+#: src/pacman/pacman.c:484
+msgid "only one operation may be used at a time\n"
+msgstr "одновременно может выполнÑÑ‚ÑŒÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ одна операциÑ\n"
+
+#: src/pacman/pacman.c:544
+#, c-format
+msgid "config file %s could not be read.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:580
+#, c-format
+msgid "config file %s, line %d: bad section name.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:602
+#, c-format
+msgid "config file %s, line %d: syntax error in config file- missing key.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:612
+#, c-format
+msgid ""
+"config file %s, line %d: 'Include' directive must belong to a section.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:640 src/pacman/pacman.c:702 src/pacman/pacman.c:717
+#, c-format
+msgid "config file %s, line %d: directive '%s' not recognized.\n"
+msgstr ""
+
+#: src/pacman/pacman.c:787
+#, c-format
+msgid "failed to initialize alpm library (%s)\n"
+msgstr "не удалоÑÑŒ инициализировать библиотеку alpm (%s)\n"
+
+#: src/pacman/pacman.c:824
+msgid "you cannot perform this operation unless you are root.\n"
+msgstr ""
+"Ð’Ñ‹ не можете выполнить Ñту операцию не ÑвлÑÑÑÑŒ Ñуперпользователем (root).\n"
+
+#: src/pacman/pacman.c:847
+#, c-format
+msgid "could not register 'local' database (%s)\n"
+msgstr "не могу зарегиÑтрировать локальную базу данных (%s)\n"
+
+#: src/pacman/pacman.c:873
+msgid "no operation specified (use -h for help)\n"
+msgstr "не задана Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ (Ð´Ð»Ñ Ñправки иÑпользуйте -h)\n"
+
+#: src/pacman/query.c:67
+#, fuzzy, c-format
+msgid "error: no file was specified for --owns\n"
+msgstr "не был указан файл Ð´Ð»Ñ --owns\n"
+
+#: src/pacman/query.c:80
+#, fuzzy, c-format
+msgid "error: failed to read file '%s': %s\n"
+msgstr "не удалоÑÑŒ прочитать файл '%s': %s"
+
+#: src/pacman/query.c:87
+#, fuzzy, c-format
+msgid "error: cannot determine ownership of a directory\n"
+msgstr "не удалоÑÑŒ определить владельца каталога"
+
+#: src/pacman/query.c:95
+#, fuzzy, c-format
+msgid "error: cannot determine real path for '%s': %s\n"
+msgstr "не удалоÑÑŒ определить наÑтоÑщий путь Ð´Ð»Ñ '%s': %s"
+
+#: src/pacman/query.c:117
+#, c-format
+msgid "%s is owned by %s %s\n"
+msgstr "%s принадлежит %s %s\n"
+
+#: src/pacman/query.c:125
+#, fuzzy, c-format
+msgid "error: No package owns %s\n"
+msgstr "Ðи один пакет не Ñодержит %s\n"
+
+#: src/pacman/query.c:221
+#, fuzzy, c-format
+msgid "error: group \"%s\" was not found\n"
+msgstr "группа \"%s\" не найдена\n"
+
+#: src/pacman/query.c:232
+#, fuzzy, c-format
+msgid "Checking for package upgrades... \n"
+msgstr "Проверка обновлений..."
+
+#: src/pacman/query.c:243
+#, fuzzy, c-format
+msgid "no upgrades found.\n"
+msgstr "обновлений не найдено"
+
+#: src/pacman/query.c:362 src/pacman/sync.c:743
+msgid "no usable package repositories configured.\n"
+msgstr "ни один репозиторий не Ñконфигурирован должным образом.\n"
+
+#: src/pacman/query.c:406
+#, fuzzy, c-format
+msgid "error: package \"%s\" not found\n"
+msgstr "пакет \"%s\" не найден\n"
+
+#: src/pacman/remove.c:78 src/pacman/sync.c:583
+#, c-format
+msgid ":: group %s:\n"
+msgstr ":: группа %s:\n"
+
+#: src/pacman/remove.c:80
+msgid " Remove whole content? [Y/n] "
+msgstr " Удалить вÑе Ñодержимое? [Y/n] "
+
+#: src/pacman/remove.c:84
+#, c-format
+msgid ":: Remove %s from group %s? [Y/n] "
+msgstr ":: Удалить %s из группы %s? [Y/n] "
+
+#: src/pacman/remove.c:97 src/pacman/sync.c:479 src/pacman/sync.c:540
+#, fuzzy, c-format
+msgid "error: failed to init transaction (%s)\n"
+msgstr "не удалоÑÑŒ начать операцию (%s)\n"
+
+#: src/pacman/remove.c:113
+#, fuzzy, c-format
+msgid "error: failed to add target '%s' (%s)\n"
+msgstr "ну удалоÑÑŒ добавить цель '%s' (%s)\n"
+
+#: src/pacman/remove.c:158 src/pacman/util.c:462
+msgid "Targets:"
+msgstr "Цели:"
+
+#: src/pacman/remove.c:161
+msgid ""
+"\n"
+"Do you want to remove these packages? [Y/n] "
+msgstr ""
+"\n"
+"Хотите удалить Ñти пакеты? [Y/n] "
+
+#: src/pacman/sync.c:52
+#, fuzzy, c-format
+msgid "error: could not access database directory\n"
+msgstr "нет доÑтупа к кÑш-директории\n"
+
+#: src/pacman/sync.c:83
+#, fuzzy, c-format
+msgid "Do you want to remove %s? [Y/n] "
+msgstr ""
+"\n"
+"Хотите удалить Ñти пакеты? [Y/n] "
+
+#: src/pacman/sync.c:88
+#, fuzzy, c-format
+msgid "error: could not remove repository directory\n"
+msgstr "не могу удалить кÑш-директорию\n"
+
+#: src/pacman/sync.c:101
+#, c-format
+msgid "Database directory: %s\n"
+msgstr ""
+
+#: src/pacman/sync.c:102
+#, fuzzy
+msgid "Do you want to remove unused repositories? [Y/n] "
+msgstr ""
+"\n"
+"Хотите удалить Ñти пакеты? [Y/n] "
+
+#: src/pacman/sync.c:112
+#, c-format
+msgid "Database directory cleaned up\n"
+msgstr ""
+
+#: src/pacman/sync.c:130 src/pacman/sync.c:177
+#, fuzzy, c-format
+msgid "Cache directory: %s\n"
+msgstr "Ðрхитектура : %s\n"
+
+#: src/pacman/sync.c:131
+#, fuzzy
+msgid "Do you want to remove uninstalled packages from cache? [Y/n] "
+msgstr "Хотите удалить вÑе пакеты из кÑша? [Y/n] "
+
+#: src/pacman/sync.c:134
+#, c-format
+msgid "removing old packages from cache... "
+msgstr "удалÑÑŽ Ñтарые пакеты из кÑша... "
+
+#: src/pacman/sync.c:138
+#, fuzzy, c-format
+msgid "error: could not access cache directory\n"
+msgstr "нет доÑтупа к кÑш-директории\n"
+
+#: src/pacman/sync.c:178
+#, fuzzy
+msgid "Do you want to remove ALL packages from cache? [Y/n] "
+msgstr "Хотите удалить Ñтарые пакеты из кÑша? [Y/n] "
+
+#: src/pacman/sync.c:181
+#, c-format
+msgid "removing all packages from cache... "
+msgstr "удалÑÑŽ вÑе пакеты из кÑша... "
+
+#: src/pacman/sync.c:184
+#, fuzzy, c-format
+msgid "error: could not remove cache directory\n"
+msgstr "не могу удалить кÑш-директорию\n"
+
+#: src/pacman/sync.c:189
+#, fuzzy, c-format
+msgid "error: could not create new cache directory\n"
+msgstr "не могу Ñоздать новую директорию Ð´Ð»Ñ ÐºÑша\n"
+
+#: src/pacman/sync.c:216
+#, fuzzy, c-format
+msgid "error: failed to synchronize %s: %s\n"
+msgstr "не удалоÑÑŒ Ñинхронизировать %s: %s\n"
+
+#: src/pacman/sync.c:219
+#, fuzzy, c-format
+msgid "error: failed to update %s (%s)\n"
+msgstr "не удалоÑÑŒ обновить %s (%s)\n"
+
+#: src/pacman/sync.c:223
+#, c-format
+msgid " %s is up to date\n"
+msgstr " %s не уÑтарел\n"
+
+#: src/pacman/sync.c:366
+#, fuzzy, c-format
+msgid "error: repository '%s' does not exist\n"
+msgstr "репозиторий '%s' не ÑущеÑтвует\n"
+
+#: src/pacman/sync.c:381
+#, fuzzy, c-format
+msgid "error: package '%s' was not found in repository '%s'\n"
+msgstr "пакет '%s' не найден в репозитории '%s'\n"
+
+#: src/pacman/sync.c:401
+#, fuzzy, c-format
+msgid "error: package '%s' was not found\n"
+msgstr "пакет '%s' не найден\n"
+
+#: src/pacman/sync.c:438
+#, fuzzy, c-format
+msgid "error: repository \"%s\" was not found.\n"
+msgstr "репозиторий \"%s\" не найден.\n"
+
+#: src/pacman/sync.c:490
+#, c-format
+msgid ":: Synchronizing package databases...\n"
+msgstr ":: Синхронизирую базу данных пакетов...\n"
+
+#: src/pacman/sync.c:493
+#, fuzzy, c-format
+msgid "error: failed to synchronize any databases\n"
+msgstr "не удалоÑÑŒ Ñинхронизировать ни одну базу данных"
+
+#: src/pacman/sync.c:505
+#, c-format
+msgid ":: Starting full system upgrade...\n"
+msgstr ":: Ðачинаю полное обновление ÑиÑтемы...\n"
+
+#: src/pacman/sync.c:526
+#, c-format
+msgid ""
+":: pacman has detected a newer version of itself.\n"
+":: It is recommended that you upgrade pacman by itself\n"
+":: using 'pacman -S pacman', and then rerun the current\n"
+":: operation. If you wish to continue the operation and\n"
+":: not upgrade pacman separately, answer no.\n"
+msgstr ""
+
+#: src/pacman/sync.c:531
+msgid ":: Cancel current operation? [Y/n] "
+msgstr ""
+
+#: src/pacman/sync.c:533 src/pacman/sync.c:720
+#, fuzzy, c-format
+msgid "error: failed to release transaction (%s)\n"
+msgstr "не удалоÑÑŒ продолжить операцию (%s)\n"
+
+#: src/pacman/sync.c:545
+#, fuzzy, c-format
+msgid "error: pacman: %s\n"
+msgstr "pacman: %s\n"
+
+#: src/pacman/sync.c:569
+#, fuzzy, c-format
+msgid "error: '%s': %s\n"
+msgstr "'%s': %s\n"
+
+#: src/pacman/sync.c:588
+msgid ":: Install whole content? [Y/n] "
+msgstr ":: УÑтановить в полном объеме? [Y/n] "
+
+#: src/pacman/sync.c:595
+#, c-format
+msgid ":: Install %s from group %s? [Y/n] "
+msgstr ":: УÑтановить %s из группы %s? [Y/n] "
+
+#: src/pacman/sync.c:604
+#, fuzzy, c-format
+msgid "error: '%s': not found in sync db\n"
+msgstr "'%s': не найдено в базе пакетов\n"
+
+#: src/pacman/sync.c:631
+#, fuzzy, c-format
+msgid ":: %s: conflicts with %s\n"
+msgstr ":: %s: конфликтует Ñ %s"
+
+#: src/pacman/sync.c:645
+#, c-format
+msgid " local database is up to date\n"
+msgstr " Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð±Ð°Ð·Ð° данных не уÑтарела\n"
+
+#: src/pacman/sync.c:657
+#, fuzzy, c-format
+msgid "Beginning download...\n"
+msgstr ""
+"\n"
+"Ðачинаю загрузку...\n"
+
+#: src/pacman/sync.c:660
+msgid "Proceed with download? [Y/n] "
+msgstr "ПриÑтупить к загрузке? [Y/n] "
+
+#: src/pacman/sync.c:664
+#, fuzzy, c-format
+msgid "Beginning upgrade process...\n"
+msgstr ""
+"\n"
+"Ðачинаю процеÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ...\n"
+
+#: src/pacman/sync.c:667
+msgid "Proceed with installation? [Y/n] "
+msgstr "ПриÑтупить к уÑтановке? [Y/n] "
+
+#: src/pacman/sync.c:708
+#, fuzzy, c-format
+msgid "Errors occurred, no packages were upgraded.\n"
+msgstr ""
+"\n"
+"произошли ошибки, пакеты не были обновлены.\n"
+
+#: src/pacman/util.c:356 src/pacman/util.c:388
+#, c-format
+msgid "None\n"
+msgstr "Ðе указано\n"
+
+#: src/pacman/util.c:454
+msgid "Remove:"
+msgstr "Удалить:"
+
+#: src/pacman/util.c:458
+#, fuzzy, c-format
+msgid "Total Removed Size: %.2f MB\n"
+msgstr ""
+"\n"
+"Итого удалено: %.2f МБ\n"
+
+#: src/pacman/util.c:465
+#, fuzzy, c-format
+msgid "Total Download Size: %.2f MB\n"
+msgstr "Итого уÑтановлено: %.2f МБ\n"
+
+#: src/pacman/util.c:469
+#, c-format
+msgid "Total Installed Size: %.2f MB\n"
+msgstr "Итого уÑтановлено: %.2f МБ\n"
+
+#: src/pacman/util.c:496
+msgid "Y"
+msgstr "Y"
+
+#: src/pacman/util.c:496
+msgid "YES"
+msgstr "YES"
+
+#: src/pacman/util.c:557
+#, fuzzy, c-format
+msgid "debug: "
+msgstr "отладка"
+
+#: src/pacman/util.c:560
+#, c-format
+msgid "error: "
+msgstr "ошибка: "
+
+#: src/pacman/util.c:563
+#, c-format
+msgid "warning: "
+msgstr "предупреждение: "
+
+#: src/pacman/util.c:568
+#, fuzzy, c-format
+msgid "function: "
+msgstr "функциÑ"
+
+#: scripts/abs.sh.in:60 scripts/makepkg.sh.in:110 scripts/makepkg.sh.in:112
+#: scripts/repo-add.sh.in:50 scripts/repo-remove.sh.in:50
+msgid "ERROR:"
+msgstr ""
+
+#: scripts/abs.sh.in:65
+msgid "abs (pacman) %s - download a PKGBUILD tree from a CVS repository"
+msgstr ""
+
+#: scripts/abs.sh.in:66
+msgid "Usage %s [options] [repository...]"
+msgstr ""
+
+#: scripts/abs.sh.in:67 scripts/makepkg.sh.in:1055
+#, fuzzy
+msgid "Options:"
+msgstr "параметры:\n"
+
+#: scripts/abs.sh.in:68
+msgid " -p, --passive The connection is opened in passive mode."
+msgstr ""
+
+#: scripts/abs.sh.in:70
+msgid " -h, --help Display this help message then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:71
+msgid " -V, --version Display version information then exit."
+msgstr ""
+
+#: scripts/abs.sh.in:73
+msgid ""
+"abs will synchronize build scripts from the CVS repository\\ninto %s. You "
+"can follow different package trees by\\nediting %s files. If no argument is "
+"given, abs\\nwill synchronize from supfiles specified in %s.\\n\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:79
+msgid "Report bugs to <%s>."
+msgstr ""
+
+#: scripts/abs.sh.in:84 scripts/gensync.sh.in:54 scripts/makepkg.sh.in:1088
+#: scripts/pacman-optimize.sh.in:59 scripts/repo-remove.sh.in:66
+msgid ""
+"Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/abs.sh.in:130 scripts/pacman-optimize.sh.in:100
+#, fuzzy
+msgid "%s does not exist or is not a directory."
+msgstr "'%s' неправильно указан путь к кÑш-директории\n"
+
+#: scripts/abs.sh.in:133
+msgid "You do not have write permissions in %s."
+msgstr ""
+
+#: scripts/abs.sh.in:143
+msgid "Missing CVS synchronization utility. Install csup or cvsup."
+msgstr ""
+
+#: scripts/abs.sh.in:166
+#, fuzzy
+msgid "Updating %s..."
+msgstr "обновлÑÑŽ %s... "
+
+#: scripts/gensync.sh.in:34
+msgid "Usage: %s <root> <destfile> [package_directory]"
+msgstr ""
+
+#: scripts/gensync.sh.in:35
+msgid ""
+"gensync will generate a sync database by reading all PKGBUILD files\\nfrom "
+"<root>. gensync builds the database in a temporary directory\\nand then "
+"compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:39
+msgid ""
+"gensync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:42
+msgid ""
+"note: The <destfile> name is important. It must be of the form\\n "
+"{treename}.db.tar.gz where {treename} is the name of the custom\\n "
+"package repository you configured in /etc/pacman.conf. The\\n generated "
+"database must reside in the same directory as your\\n custom packages "
+"(also configured in /etc/pacman.conf)\\n\\n"
+msgstr ""
+
+#: scripts/gensync.sh.in:48
+msgid "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
+msgstr ""
+
+#: scripts/gensync.sh.in:102 scripts/updatesync.sh.in:101
+msgid "%s not found. Can not continue."
+msgstr ""
+
+#: scripts/gensync.sh.in:120
+msgid "invalid root dir: %s"
+msgstr ""
+
+#: scripts/gensync.sh.in:122
+msgid "gensync: building database entries, generating md5sums..."
+msgstr ""
+
+#: scripts/gensync.sh.in:131
+#, fuzzy
+msgid "failed to parse parse %s"
+msgstr "не удалоÑÑŒ обновить %s (%s)\n"
+
+#: scripts/gensync.sh.in:142
+msgid "could not find %s-%s-%s-%s.%s - skipping"
+msgstr ""
+
+#: scripts/gensync.sh.in:152
+#, fuzzy
+msgid "creating repo DB..."
+msgstr "убираем за Ñобой... "
+
+#: scripts/makepkg.sh.in:101 scripts/makepkg.sh.in:103
+#: scripts/repo-add.sh.in:45 scripts/repo-remove.sh.in:45
+msgid "WARNING:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:143
+#, fuzzy
+msgid "Cleaning up..."
+msgstr "убираем за Ñобой... "
+
+#: scripts/makepkg.sh.in:193
+msgid ""
+"Options beginning with 'no' will be deprecated in the next version of "
+"makepkg!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:194
+msgid "Please replace 'no' with '!': %s -> %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:198
+msgid "Option 'keepdocs' may not work as intended. Please replace with 'docs'."
+msgstr ""
+
+#: scripts/makepkg.sh.in:286
+msgid "There is no agent set up to handle %s URLs. Check %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:287 scripts/makepkg.sh.in:296
+#: scripts/makepkg.sh.in:448 scripts/makepkg.sh.in:476
+#: scripts/makepkg.sh.in:522 scripts/makepkg.sh.in:610
+#: scripts/makepkg.sh.in:638 scripts/makepkg.sh.in:700
+#: scripts/makepkg.sh.in:767 scripts/makepkg.sh.in:1105
+#: scripts/makepkg.sh.in:1415 scripts/makepkg.sh.in:1419
+msgid "Aborting..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:295
+msgid "The download program %s is not installed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:311
+msgid "Pacman returned a fatal error (%i): %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:335
+#, fuzzy
+msgid "Installing missing dependencies..."
+msgstr "разрешаю завиÑимоÑти... "
+
+#: scripts/makepkg.sh.in:345
+msgid "Pacman failed to install missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:349
+#, fuzzy
+msgid "Building missing dependencies..."
+msgstr "разрешаю завиÑимоÑти... "
+
+#: scripts/makepkg.sh.in:354
+msgid "Source root cannot be found - please make sure it is specified in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:362
+msgid "Could not find '%s' under %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:378
+#, fuzzy
+msgid "Failed to build '%s'"
+msgstr "не удалоÑÑŒ прочитать файл '%s': %s"
+
+#: scripts/makepkg.sh.in:411
+msgid "Failed to install all missing dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:414
+#, fuzzy
+msgid "Missing Dependencies:"
+msgstr "разрешаю завиÑимоÑти... "
+
+#: scripts/makepkg.sh.in:444
+#, fuzzy
+msgid "Retrieving Sources..."
+msgstr ":: Получение пакетов Ñ %s...\n"
+
+#: scripts/makepkg.sh.in:447
+msgid "You do not have write permission to store downloads in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:458
+msgid "Found %s in build dir"
+msgstr ""
+
+#: scripts/makepkg.sh.in:462
+msgid "Using cached copy of %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:470
+#, fuzzy
+msgid "Downloading %s..."
+msgstr "обновлÑÑŽ %s... "
+
+#: scripts/makepkg.sh.in:475
+msgid "Failure while downloading %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:486
+#, fuzzy
+msgid "Generating checksums for source files..."
+msgstr "ошибка при вычиÑлении контрольной Ñуммы Ð´Ð»Ñ %s\n"
+
+#: scripts/makepkg.sh.in:495
+msgid "Invalid integrity algorithm '%s' specified."
+msgstr ""
+
+#: scripts/makepkg.sh.in:500 scripts/makepkg.sh.in:552
+msgid "Cannot find the '%s' program."
+msgstr ""
+
+#: scripts/makepkg.sh.in:521
+msgid "Unable to find source file %s to generate checksum."
+msgstr ""
+
+#: scripts/makepkg.sh.in:547
+msgid "Invalid integrity algorithm '%s' specified"
+msgstr ""
+
+#: scripts/makepkg.sh.in:558
+msgid "Validating source files with %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:568
+msgid "NOT FOUND"
+msgstr ""
+
+#: scripts/makepkg.sh.in:577
+msgid "Passed"
+msgstr ""
+
+#: scripts/makepkg.sh.in:579
+msgid "FAILED"
+msgstr ""
+
+#: scripts/makepkg.sh.in:587
+msgid "One or more files did not pass the validity check!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:591
+msgid "Integrity checks (%s) are missing or incomplete."
+msgstr ""
+
+#: scripts/makepkg.sh.in:597
+msgid "Extracting Sources..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:609
+msgid "Unable to find source file %s for extraction."
+msgstr ""
+
+#: scripts/makepkg.sh.in:637
+#, fuzzy
+msgid "Failed to extract %s"
+msgstr "не удалоÑÑŒ подготовить операцию (%s)\n"
+
+#: scripts/makepkg.sh.in:669
+msgid "Starting build()..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:699
+msgid "Build Failed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:708
+msgid "Tidying install..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:711
+#, fuzzy
+msgid "Removing info/doc files..."
+msgstr "разрешаю завиÑимоÑти... "
+
+#: scripts/makepkg.sh.in:717
+msgid "Moving usr/share/man files to usr/man..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:724
+msgid "Compressing man pages..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:742
+msgid "Stripping debugging symbols from binaries and libraries..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:754
+msgid "Removing libtool .la files..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:759
+#, fuzzy
+msgid "Removing empty directories..."
+msgstr "разрешаю завиÑимоÑти... "
+
+#: scripts/makepkg.sh.in:766
+msgid "Missing pkg/ directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:772
+#, fuzzy
+msgid "Creating package..."
+msgstr "чтение информации о пакете... "
+
+#: scripts/makepkg.sh.in:782
+msgid "Generating .FILELIST file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:792
+msgid "Generating .PKGINFO file..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:838
+msgid "Please add a license line to your %s!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:839
+msgid "Example for GPL'ed software: license=('GPL')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:847 scripts/makepkg.sh.in:942
+msgid "Adding install script..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:854
+#, fuzzy
+msgid "Adding package changelog..."
+msgstr "чтение информации о пакете... "
+
+#: scripts/makepkg.sh.in:860
+#, fuzzy
+msgid "Compressing package..."
+msgstr "чтение информации о пакете... "
+
+#: scripts/makepkg.sh.in:865
+#, fuzzy
+msgid "Failed to create package file."
+msgstr "не удалоÑÑŒ загрузить пакет '%s' (%s)\n"
+
+#: scripts/makepkg.sh.in:874
+msgid "Cannot find the xdelta binary! Is xdelta installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:904
+msgid "Making delta from version %s..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:918
+msgid "Recreating package tarball from delta to match md5 signatures"
+msgstr ""
+
+#: scripts/makepkg.sh.in:919
+msgid "NOTE: the delta should ONLY be distributed with this tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:923
+msgid "Could not generate the package from the delta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:927
+msgid "Delta was not able to be created."
+msgstr ""
+
+#: scripts/makepkg.sh.in:930
+msgid "No previous version found, skipping xdelta."
+msgstr ""
+
+#: scripts/makepkg.sh.in:936
+#, fuzzy
+msgid "Creating source package..."
+msgstr "Проверка обновлений..."
+
+#: scripts/makepkg.sh.in:938 scripts/makepkg.sh.in:950
+#: scripts/makepkg.sh.in:957
+#, fuzzy
+msgid "Adding %s..."
+msgstr "обновлÑÑŽ %s... "
+
+#: scripts/makepkg.sh.in:945
+#, fuzzy
+msgid "Install script %s not found."
+msgstr "Скрипт при уÑтановке : %s\n"
+
+#: scripts/makepkg.sh.in:965
+#, fuzzy
+msgid "Compressing source package..."
+msgstr "Проверка обновлений..."
+
+#: scripts/makepkg.sh.in:967
+msgid "Failed to create source package file."
+msgstr ""
+
+#: scripts/makepkg.sh.in:975
+#, fuzzy
+msgid "Installing package with pacman -U..."
+msgstr "чтение информации о пакете... "
+
+#: scripts/makepkg.sh.in:992
+msgid "Determining latest darcs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:995
+msgid "Determining latest cvs revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:998
+msgid "Determining latest git revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1001
+msgid "Determining latest svn revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1004
+msgid "Determining latest bzr revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1007
+msgid "Determining latest hg revision..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1022
+#, fuzzy
+msgid "Version found: %s"
+msgstr "ВерÑÐ¸Ñ : %s\n"
+
+#: scripts/makepkg.sh.in:1053
+#, fuzzy
+msgid "Usage: %s [options]"
+msgstr "иÑпользование: %s {-A --add} [параметры] <файл>\n"
+
+#: scripts/makepkg.sh.in:1056
+msgid " -A, --ignorearch Ignore incomplete arch field in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1057
+msgid " -b, --builddeps Build missing dependencies from source"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1058
+msgid " -c, --clean Clean up work files after build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1059
+msgid " -C, --cleancache Clean up source files from the cache"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1060
+#, fuzzy
+msgid " -d, --nodeps Skip all dependency checks"
+msgstr " -d, --nodeps не проверÑÑ‚ÑŒ завиÑимоÑти\n"
+
+#: scripts/makepkg.sh.in:1061
+msgid " -e, --noextract Do not extract source files (use existing src/ dir)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1062
+#, fuzzy
+msgid " -f, --force Overwrite existing package"
+msgstr ""
+" -f, --force Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÑƒÑтановка, перезапиÑывать "
+"конфликтующие файлы\n"
+
+#: scripts/makepkg.sh.in:1063
+msgid " -g, --geninteg Generate integrity checks for source files"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1064
+msgid " -h, --help This help"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1065
+msgid " -i, --install Install package after successful build"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1066
+#, fuzzy
+msgid " -L, --log Log package build process"
+msgstr " -i, --info показать информацию о пакете\n"
+
+#: scripts/makepkg.sh.in:1067
+msgid " -m, --nocolor Disable colorized output messages"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1068
+msgid " -o, --nobuild Download and extract files only"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1069
+msgid " -p <buildscript> Use an alternate build script (instead of '%s')"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1070
+#, fuzzy
+msgid ""
+" -r, --rmdeps Remove installed dependencies after a successful build"
+msgstr " -e, --dependsonly уÑтановить только завиÑимоÑти\n"
+
+#: scripts/makepkg.sh.in:1072
+msgid " -R, --repackage Repackage contents of pkg/ without building"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1073
+#, fuzzy
+msgid " -s, --syncdeps Install missing dependencies with pacman"
+msgstr " -e, --dependsonly уÑтановить только завиÑимоÑти\n"
+
+#: scripts/makepkg.sh.in:1074
+msgid " --asroot Allow makepkg to run as root user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1075
+msgid " --source Do not build package; generate a source-only tarball"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1077
+msgid "These options can be passed to pacman:"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1079
+#, fuzzy
+msgid ""
+" --noconfirm Do not ask for confirmation when resolving "
+"dependencies"
+msgstr " --noconfirm не Ñпрашивать подтверждениÑ\n"
+
+#: scripts/makepkg.sh.in:1080
+#, fuzzy
+msgid ""
+" --noprogressbar Do not show a progress bar when downloading files"
+msgstr " --noprogressbar не отображать прогреÑÑ Ð¿Ñ€Ð¸ Ñкачивании файлов\n"
+
+#: scripts/makepkg.sh.in:1082
+msgid "If -p is not specified, makepkg will look for '%s'"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1104
+#, fuzzy
+msgid "%s not found."
+msgstr "пакет \"%s\" не найден\n"
+
+#: scripts/makepkg.sh.in:1177
+msgid "Sudo is used by default now. The --usesudo option is deprecated!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1192
+msgid "Cleaning up ALL files from %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1193
+msgid " Are you sure you wish to do this? [Y/n] "
+msgstr ""
+
+#: scripts/makepkg.sh.in:1199
+msgid "Problem removing files; you may not have correct permissions in %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1203
+msgid "Source cache cleaned."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1208
+msgid "No files have been removed."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1213
+msgid "Source destination must be defined in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1214
+msgid "In addition, please run makepkg -C outside of your cache directory."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1220
+msgid "BUILDSCRIPT is undefined! Ensure you have updated %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1227
+msgid "Running makepkg as root is a BAD idea and can cause"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1228
+msgid "permanent, catastrophic damage to your system. If you"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1229
+msgid "wish to run as root, please use the --asroot option."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1233
+msgid "The --asroot option is meant for the root user only."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1234
+msgid "Please rerun makepkg without the --asroot flag."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1238
+msgid "Fakeroot must be installed if using the 'fakeroot' option"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1239
+msgid "in the BUILDENV array in %s."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1243
+msgid "Running makepkg as an unprivileged user will result in non-root"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1244
+msgid "ownership of the packaged files. Try using the fakeroot environment by"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1245
+msgid "placing 'fakeroot' in the BUILDENV array in makepkg.conf."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1250
+msgid "Do not use the '-F' option. This option is only for use by makepkg."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1259
+msgid "Cannot find the sudo binary! Is sudo installed?"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1260
+msgid "Missing dependencies cannot be installed or removed as a normal user"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1261
+msgid "without sudo; install and configure sudo to auto-resolve dependencies."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1271
+#, fuzzy
+msgid "%s does not exist."
+msgstr "репозиторий '%s' не ÑущеÑтвует\n"
+
+#: scripts/makepkg.sh.in:1286 scripts/makepkg.sh.in:1290
+#, fuzzy
+msgid "%s is not allowed to be empty."
+msgstr "'%s' неправильно указан путь к базе данных\n"
+
+#: scripts/makepkg.sh.in:1294 scripts/makepkg.sh.in:1298
+msgid "%s is not allowed to contain hyphens."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1308 scripts/makepkg.sh.in:1313
+msgid "%s is not available for the '%s' architecture."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1309 scripts/makepkg.sh.in:1314
+msgid "Note that many packages may need a line added to their %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1310 scripts/makepkg.sh.in:1315
+msgid "such as arch=('%s')."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1320
+#, fuzzy
+msgid "Install scriptlet (%s) does not exist."
+msgstr "репозиторий '%s' не ÑущеÑтвует\n"
+
+#: scripts/makepkg.sh.in:1330
+msgid "A package has already been built, installing existing package..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1334 scripts/makepkg.sh.in:1366
+msgid "A package has already been built. (use -f to overwrite)"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1343 scripts/makepkg.sh.in:1442
+msgid "Skipping build."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1352
+msgid "Leaving fakeroot environment."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1356
+#, fuzzy
+msgid "Making package: %s"
+msgstr "чтение информации о пакете... "
+
+#: scripts/makepkg.sh.in:1359
+msgid "Running makepkg as root..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1370
+msgid "Source package created: %s"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1377
+#, fuzzy
+msgid "Skipping dependency checks."
+msgstr "проверÑÑŽ завиÑимоÑти... "
+
+#: scripts/makepkg.sh.in:1384
+#, fuzzy
+msgid "Checking Runtime Dependencies..."
+msgstr "проверÑÑŽ завиÑимоÑти... "
+
+#: scripts/makepkg.sh.in:1387
+#, fuzzy
+msgid "Checking Buildtime Dependencies..."
+msgstr "проверÑÑŽ завиÑимоÑти... "
+
+#: scripts/makepkg.sh.in:1391
+#, fuzzy
+msgid "Could not resolve all dependencies."
+msgstr "разрешаю завиÑимоÑти... "
+
+#: scripts/makepkg.sh.in:1395
+msgid "pacman was not found in PATH; skipping dependency checks."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1409
+msgid "Skipping source retrieval -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1410
+msgid "Skipping source integrity checks -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1411
+msgid "Skipping source extraction -- using existing src/ tree"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1414
+msgid "The source directory is empty, there is nothing to build!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1418
+msgid "The package directory is empty, there is nothing to repackage!"
+msgstr ""
+
+#: scripts/makepkg.sh.in:1429
+msgid "Sources are ready."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1434
+msgid "Removing existing pkg/ directory..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1451
+msgid "Entering fakeroot environment..."
+msgstr ""
+
+#: scripts/makepkg.sh.in:1464
+msgid "Finished making: %s"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:44
+msgid "Usage: %s [pacman_db_root]"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:45
+msgid ""
+"pacman-optimize is a little hack that should improve the performance\\nof "
+"pacman when reading/writing to its filesystem-based database.\\n\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:48
+msgid ""
+"Because pacman uses many small files to keep track of packages,\\nthere is a "
+"tendency for these files to become fragmented over time.\\nThis script "
+"attempts to relocate these small files into one\\ncontinuous location on "
+"your hard drive. The result is that the hard\\ndrive should be able to read "
+"them faster, since the hard drive head\\ndoes not have to move around the "
+"disk as much.\\n"
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:91
+msgid "diff tool was not found, please install diffutils."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:96
+msgid "Pacman lock file was found. Cannot run while pacman is running."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:104
+msgid "You must have correct permissions to optimize the database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:108
+msgid "ERROR: Can not create temp directory for database building."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:114
+msgid "MD5sum'ing the old database..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:118
+#, fuzzy
+msgid "Tar'ing up %s..."
+msgstr "убираем за Ñобой... "
+
+#: scripts/pacman-optimize.sh.in:123
+msgid "Tar'ing up %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:127
+msgid "Making and MD5sum'ing the new db..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:132
+msgid "Untar'ing %s failed."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:138
+#, fuzzy
+msgid "Checking integrity..."
+msgstr "проверÑÑŽ целоÑтноÑÑ‚ÑŒ пакета... "
+
+#: scripts/pacman-optimize.sh.in:144
+msgid "Integrity check FAILED, reverting to old database."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:149
+msgid "Putting the new database in place..."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:158
+msgid "Finished. Your pacman database has been optimized."
+msgstr ""
+
+#: scripts/pacman-optimize.sh.in:159
+msgid "For full benefits of pacman-optimize, run 'sync' now."
+msgstr ""
+
+#: scripts/repo-add.sh.in:56
+msgid "Usage: %s <path-to-db> [--force] <package> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:57
+msgid ""
+"repo-add will update a package database by reading a package file."
+"\\nMultiple packages to add can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:60
+msgid ""
+"The --force flag will add a 'force' entry to the sync database, which"
+"\\ntells pacman to skip its internal version number checking and update"
+"\\nthe package regardless.\\n\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:64
+msgid "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
+msgstr ""
+
+#: scripts/repo-add.sh.in:69
+msgid ""
+"Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/repo-add.sh.in:173
+msgid "Invalid package file '%s'."
+msgstr ""
+
+#: scripts/repo-add.sh.in:182 scripts/repo-remove.sh.in:91
+#, fuzzy
+msgid "Removing existing package '%s'..."
+msgstr ":: Получение пакетов Ñ %s...\n"
+
+#: scripts/repo-add.sh.in:192
+msgid "Creating 'desc' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:202
+msgid "Computing md5 checksums..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:214
+#, fuzzy
+msgid "Creating 'depends' db entry..."
+msgstr "разрешаю завиÑимоÑти... "
+
+#: scripts/repo-add.sh.in:230
+msgid "Creating 'deltas' db entry..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:236
+msgid "Added delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:238
+msgid "Could not add delta '%s'"
+msgstr ""
+
+#: scripts/repo-add.sh.in:276 scripts/repo-remove.sh.in:123
+msgid "%s not found. Cannot continue."
+msgstr ""
+
+#: scripts/repo-add.sh.in:286 scripts/repo-remove.sh.in:133
+msgid "Cannot create temp directory for database building."
+msgstr ""
+
+#: scripts/repo-add.sh.in:297 scripts/repo-remove.sh.in:142
+msgid "Repository file '%s' is not a proper pacman database."
+msgstr ""
+
+#: scripts/repo-add.sh.in:300 scripts/repo-remove.sh.in:145
+msgid "Extracting database to a temporary location..."
+msgstr ""
+
+#: scripts/repo-add.sh.in:306
+msgid "'%s' is not a package file, skipping"
+msgstr ""
+
+#: scripts/repo-add.sh.in:308
+#, fuzzy
+msgid "Adding package '%s'"
+msgstr "чтение информации о пакете... "
+
+#: scripts/repo-add.sh.in:315
+#, fuzzy
+msgid "Package '%s' not found."
+msgstr "пакет '%s' не найден\n"
+
+#: scripts/repo-add.sh.in:322
+msgid "Creating updated database file %s"
+msgstr ""
+
+#: scripts/repo-add.sh.in:332 scripts/repo-remove.sh.in:170
+msgid "No compression set."
+msgstr ""
+
+#: scripts/repo-add.sh.in:340 scripts/repo-remove.sh.in:178
+msgid "No packages modified, nothing to do."
+msgstr ""
+
+#: scripts/repo-remove.sh.in:55
+msgid "repo-remove %s\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:56
+msgid "usage: %s <path-to-db> <packagename> ...\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:57
+msgid ""
+"repo-remove will update a package database by removing the package name"
+"\\nspecified on the command line from the given repo database. Multiple"
+"\\npackages to remove can be specified on the command line.\\n\\n"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:61
+msgid "Example: repo-remove /path/to/repo.db.tar.gz kernel26"
+msgstr ""
+
+#: scripts/repo-remove.sh.in:149
+#, fuzzy
+msgid "Searching for package '%s'..."
+msgstr "Проверка обновлений..."
+
+#: scripts/repo-remove.sh.in:154
+#, fuzzy
+msgid "Package matching '%s' not found."
+msgstr "пакет '%s' не найден\n"
+
+#: scripts/repo-remove.sh.in:161
+msgid "Creating updated database file '%s'..."
+msgstr ""
+
+#: scripts/updatesync.sh.in:35
+msgid "Usage: %s <action> <destfile> <option> [package_directory]"
+msgstr ""
+
+#: scripts/updatesync.sh.in:36
+msgid ""
+"updatesync will update a sync database by reading a PKGBUILD and\\nmodifying "
+"the destfile. updatesync updates the database in a temporary\\ndirectory and "
+"then compresses it to <destfile>.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:40
+msgid "There are two types of actions:\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:41
+msgid ""
+"upd - Will update a package's entry or create it if it doesn't exist."
+"\\n It takes the package's PKGBUILD as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:42
+msgid ""
+"del - Will remove a package's entry from the db. It takes the package's"
+"\\n name as an option.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:44
+msgid ""
+"updatesync will calculate md5sums of packages in the same directory as"
+"\\n<destfile>, unless an alternate [package_directory] is specified.\\n\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:47
+msgid "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
+msgstr ""
+
+#: scripts/updatesync.sh.in:53
+msgid ""
+"Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\\n\\nThis is free "
+"software; see the source for copying conditions.\\nThere is NO WARRANTY, to "
+"the extent permitted by law.\\n"
+msgstr ""
+
+#: scripts/updatesync.sh.in:123
+#, fuzzy
+msgid "%s not found"
+msgstr "пакет \"%s\" не найден\n"
+
+#: scripts/updatesync.sh.in:129
+#, fuzzy
+msgid "failed to parse %s"
+msgstr "не удалоÑÑŒ обработать конфигурационный файл (%s)\n"
+
+#: scripts/updatesync.sh.in:136
+msgid "could not find %s-%s-%s-%s.%s - aborting"
+msgstr ""
+
+#~ msgid ":: %.1f MB required, have %.1f MB"
+#~ msgstr ":: требуетÑÑ %.1f MB, доÑтупно %.1f MB"
+
+#~ msgid "error"
+#~ msgstr "ошибка"
+
+#~ msgid "warning"
+#~ msgstr "предупреждение"
+
+#~ msgid "Removes :"
+#~ msgstr "УдалÑет :"
+
+#~ msgid "Build Type : %s\n"
+#~ msgstr "Тип Ñборки : %s\n"
+
+#~ msgid "SHA1 Sum : %s"
+#~ msgstr "Сумма SHA1 : %s"
+
+#~ msgid "usage: %s {-R --remove} [options] <package>\n"
+#~ msgstr "иÑпользование: %s {-R --remove} [параметры] <пакет>\n"
+
+#~ msgid ""
+#~ " --ask <number> pre-specify answers for questions (see manpage)\n"
+#~ msgstr ""
+#~ " --ask <чиÑло> заранее подготовленные ответы на вопроÑÑ‹ (Ñмотрите "
+#~ "man-Ñтраницу)\n"
+
+#~ msgid "'%s' is not a valid root path\n"
+#~ msgstr "некорректный корневой каталог: '%s'\n"
+
+#~ msgid "Targets :"
+#~ msgstr "Цели :"
+
+#~ msgid "no package file was specified for --file\n"
+#~ msgstr "не указан файл пакета Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --file\n"
+
+#~ msgid ":: %s is required by %s\n"
+#~ msgstr ":: %s необходим Ð´Ð»Ñ %s\n"
+
+#~ msgid "synchronizing package lists"
+#~ msgstr "Ñинхронизирую ÑпиÑки пакетов"
+
+#~ msgid "starting full system upgrade"
+#~ msgstr "начинаю полное обновление ÑиÑтемы"
+
+#~ msgid ""
+#~ "\n"
+#~ ":: pacman has detected a newer version of the \"pacman\" package.\n"
+#~ msgstr ""
+#~ "\n"
+#~ ":: pacman обнаружил более новую верÑию пакета \"pacman\".\n"
+
+#~ msgid ":: It is recommended that you allow pacman to upgrade itself\n"
+#~ msgstr ""
+#~ ":: Рекомендуем Вам Ñначала позволить pacman'у обновить ÑÐµÐ±Ñ Ñамого,\n"
+
+#~ msgid ""
+#~ ":: first, then you can re-run the operation with the newer version.\n"
+#~ msgstr ""
+#~ ":: поÑле чего перезапуÑтить операцию Ñ Ð¸Ñпользованием новой верÑии.\n"
+
+#~ msgid ":: Upgrade pacman first? [Y/n] "
+#~ msgstr ":: Обновить pacman в первую очередь? [Y/n] "
+
+#~ msgid "requires"
+#~ msgstr "требует"
+
+#~ msgid "installed %s (%s)"
+#~ msgstr "уÑтановлено %s (%s)"
+
+#~ msgid "removed %s (%s)"
+#~ msgstr "удалено %s (%s)"
+
+#~ msgid "upgraded %s (%s -> %s)"
+#~ msgstr "обновлено %s (%s -> %s)"
+
+#~ msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
+#~ msgstr ""
+#~ ":: %s-%s: уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð½Ðµ уÑтарела. Ð’ÑÑ‘ равно обновить? [Y/n] "
+
+#~ msgid ""
+#~ "\n"
+#~ "Total Package Size: %.2f MB\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Суммарный размер пакетов: %.2f МБ\n"
+
+#~ msgid "requires: %s"
+#~ msgstr "требуетÑÑ: %s"
+
+#~ msgid "usage: %s {-h --help}\n"
+#~ msgstr "иÑпользование: %s {-h --help}\n"
+
+#~ msgid " %s {-V --version}\n"
+#~ msgstr " %s {-V --version}\n"
+
+#~ msgid " %s {-A --add} [options] <file>\n"
+#~ msgstr " %s {-A --add} [параметры] <файл>\n"
+
+#~ msgid " %s {-F --freshen} [options] <file>\n"
+#~ msgstr " %s {-F --freshen} [параметры] <файл>\n"
+
+#~ msgid " %s {-Q --query} [options] [package]\n"
+#~ msgstr " %s {-Q --query} [параметры] [пакет]\n"
+
+#~ msgid " %s {-R --remove} [options] <package>\n"
+#~ msgstr " %s {-R --remove} [параметры] <пакет>\n"
+
+#~ msgid " %s {-S --sync} [options] [package]\n"
+#~ msgstr " %s {-S --sync} [параметры] [пакет]\n"
+
+#~ msgid " %s {-U --upgrade} [options] <file>\n"
+#~ msgstr " %s {-U --upgrade} [параметры] <файл>\n"
+
+#~ msgid "usage: %s {-F --freshen} [options] <file>\n"
+#~ msgstr "иÑпользование: %s {-F --freshen} [параметры] <файл>\n"
+
+#~ msgid "usage: %s {-U --upgrade} [options] <file>\n"
+#~ msgstr "иÑпользование: %s {-U --upgrade} [параметры] <файл>\n"
+
+#~ msgid "usage: %s {-Q --query} [options] [package]\n"
+#~ msgstr "иÑпользование: %s {-Q --query} [параметры] [пакет]\n"
+
+#~ msgid " required by any package\n"
+#~ msgstr " но более не требующиеÑÑ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ пакетам\n"
+
+#~ msgid "usage: %s {-S --sync} [options] [package]\n"
+#~ msgstr "иÑпользование: %s {-S --sync} [параметры] [пакет]\n"
+
+#~ msgid " the terms of the GNU General Public License\n"
+#~ msgstr ""
+#~ " the terms of the GNU General Public License\n"
+
+#~ msgid "warning: current locale is invalid; using default \"C\" locale"
+#~ msgstr "warning: current locale is invalid; using default \"C\" locale"
diff --git a/scripts/.gitignore b/scripts/.gitignore
new file mode 100644
index 00000000..17a2a41e
--- /dev/null
+++ b/scripts/.gitignore
@@ -0,0 +1,9 @@
+abs
+gensync
+makepkg
+makeworld
+pacman-optimize
+rankmirrors
+repo-add
+repo-remove
+updatesync
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 57baee49..01250f5b 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -1,9 +1,7 @@
-# TODO: this would be nice to enable, but we need --help and --version
-# flags on all of our scripts first (this is what it checks)
-#AUTOMAKE_OPTIONS = std-options
+# enforce that all scripts have a --help and --version option
+AUTOMAKE_OPTIONS = std-options
bin_SCRIPTS = \
- abs \
gensync \
makepkg \
makeworld \
@@ -13,6 +11,58 @@ bin_SCRIPTS = \
repo-remove \
updatesync
-EXTRA_DIST = $(bin_SCRIPTS)
+if INCLUDE_ABS
+bin_SCRIPTS += abs
+endif
-abs gensync makepkg makeworld pacman-optimize rankmirrors repo-add repo-remove re-pacman updatesync:
+EXTRA_DIST = \
+ abs.sh.in \
+ gensync.sh.in \
+ makepkg.sh.in \
+ makeworld.sh.in \
+ pacman-optimize.sh.in \
+ rankmirrors.py.in \
+ repo-add.sh.in \
+ repo-remove.sh.in \
+ updatesync.sh.in
+
+# Files that should be removed, but which Automake does not know.
+MOSTLYCLEANFILES = $(bin_SCRIPTS) *.tmp
+
+#### Taken from the autoconf scripts Makefile.am ####
+edit = sed \
+ -e 's|@localedir[@]|$(localedir)|g' \
+ -e 's|@sysconfdir[@]|$(sysconfdir)|g' \
+ -e 's|@localstatedir[@]|$(localstatedir)|g' \
+ -e 's|@prefix[@]|$(prefix)|g' \
+ -e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' \
+ -e 's|@PACKAGE_BUGREPORT[@]|$(PACKAGE_BUGREPORT)|g' \
+ -e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' \
+ -e 's|@configure_input[@]|Generated from $@.in; do not edit by hand.|g'
+
+## All the scripts depend on Makefile so that they are rebuilt when the
+## prefix etc. changes. Use chmod -w to prevent people from editing the
+## wrong file by accident.
+# two 'test' lines- make sure we can handle both sh and py type scripts
+# third 'test' line- make sure one of the two checks succeeded
+$(bin_SCRIPTS): Makefile
+ rm -f $@ $@.tmp
+ test -f $(srcdir)/$@.sh.in && $(edit) $(srcdir)/$@.sh.in >$@.tmp || true
+ test -f $(srcdir)/$@.py.in && $(edit) $(srcdir)/$@.py.in >$@.tmp || true
+ test -f $@.tmp || false
+ chmod +x $@.tmp
+ chmod a-w $@.tmp
+ mv $@.tmp $@
+
+abs: $(srcdir)/abs.sh.in
+gensync: $(srcdir)/gensync.sh.in
+makepkg: $(srcdir)/makepkg.sh.in
+makeworld: $(srcdir)/makeworld.sh.in
+pacman-optimize: $(srcdir)/pacman-optimize.sh.in
+rankmirrors: $(srcdir)/rankmirrors.py.in
+repo-add: $(srcdir)/repo-add.sh.in
+repo-remove: $(srcdir)/repo-remove.sh.in
+re-pacman: $(srcdir)/re-pacman.sh.in
+updatesync: $(srcdir)/updatesync.sh.in
+
+# vim:set ts=2 sw=2 noet:
diff --git a/scripts/abs b/scripts/abs
deleted file mode 100644
index 2ec4322c..00000000
--- a/scripts/abs
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/bash
-
-CONFDIR="/etc/abs"
-CONNMODE="m"
-
-[ -f "$CONFDIR/abs.conf" ] && source "$CONFDIR/abs.conf"
-
-#user based overrides
-[ -f ~/.abs.conf ] && source ~/.abs.conf
-
-usage() {
- echo "Arch Build System -- synchronization utility"
- echo "usage: $0 [-p] [repository1 [repository2 ...]]"
- echo
- echo "abs will synchronize PKGBUILD scripts from the CVS repository"
- echo "into $ABSROOT. You can follow different package trees by"
- echo "editing /etc/abs/supfile.* files. If no argument is given, abs "
- echo "will synchronize from supfiles specified in /etc/abs/abs.conf."
- echo "If -p is specified, the connection is opened in passive mode."
-}
-
-update() {
- cd "$ABSROOT"
- for sup in "${SUPFILES[@]}"; do
- if [ "$sup" != "testing" ]; then
- if [ "$sup" = "${sup#!}" ]; then
- $CVSUP -L 1 -r 0 -g -b "$ABSROOT" -P $CONNMODE -c .sup "$CONFDIR/supfile.$sup"
- fi
- elif [ "$sup" = "testing" ]; then
- if [ ! -d "$ABSROOT/testing" ]; then
- mkdir "$ABSROOT/testing"
- fi
- cd "$ABSROOT/testing"
- $CVSUP -L 1 -r 0 -g -b "$ABSROOT/testing" -P $CONNMODE -c .sup "$CONFDIR/supfile.testing"
- cd "$ABSROOT"
- fi
- done
-}
-
-if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
- usage
- exit 0
-fi
-
-if [ ! -d "$ABSROOT" ]; then
- echo "abs: $ABSROOT does not exist (or is not a directory)"
- exit 1
-fi
-if [ ! -w "$ABSROOT" ]; then
- echo "abs: no write permissions in $ABSROOT"
- exit 1
-fi
-
-if [ "$(type -p cvsup)" ]; then
- CVSUP="cvsup"
-elif [ "$(type -p csup)" ]; then
- CVSUP="csup"
-else
- echo "abs: missing CVS synchronization utility. Install cvsup or csup."
- exit 1
-fi
-
-if [ "$1" = "-p" ] || [ "$1" = "--passive" ]; then
- CONNMODE="-"
- shift
-else
- CONNMODE="m"
-fi
-
-if [ "$#" -ne "0" ]; then
- SUPFILES=("$@")
-fi
-
-update
-
-exit 0
-# vim: set ts=2 sw=2 noet:
diff --git a/scripts/abs.sh.in b/scripts/abs.sh.in
new file mode 100644
index 00000000..ae825259
--- /dev/null
+++ b/scripts/abs.sh.in
@@ -0,0 +1,173 @@
+#!/bin/bash -e
+#
+# abs - download a PKGBUILD tree from a CVS repository
+# @configure_input@
+#
+# Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+#
+
+##
+# Script Exit Reasons
+# -------------------
+# E_OK : Everything worked :)
+# E_MISSING_PROGRAM : A program the script depends on is not installed.
+# E_CONFIG_ERROR : Missing/incorrect configuration.
+# E_INVALID_OPTION : User has passed unknown/invalid option to script.
+##
+
+# gettext initialization
+export TEXTDOMAIN='pacman'
+export TEXTDOMAINDIR='@localedir@'
+
+myver='@PACKAGE_VERSION@'
+BUG_REPORT_EMAIL='@PACKAGE_BUGREPORT@'
+CONFDIR="@sysconfdir@/abs"
+PASSIVE='m'
+
+# Source config files
+if [ -r "$CONFDIR/abs.conf" ]; then
+ source "$CONFDIR/abs.conf"
+fi
+
+# User based overrides
+if [ -r ~/.abs.conf ]; then
+ source ~/.abs.conf
+fi
+
+
+msg() {
+ local mesg=$1; shift
+ printf "==> ${mesg}\n" "$@" >&2
+}
+
+error() {
+ local mesg=$1; shift
+ printf "==> $(gettext "ERROR:") ${mesg}\n" "$@" >&2
+}
+
+
+usage() {
+ printf "$(gettext "abs (pacman) %s - download a PKGBUILD tree from a CVS repository")\n\n" "$myver"
+ printf "$(gettext "Usage %s [options] [repository...]")\n\n" "$0"
+ printf "$(gettext "Options:")\n"
+ printf "$(gettext " -p, --passive The connection is opened in passive mode.")\n"
+ echo
+ printf "$(gettext " -h, --help Display this help message then exit.")\n"
+ printf "$(gettext " -V, --version Display version information then exit.")\n"
+ echo
+ printf "$(gettext "\
+abs will synchronize build scripts from the CVS repository\n\
+into %s. You can follow different package trees by\n\
+editing %s files. If no argument is given, abs\n\
+will synchronize from supfiles specified in %s.\n\n")" \
+ "$ABSROOT" "$CONFDIR/supfile.*" "$CONFDIR/abs.conf"
+ printf "$(gettext "Report bugs to <%s>.")\n" "$BUG_REPORT_EMAIL"
+}
+
+version() {
+ printf "abs (pacman) %s\n" "$myver"
+ printf "$(gettext "\
+Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n\n\
+This is free software; see the source for copying conditions.\n\
+There is NO WARRANTY, to the extent permitted by law.\n")"
+}
+
+
+##
+# Signal Traps
+##
+trap 'error "$(gettext "TERM signal caught. Exiting...")"; exit 1' TERM HUP QUIT
+trap 'error "$(gettext "Aborted by user! Exiting...")"; exit 1' INT
+trap 'error "$(gettext "An unknown error has occured. Exiting...")"; exit 1' ERR
+
+
+# Parse Command Line Options.
+OPT_SHORT="hpV"
+OPT_LONG="help,passive,version"
+OPT_TEMP="$(getopt -o "$OPT_SHORT" -l "$OPT_LONG" -n "$(basename "$0")" -- "$@" || echo 'GETOPT GO BANG!')"
+if echo "$OPT_TEMP" | grep -q 'GETOPT GO BANG!'; then
+ # This is a small hack to stop the script bailing with 'set -e'
+ echo; usage; exit 1 # E_INVALID_OPTION;
+fi
+eval set -- "$OPT_TEMP"
+unset OPT_SHORT OPT_LONG OPT_TEMP
+
+while true; do
+ case "$1" in
+ -p|--passive) PASSIVE='-';;
+
+ -h|--help) usage; exit 0;; # E_OK
+ -V|--version) version; exit 0;; # E_OK
+
+ --) OPT_IND=0; shift; break;;
+ *) usage; exit 1;; # E_INVALID_OPTION
+ esac
+ shift
+done
+
+if [ $# -gt 0 ]; then
+ SUPFILES=("$@")
+fi
+
+
+# Check permissions and programs.
+if [ ! -d "$ABSROOT" ]; then
+ error "$(gettext "%s does not exist or is not a directory.")" "$ABSROOT"
+ exit 1 # E_CONFIG_ERROR
+elif [ ! -w "$ABSROOT" ]; then
+ error "$(gettext "You do not have write permissions in %s.")" "$ABSROOT"
+ exit 1 # E_CONFIG_ERROR
+fi
+
+
+if [ "$(type -p csup)" ]; then
+ CVSUP="csup"
+elif [ "$(type -p cvsup)" ]; then
+ CVSUP="cvsup"
+else
+ error "$(gettext "Missing CVS synchronization utility. Install csup or cvsup.")"
+ exit 1 # E_MISSING_PROGRAM
+fi
+
+
+# Begin script.
+for sup in ${SUPFILES[@]}; do
+ case "$sup" in
+ testing)
+ if [ ! -d "$ABSROOT/$sup" ]; then
+ mkdir "$ABSROOT/$sup"
+ fi
+ workdir="$ABSROOT/$sup"
+ ;;
+
+ *)
+ if [ "$sup" != "${sup#!}" ]; then
+ continue
+ fi
+ workdir="$ABSROOT"
+ ;;
+ esac
+
+ msg "$(gettext "Updating %s...")" "$sup"
+ cd "$workdir"
+ $CVSUP -L 1 -r 0 -g -b "$workdir" -P "$PASSIVE" -c .sup "$CONFDIR/supfile.$sup"
+done
+
+exit 0 # E_OK
+
+# vim: set ts=2 sw=2 noet:
diff --git a/scripts/gensync b/scripts/gensync
deleted file mode 100755
index 5a3dab88..00000000
--- a/scripts/gensync
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/bin/bash
-#
-# gensync
-#
-# Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-# USA.
-#
-
-myver='3.0.0'
-
-usage() {
- echo "gensync $myver"
- echo "usage: $0 <root> <destfile> [package_directory]"
- echo
- echo "gensync will generate a sync database by reading all PKGBUILD files"
- echo "from <root>. gensync builds the database in a temporary directory"
- echo "and then compresses it to <destfile>."
- echo
- echo "gensync will calculate md5sums of packages in the same directory as"
- echo "<destfile>, unless an alternate [package_directory] is specified."
- echo
- echo "note: The <destfile> name is important. It must be of the form"
- echo " {treename}.db.tar.gz where {treename} is the name of the custom"
- echo " package repository you configured in /etc/pacman.conf. The"
- echo " generated database must reside in the same directory as your"
- echo " custom packages (also configured in /etc/pacman.conf)"
- echo
- echo "example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
- echo
- echo
- exit 0
-}
-
-BUILDSCRIPT="PKGBUILD"
-PKGEXT="pkg.tar.gz"
-
-source /etc/makepkg.conf
-
-error () {
- echo "==> ERROR: $*" >&2
-}
-
-die () {
- error $*
- exit 1
-}
-
-check_force () {
- local i
- for i in ${options[@]}; do
- local lc=$(echo $i | tr [:upper:] [:lower:])
- if [ "$lc" = "force" ]; then
- true
- fi
- done
- false
-}
-
-if [ $# -lt 2 ]; then
- usage
- exit 1
-fi
-
-if [ "$1" = "-h" -o "$1" = "--help" ]; then
- usage
- exit 0
-fi
-
-d=$(dirname $1)
-rootdir="$(cd $d && pwd)/$(basename $1)"
-d="$(dirname $2)"
-destdir="$(cd $d && pwd)"
-destfile="$destdir/$(basename $2)"
-pkgdir=""
-if [ "$3" != "" ]; then
- pkgdir="$3"
-fi
-
-[ ! -d "$rootdir" ] && die "invalid root dir: $rootdir"
-
-echo "gensync: building database entries, generating md5sums..." >&2
-cd "$destdir"
-
-pkgs=""
-forcepkgs=""
-
-for file in $(find "$rootdir"/* -name "$BUILDSCRIPT"); do
- unset pkgname pkgver pkgrel options
-
- source $file || die "failed to parse parse $file"
- if [ "$pkgdir" != "" ]; then
- pkgfile="$pkgdir/$pkgname-$pkgver-$pkgrel-$CARCH.$PKGEXT"
- else
- pkgfile="$destdir/$pkgname-$pkgver-$pkgrel-$CARCH.$PKGEXT"
- fi
-
- if [ ! -f "$pkgfile" ]; then
- error "could not find $pkgname-$pkgver-$pkgrel-$CARCH.$PKGEXT - skipping"
- else
- if check_force; then
- forcepkgs="$forcepkgs $pkgfile"
- else
- pkgs="$pkgs $pkgfile"
- fi
- fi
-done
-
-echo "creating repo DB..."
-
-# we'll trim the output just a tad, as gensync may be used on large repos
-repo-add $destfile $pkgs --force $force_pkgs \
- | grep -e "package" -e "database"
-
-# vim: set ts=2 sw=2 noet:
diff --git a/scripts/gensync.sh.in b/scripts/gensync.sh.in
new file mode 100644
index 00000000..8109fe22
--- /dev/null
+++ b/scripts/gensync.sh.in
@@ -0,0 +1,158 @@
+#!/bin/bash
+#
+# gensync
+# @configure_input@
+#
+# Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+#
+
+# gettext initialization
+export TEXTDOMAIN='pacman'
+export TEXTDOMAINDIR='@localedir@'
+
+myver='@PACKAGE_VERSION@'
+
+# functions
+
+usage() {
+ printf "gensync (pacman) %s\n\n" "$myver"
+ printf "$(gettext "Usage: %s <root> <destfile> [package_directory]")\n\n" "$0"
+ printf "$(gettext "\
+gensync will generate a sync database by reading all PKGBUILD files\n\
+from <root>. gensync builds the database in a temporary directory\n\
+and then compresses it to <destfile>.\n\n")"
+ printf "$(gettext "\
+gensync will calculate md5sums of packages in the same directory as\n\
+<destfile>, unless an alternate [package_directory] is specified.\n\n")"
+ printf "$(gettext "\
+note: The <destfile> name is important. It must be of the form\n\
+ {treename}.db.tar.gz where {treename} is the name of the custom\n\
+ package repository you configured in /etc/pacman.conf. The\n\
+ generated database must reside in the same directory as your\n\
+ custom packages (also configured in /etc/pacman.conf)\n\n")"
+ echo "$(gettext "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz")"
+ exit 0
+}
+
+version() {
+ printf "gensync (pacman) %s\n" "$myver"
+ printf "$(gettext "\
+Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n\n\
+This is free software; see the source for copying conditions.\n\
+There is NO WARRANTY, to the extent permitted by law.\n")"
+}
+
+error () {
+ local mesg=$1; shift
+ printf "==> ERROR: ${mesg}\n" "$@" >&2
+}
+
+die () {
+ error $*
+ exit 1
+}
+
+check_force () {
+ local i
+ for i in ${options[@]}; do
+ local lc=$(echo $i | tr [:upper:] [:lower:])
+ if [ "$lc" = "force" ]; then
+ true
+ fi
+ done
+ false
+}
+
+# PROGRAM START
+
+if [ "$1" = "-h" -o "$1" = "--help" ]; then
+ usage
+ exit 0
+fi
+
+if [ "$1" = "-V" -o "$1" = "--version" ]; then
+ version
+ exit 0
+fi
+
+if [ $# -lt 2 ]; then
+ usage
+ exit 1
+fi
+
+# source system and user makepkg.conf
+if [ -r @sysconfdir@/makepkg.conf ]; then
+ source @sysconfdir@/makepkg.conf
+else
+ die "$(gettext "%s not found. Can not continue.")" "@sysconfdir@/makepkg.conf"
+fi
+
+if [ -r ~/.makepkg.conf ]; then
+ source ~/.makepkg.conf
+fi
+
+
+d=$(dirname $1)
+rootdir="$(cd $d && pwd)/$(basename $1)"
+d="$(dirname $2)"
+destdir="$(cd $d && pwd)"
+destfile="$destdir/$(basename $2)"
+pkgdir=""
+if [ "$3" != "" ]; then
+ pkgdir="$3"
+fi
+
+[ ! -d "$rootdir" ] && die "$(gettext "invalid root dir: %s")" $rootdir
+
+echo "$(gettext "gensync: building database entries, generating md5sums...")" >&2
+cd "$destdir"
+
+pkgs=""
+forcepkgs=""
+
+for file in $(find "$rootdir"/* -name "$BUILDSCRIPT"); do
+ unset pkgname pkgver pkgrel options
+
+ source $file || die "$(gettext "failed to parse parse %s")" $file
+ if [ "$arch" = 'any' ]; then
+ CARCH='any'
+ fi
+ if [ "$pkgdir" != "" ]; then
+ pkgfile="$pkgdir/$pkgname-$pkgver-$pkgrel-$CARCH.$PKGEXT"
+ else
+ pkgfile="$destdir/$pkgname-$pkgver-$pkgrel-$CARCH.$PKGEXT"
+ fi
+
+ if [ ! -f "$pkgfile" ]; then
+ error "$(gettext "could not find %s-%s-%s-%s.%s - skipping")" $pkgname $pkgver $pkgrel $CARCH $PKGEXT
+ else
+ if check_force; then
+ forcepkgs="$forcepkgs $pkgfile"
+ else
+ pkgs="$pkgs $pkgfile"
+ fi
+ fi
+done
+
+echo "$(gettext "creating repo DB...")"
+
+# we'll trim the output just a tad, as gensync may be used on large repos
+repo-add $destfile $pkgs --force $force_pkgs \
+ | grep -e "package" -e "database"
+
+# vim: set ts=2 sw=2 noet:
diff --git a/scripts/makepkg b/scripts/makepkg
deleted file mode 100755
index c192855f..00000000
--- a/scripts/makepkg
+++ /dev/null
@@ -1,1088 +0,0 @@
-#!/bin/bash
-#
-# makepkg - make packages compatable for use with pacman
-#
-# Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
-# Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
-# Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
-# Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
-# Copyright (c) 2006 by Alex Smith <alex@alex-smith.me.uk>
-# Copyright (c) 2006 by Andras Voroskoi <voroskoi@frugalware.org>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-# USA.
-#
-
-myver='3.0.3'
-startdir=$(pwd)
-
-BUILDSCRIPT="PKGBUILD"
-PKGEXT="pkg.tar.gz"
-
-source "/etc/abs/abs.conf"
-SRCROOT="$ABSROOT"
-
-# Options
-CLEANUP=0
-CLEANCACHE=0
-DEP_BIN=0
-DEP_SRC=0
-SUDO=0
-FORCE=0
-GENINTEG=0
-INSTALL=0
-NOBUILD=0
-NODEPS=0
-NOEXTRACT=0
-RMDEPS=0
-REPKG=0
-LOGGING=0
-
-PACMAN_OPTS=
-
-#determine if we are running with fakeroot
-if [ "$1" = "-F" ]; then
- INFAKEROOT=1
- shift
-else
- INFAKEROOT=0
-fi
-
-### SUBROUTINES ###
-
-plain() {
- if [ ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then
- echo -e " \033[1;1m$1\033[1;0m" >&2
- else
- echo " $1" >&2
- fi
-}
-
-msg() {
- if [ ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then
- echo -e "\033[1;32m==>\033[1;0m \033[1;1m$1\033[1;0m" >&2
- else
- echo "==> $1" >&2
- fi
-}
-
-msg2() {
- if [ ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then
- echo -e " \033[1;34m->\033[1;0m \033[1;1m$1\033[1;0m" >&2
- else
- echo " -> $1" >&2
- fi
-}
-
-warning() {
- if [ ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then
- echo -e "\033[1;33m==> WARNING:\033[1;0m \033[1;1m$1\033[1;0m" >&2
- else
- echo "==> WARNING: $1" >&2
- fi
-}
-
-error() {
- if [ ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then
- echo -e "\033[1;31m==> ERROR:\033[1;0m \033[1;1m$1\033[1;0m" >&2
- else
- echo "==> ERROR: $1" >&2
- fi
-}
-
-strip_url() {
- echo "$1" | sed 's|^.*://.*/||g'
-}
-
-# checks to see if options are present in makepkg.conf or PKGBUILD;
-# PKGBUILD options always take precedence
-check_option() {
- local needle=$(echo $1 | tr [:upper:] [:lower:])
- local i
- # loop PKGBUILD opts first so it overrides makepkg.conf
- for i in ${options[@]}; do
- local lc=$(echo $i | tr [:upper:] [:lower:])
- if [ "$lc" = "$needle" ]; then
- echo "y"
- return
- elif [ "$lc" = "!$needle" ]; then
- echo "n"
- return
- # START DEPRECATED
- # TODO This code should be removed in the next release of makepkg
- elif [ "$lc" = "no$needle" ]; then
- warning "Options beginning with 'no' will be depricated in the next version of makepkg!"
- plain "Please replace 'no' with '!': no$needle -> !$needle."
- echo "n"
- return
- elif [ "$lc" = "keepdocs" -a "$needle" = "docs" ]; then
- warning "Option 'keepdocs' may not work as intended. Please replace with 'docs'."
- # END DEPRECATED
- fi
- done
- # fall back to makepkg.conf options
- for i in ${OPTIONS[@]}; do
- local lc=$(echo $i | tr [:upper:] [:lower:])
- if [ "$lc" = "$needle" ]; then
- echo "y"
- return
- elif [ "$lc" = "!$needle" ]; then
- echo "n"
- return
- fi
- done
- echo "unknown"
- return
-}
-
-# check if option is present in BUILDENV
-check_buildenv() {
- local needle=$(echo $1 | tr [:upper:] [:lower:])
- local i
- # use options from makepkg.conf
- for i in ${BUILDENV[@]}; do
- local lc=$(echo $i | tr [:upper:] [:lower:])
- if [ "$lc" = "$needle" ]; then
- echo "y"
- return
- elif [ "$lc" = "!$needle" ]; then
- echo "n"
- return
- fi
- done
- echo "unknown"
- return
-}
-
-in_array() {
- local needle=$1
- shift 1
- [ -z "$1" ] && return 1
- for i in $*; do
- [ "$i" = "$needle" ] && return 0
- done
- return 1
-}
-
-checkdeps() {
- [ $# -gt 0 ] || return
-
- pmout=$(pacman $PACMAN_OPTS -T $*)
- ret=$?
- if [ $ret -eq 1 ]; then #unresolved deps
- echo $pmout
- elif [ $ret -ne 0 ]; then
- error "pacman returned a fatal error ($ret): $pmout"
- exit 1
- fi
-}
-
-handledeps() {
- local missingdeps=0
- local deplist="$*"
- local depstrip=""
- local striplist=""
- local haveperm=0
- if [ \( "$EUID" = "0" -a "$INFAKEROOT" != "1" \) -o "$SUDO" = 1 ]; then
- haveperm=1
- fi
-
- for dep in $deplist; do
- depstrip=$(echo $dep | sed 's|=.*$||' | sed 's|>.*$||' | sed 's|<.*$||')
- striplist="$striplist $depstrip"
- done
-
- if [ "$deplist" != "" -a $haveperm -eq 1 ]; then
- if [ "$DEP_BIN" = "1" -a "$SUDO" = "1" ]; then
- # install missing deps from binary packages (using pacman -S and sudo)
- msg "Installing missing dependencies..."
- if [ "$INFAKEROOT" = "1" ]; then
- # kinda hacky, but we need to make pacman think that we're NOT
- # in fakeroot so it will go ahead and install the dependencies.
- FAKEROOTKEY2=$FAKEROOTKEY
- unset FAKEROOTKEY
- fi
- sudo pacman $PACMAN_OPTS -S $striplist
- if [ $? -eq 1 ]; then
- error "Pacman failed to install missing dependencies."
- exit 1
- fi
- if [ "$INFAKEROOT" = "1" ]; then
- export FAKEROOTKEY=$FAKEROOTKEY2
- unset FAKEROOTKEY2
- fi
- elif [ "$DEP_BIN" = "1" ]; then
- # install missing deps from binary packages (using pacman -S)
- msg "Installing missing dependencies..."
- pacman $PACMAN_OPTS -S $striplist
- if [ $? -eq 1 ]; then
- error "Pacman failed to install missing dependencies."
- exit 1
- fi
- elif [ "$DEP_SRC" = "1" ]; then
- # install missing deps by building them from source.
- # we look for each package name in $SRCROOT and build it.
- if [ "$SRCROOT" = "" ]; then
- error "Source root cannot be found - please make sure it is specified in /etc/makepkg.conf"
- exit 1
- fi
- # TODO: handle version comparators (eg, glibc>=2.2.5)
- msg "Building missing dependencies..."
- for dep in $striplist; do
- candidates=$(find $SRCROOT -type d -name "$dep")
- if [ "$candidates" = "" ]; then
- error "Could not find \"$dep\" under $SRCROOT"
- exit 1
- fi
- success=0
- for pkgdir in $candidates; do
- if [ -f "$pkgdir/$BUILDSCRIPT" ]; then
- cd "$pkgdir"
- if [ "$RMDEPS" = "1" ]; then
- PKGDEST="$PKGDEST" makepkg -i -c -b -r
- else
- PKGDEST="$PKGDEST" makepkg -i -c -b
- fi
- if [ $? -eq 0 ]; then
- success=1
- break
- fi
- fi
- done
- if [ "$success" = "0" ]; then
- error "Failed to build \"$dep\""
- exit 1
- fi
- done
- else
- missingdeps=1
- fi
- elif [ "$deplist" != "" -a $haveperm -eq 0 ]; then
- if [ "$DEP_SRC" = "1" -o "$DEP_BIN" = "1" ]; then
- warning "Cannot auto-install missing dependencies as a normal user without sudo!"
- plain "Run makepkg as root or with -S to resolve dependencies automatically."
- fi
- missingdeps=1
- fi
-
- # rerun any additional sh scripts found in /etc/profile.d/
- for i in /etc/profile.d/*.sh
- do
- if [ -x $i ]; then
- . $i &>/dev/null
- fi
- done
-
- return $missingdeps
-}
-
-resolvedeps() {
- deplist=""
- newdeplist=""
-
- deplist=$(checkdeps $*)
- if [ -n "${deplist}" ]; then
- handledeps $deplist
- if [ $? -eq 0 ]; then
- # check deps again to make sure they were resolved
- newdeplist=$(checkdeps $*)
- if [ -n "${newdeplist}" ]; then
- error "Failed to install all missing dependencies."
- fi
- else
- newdeplist="$deplist"
- fi
- fi
-
- # if new dep list is not empty, print the list
- if [ -n "${newdeplist}" ]; then
- msg "Missing Dependencies:"
- for dep in ${newdeplist}; do
- msg2 "${dep}"
- done
- return 1
- else
- return 0
- fi
-}
-
-# fix flyspray bug #5923
-removedeps() {
- # runtimedeps and buildtimedeps are set when resolving deps
- local deplist="$runtimedeps $buildtimedeps"
- local depstrip=""
- local striplist=""
-
- for dep in $deplist; do
- depstrip=$(echo $dep | sed 's|=.*$||' | sed 's|>.*$||' | sed 's|<.*$||')
- striplist="$striplist $depstrip"
- done
-
- if [ "$RMDEPS" = "1" -a "$SUDO" = "1" -a -n "$deplist" ]; then
- msg "Removing installed dependencies..."
- if [ "$INFAKEROOT" = "1" ]; then
- export FAKEROOTKEY2=$FAKEROOTKEY
- unset FAKEROOTKEY
- fi
- sudo pacman $PACMAN_OPTS -Rs $striplist
- if [ "$INFAKEROOT" = "1" ]; then
- export FAKEROOTKEY=$FAKEROOTKEY2
- unset FAKEROOTKEY2
- fi
- elif [ "$RMDEPS" = "1" -a "$EUID" = "0" -a "$INFAKEROOT" != "1" -a -n "$deplist" ]; then
- msg "Removing installed dependencies..."
- pacman $PACMAN_OPTS -Rs $striplist
- fi
-}
-
-installpackage() {
- if [ "$INSTALL" = "1" -a "$SUDO" = "1" ]; then
- msg "Installing package with pacman -U..."
- if [ "$INFAKEROOT" = "1" ]; then
- FAKEROOTKEY2=$FAKEROOTKEY
- unset FAKEROOTKEY
- fi
- sudo pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.${PKGEXT}
- local exitcode=$?
- if [ "$INFAKEROOT" = "1" ]; then
- export FAKEROOTKEY=$FAKEROOTKEY2
- unset FAKEROOTKEY2
- fi
- exit $exitcode
- elif [ "$INSTALL" = "1" -a "$EUID" = "0" -a "$INFAKEROOT" != "1" ]; then
- msg "Installing package with pacman -U..."
- pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.${PKGEXT}
- exit $?
- fi
-}
-
-usage() {
- echo "makepkg version $myver"
- echo
- echo "Usage: $0 [options]"
- echo
- echo "Options:"
- echo " -b, --builddeps Build missing dependencies from source"
- echo " -c, --clean Clean up work files after build"
- echo " -C, --cleancache Clean up source files from the cache"
- echo " -d, --nodeps Skip all dependency checks"
- echo " -e, --noextract Do not extract source files (use existing src/ dir)"
- echo " -f, --force Overwrite existing package"
- echo " -g, --geninteg Generate integrity checks for source files"
- echo " -h, --help This help"
- echo " -i, --install Install package after successful build"
- echo " -L, --log Log package build process"
- echo " -m, --nocolor Disable colorized output messages"
- echo " -o, --nobuild Download and extract files only"
- echo " -p <buildscript> Use an alternate build script (instead of '$BUILDSCRIPT')"
- echo " -r, --rmdeps Remove installed dependencies after a successful build"
- # fix flyspray feature request #2978
- echo " -R, --repackage Repackage contents of pkg/ without building"
- echo " -s, --syncdeps Install missing dependencies with pacman"
- echo " -S, --usesudo When calling pacman, use sudo"
- echo
- echo "These options can be passed to pacman:"
- echo
- echo " --noconfirm Do not ask for confirmation when resolving dependencies"
- echo " --noprogressbar Do not show a progress bar when downloading files"
- echo
- echo "If -p is not specified, makepkg will look for '$BUILDSCRIPT'"
- echo
-}
-
-ARGLIST=$@
-
-#preserve environment variables
-_PKGDEST=${PKGDEST}
-_SRCDEST=${SRCDEST}
-
-#Source makepkg.conf; fail if it is not found
-if [ -f /etc/makepkg.conf ]; then
- source /etc/makepkg.conf
-else
- error "/etc/makepkg.conf not found. cannot continue"
- exit 1
-fi
-
-#Source user-specific makepkg.conf overrides
-if [ -f ~/.makepkg.conf ]; then
- source ~/.makepkg.conf
-fi
-
-# override settings with an environment variable for batch processing
-PKGDEST=${_PKGDEST:-$PKGDEST}
-PKGDEST=${PKGDEST:-$startdir} #default to $startdir if undefined
-SRCDEST=${_SRCDEST:-$SRCDEST}
-SRCDEST=${SRCDEST:-$startdir} #default to $startdir if undefined
-
-while [ "$#" -ne "0" ]; do
- case $1 in
- # pacman
- --noconfirm) PACMAN_OPTS="$PACMAN_OPTS --noconfirm" ;;
- --noprogressbar) PACMAN_OPTS="$PACMAN_OPTS --noprogressbar" ;;
- # makepkg
- --clean) CLEANUP=1 ;;
- --cleancache) CLEANCACHE=1 ;;
- --syncdeps) DEP_BIN=1 ;;
- --usesudo) SUDO=1 ;;
- --builddeps) DEP_SRC=1 ;;
- --nodeps) NODEPS=1 ;;
- --noextract) NOEXTRACT=1 ;;
- --install) INSTALL=1 ;;
- --force) FORCE=1 ;;
- --nobuild) NOBUILD=1 ;;
- --nocolor) USE_COLOR="n" ;;
- --geninteg) GENINTEG=1 ;;
- --rmdeps) RMDEPS=1 ;;
- --repackage) REPKG=1 ;;
- --log) LOGGING=1 ;;
- --help)
- usage
- exit 0
- ;;
- --*)
- usage
- exit 1
- ;;
- -*)
- while getopts "bcCdefghiLmop:rRsS-" opt; do
- case $opt in
- b) DEP_SRC=1 ;;
- c) CLEANUP=1 ;;
- C) CLEANCACHE=1 ;;
- d) NODEPS=1 ;;
- e) NOEXTRACT=1 ;;
- f) FORCE=1 ;;
- g) GENINTEG=1 ;;
- h)
- usage
- exit 0
- ;;
- i) INSTALL=1 ;;
- L) LOGGING=1 ;;
- m) USE_COLOR="n" ;;
- o) NOBUILD=1 ;;
- p) BUILDSCRIPT=$OPTARG ;;
- r) RMDEPS=1 ;;
- R) REPKG=1 ;;
- s) DEP_BIN=1 ;;
- S) SUDO=1 ;;
- -)
- OPTIND=0
- break
- ;;
- *)
- usage
- exit 1
- ;;
- esac
- done
- ;;
- *)
- true
- ;;
- esac
- shift
-done
-
-# check for sudo
-if [ "$SUDO" = "1" -a ! "$(type -p sudo)" ]; then
- error "Cannot find the sudo binary! Is sudo installed?"
- exit 1
-fi
-
-if [ "$CLEANCACHE" = "1" ]; then
- #fix flyspray feature request #5223
- if [ -n "$SRCDEST" -a "$SRCDEST" != "$startdir" ]; then
- msg "Cleaning up ALL files from $SRCDEST."
- echo -n " Are you sure you wish to do this? [Y/n] "
- read answer
- answer=$(echo $answer | tr [:upper:] [:lower:])
- if [ "$answer" = "yes" -o "$answer" = "y" ]; then
- rm "$SRCDEST"/*
- if [ $? -ne 0 ]; then
- error "Problem removing files; you may not have correct permissions in $SRCDEST"
- exit 1
- else
- # removal worked
- msg "Source cache cleaned."
- exit 0
- fi
- else
- # answer = no
- msg "No files have been removed."
- exit 0
- fi
- else
- # $SRCDEST is $startdir, two possibilities
- error "Source destination must be defined in makepkg.conf."
- plain "In addition, please run makepkg -C outside of your cache directory."
- exit 1
- fi
-fi
-
-unset pkgname pkgver pkgrel pkgdesc url license groups provides md5sums force
-unset replaces depends conflicts backup source install build makedepends
-unset options noextract
-
-if [ ! -f $BUILDSCRIPT ]; then
- error "$BUILDSCRIPT does not exist."
- exit 1
- #TODO this is an attempt at a generic way to unset all package specific
- #variables in a PKGBUILD
- #else
- # #this is fun.... we'll unset
- # for var in $(grep "=" $BUILDSCRIPT | sed "s|.*\(\<.*\>\)=.*|\1|g"); do
- # unset $var
- # done
-fi
-
-source $BUILDSCRIPT
-
-# check for no-no's in the build script
-if [ -z "$pkgver" ]; then
- error "pkgver is not allowed to be empty."
- exit 1
-fi
-if [ -z "$pkgrel" ]; then
- error "pkgrel is not allowed to be empty."
- exit 1
-fi
-if [ $(echo "$pkgver" | grep '-') ]; then
- error "pkgver is not allowed to contain hyphens."
- exit 1
-fi
-if [ $(echo "$pkgrel" | grep '-') ]; then
- error "pkgrel is not allowed to contain hyphens."
- exit 1
-fi
-if ! in_array $CARCH ${arch[@]}; then
- error "$pkgname is not available for the '$CARCH' architecture."
- plain "Note that many packages may need a line added to their $BUILDSCRIPT"
- plain "such as arch=('$CARCH')."
- exit 1
-fi
-
-if [ "$install" -a ! -f "$install" ]; then
- error "install scriptlet ($install) does not exist."
- exit 1
-fi
-
-if [ -f "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.${PKGEXT}" \
- -a "$FORCE" = "0" -a "$GENINTEG" = "0" ]; then
- if [ "$INSTALL" = "1" ]; then
- warning "a package has already been built, installing existing package."
- installpackage
- exit $?
- else
- error "a package has already been built. (use -f to overwrite)"
- exit 1
- fi
-fi
-
-# Enter the fakeroot environment if necessary. This will call the makepkg
-# script again as the fake root user. We detect this by passing a sentinel
-# option (-F) to makepkg.
-if [ "$EUID" != "0" ]; then
- if [ "$(check_buildenv fakeroot)" = "y" ]; then
- if [ $(type -p fakeroot) ]; then
- msg "Entering fakeroot environment"
- fakeroot -- $0 -F $ARGLIST
- exit $?
- else
- warning "Fakeroot is not installed. Building as an unprivileged user"
- plain "will result in non-root ownership of the packaged files. Install"
- plain "the fakeroot package to correctly build as a non-root user."
- plain ""
- sleep 1
- fi
- else
- warning "Running makepkg as an unprivileged user will result in non-root"
- plain "ownership of the packaged files. Try using the fakeroot environment"
- plain "by placing 'fakeroot' in the BUILDENV array in makepkg.conf."
- plain ""
- sleep 1
- fi
-fi
-
-msg "Making package: $pkgname $pkgver-$pkgrel ($(date))"
-
-# fix flyspray bug #5973
-if [ "$NODEPS" = "1" -o "$GENINTEG" = "1" -o "$NOBUILD" = "1" -o "$REPKG" = "1" ]; then
- if [ "$NODEPS" = "1" ]; then
- warning "skipping dependency checks"
- fi
- # skip printing a warning message for the others: geninteg, nobuild, repkg
-elif [ $(type -p pacman) ]; then
- deperr=0
- # these two variables are needed later by removedeps
- unset runtimedeps buildtimedeps
-
- msg "Checking Runtime Dependencies..."
- resolvedeps ${depends[@]}
- ret=$?
- # deplist is a global variable set by resolvedeps
- runtimedeps="$deplist"
- if [ "$ret" != "0" ]; then
- deperr=1
- fi
-
- msg "Checking Buildtime Dependencies..."
- resolvedeps ${makedepends[@]}
- ret=$?
- # deplist is a global variable set by resolvedeps
- buildtimedeps="$deplist"
- if [ "$ret" != "0" ]; then
- deperr=1
- fi
-
- if [ $deperr -eq 1 ]; then
- error "could not resolve all dependencies."
- exit 1
- fi
-else
- warning "pacman was not found in PATH. skipping dependency checks."
-fi
-
-cd "$startdir"
-
-# retrieve sources
-msg "Retrieving Sources..."
-mkdir -p src
-cd "$startdir/src"
-for netfile in ${source[@]}; do
- file=$(strip_url "$netfile")
- if [ -f "../$file" ]; then
- msg2 "Found $file in build dir"
- cp "../$file" .
- elif [ -f "$SRCDEST/$file" ]; then
- msg2 "Using cached copy of $file"
- cp "$SRCDEST/$file" .
- else
- # check for a download utility
- if [ -z "$FTPAGENT" ]; then
- error "FTPAGENT is not configured. Check the /etc/makepkg.conf file."
- msg "Aborting..."
- exit 1
- fi
- ftpclient=$(echo $FTPAGENT | awk {'print $1'})
- if [ ! -x "$ftpclient" ]; then
- error "ftpclient $(basename $ftpclient) is not installed."
- msg "Aborting..."
- exit 1
- fi
- proto=$(echo "$netfile" | sed 's|://.*||')
- if [ "$proto" != "ftp" -a "$proto" != "http" -a "$proto" != "https" ]; then
- error "$netfile was not found in the build directory and is not a proper URL."
- msg "Aborting..."
- exit 1
- fi
- msg2 "Downloading $file"
- $FTPAGENT "$netfile"
- # fix flyspray bug #3289
- ftpret=$?
- if [ $ftpret -gt 0 ]; then
- error "Failure while downloading $file"
- msg "Aborting..."
- #rm "$file"
- exit 1
- fi
- if [ -n "$SRCDEST" ]; then
- mkdir -p $SRCDEST && cp "$file" $SRCDEST
- if [ $? -ne 0 ]; then
- warning "You do not have correct permissions to cache source in $SRCDEST"
- cp "$file" ..
- fi
- else
- cp "$file" ..
- fi
- fi
-done
-
-if [ "$NOEXTRACT" = "1" -o "$REPKG" = "1" ]; then
- warning "Skipping source integrity checks -- using existing src/ tree"
-else
- # TODO we end up checking $GENINTEG 3 times, could probably be refactored
- if [ "$GENINTEG" = "1" ]; then
- msg "Generating checksums for source files"
- plain ""
- fi
-
- for integ in ${INTEGRITY_CHECK[@]}; do
- integ="$(echo $integ | tr A-Z a-z)"
- case "$integ" in
- md5) integrity_name="md5sum" ;;
- sha1) integrity_name="sha1sum" ;;
- sha256) integrity_name="sha256sum" ;;
- sha384) integrity_name="sha384sum" ;;
- sha512) integrity_name="sha512sum" ;;
- *) error "Invalid integrity algorithm '$integ' specified"; exit 1;;
- esac
- if [ ! $(type -p $integrity_name) ]; then
- error "Cannot find the $integrity_name program."
- exit 1
- fi
-
- #Generate integrity checks
- if [ "$GENINTEG" = "1" ]; then
- ct=0
- numsrc=${#source[@]}
- for netfile in "${source[@]}"; do
- file=$(strip_url "$netfile")
- sum=$(eval "$integrity_name '$file' | cut -d' ' -f 1")
- if [ $ct -eq 0 ]; then
- echo -n "${integrity_name}s=("
- else
- indent=0
- while [ $indent -lt $((${#integrity_name}+3)) ]; do
- echo -n " "
- indent=$(($indent+1))
- done
- fi
- echo -n "'$sum'"
- ct=$(($ct+1))
- if [ $ct -eq $numsrc ]; then
- echo ')'
- else
- echo
- fi
- done
- #Validate integrity checks
- else
- integrity_sums=($(eval echo \${${integrity_name}s[@]}))
-
- if [ ${#integrity_sums[@]} -eq ${#source[@]} ]; then
- msg "Validating source files with ${integrity_name}s"
- errors=0
- idx=0
- for netfile in "${source[@]}"; do
- file=$(strip_url "$netfile")
- echo -n " $file ... " >&2
- echo "${integrity_sums[$idx]} $file" | $integrity_name -c - >/dev/null 2>&1
- if [ $? -ne 0 ]; then
- echo "FAILED" >&2
- errors=1
- else
- echo "Passed" >&2
- fi
- idx=$(($idx+1))
- done
- if [ $errors -gt 0 ]; then
- error "One or more files did not pass the validity check!"
- exit 1
- fi
- else
- warning "Integrity checks ($integ) are missing or incomplete."
- fi
- fi
- done
-
- if [ "$GENINTEG" = "1" ]; then
- plain ""
- exit 0
- fi
-fi
-
-#Extract sources
-if [ "$NOEXTRACT" = "1" -o "$REPKG" = "1" ]; then
- warning "Skipping source extraction -- using existing src/ tree"
-else
- msg "Extracting Sources..."
- for netfile in "${source[@]}"; do
- unziphack=0
- file=$(strip_url "$netfile")
- if in_array "$file" ${noextract[@]}; then
- #skip source files in the noextract=() array
- # these are marked explicitly to NOT be extracted
- continue
- fi
- # fix flyspray #6246
- file_type=$(file -biz "$file")
- unset cmd
- case "$file_type" in
- *application/x-tar*application/x-compress*)
- cmd="tar -xzf $file" ;;
- *application/x-tar*)
- cmd="tar -xf $file" ;;
- *application/x-zip*)
- unziphack=1
- cmd="unzip -qqo $file" ;;
- *application/x-cpio*)
- cmd="bsdtar -x -f $file" ;;
- *application/x-gzip*)
- cmd="gunzip -d -f $file" ;;
- *application/x-bzip*)
- cmd="bunzip2 -f $file" ;;
- esac
- if [ "$cmd" != "" ]; then
- msg2 "$cmd"
- $cmd
- if [ $? -ne 0 ]; then
- # unzip will return a 1 as a warning, it is not an error
- if [ "$unziphack" != "1" -o $? -ne 1 ]; then
- error "Failed to extract $file"
- msg "Aborting..."
- exit 1
- fi
- fi
- fi
- done
-
- if [ "$EUID" = "0" ]; then
- # chown all source files to root.root
- chown -R root.root "$startdir/src"
- fi
-fi
-
-if [ "$NOBUILD" = "1" ]; then
- msg "Sources are ready."
- exit 0
-elif [ "$REPKG" = "1" ]; then
- warning "Skipping build"
-else
- # check for existing pkg directory
- if [ -d "$startdir/pkg" ]; then
- msg "Removing existing pkg/ directory..."
- rm -rf "$startdir/pkg"
- fi
- mkdir -p "$startdir/pkg"
-
- # use distcc if it is requested (check buildenv and PKGBUILD opts)
- if [ "$(check_buildenv distcc)" = "y" -a "$(check_option distcc)" != "n" ]; then
- [ -d /usr/lib/distcc/bin ] && export PATH=/usr/lib/distcc/bin:$PATH
- export DISTCC_HOSTS
- elif [ "$(check_option distcc)" = "n" ]; then
- # if it is not wanted, clear the makeflags too
- MAKEFLAGS=""
- fi
-
- # use ccache if it is requested (check buildenv and PKGBUILD opts)
- if [ "$(check_buildenv ccache)" = "y" -a "$(check_option ccache)" != "n" ]; then
- [ -d /usr/lib/ccache/bin ] && export PATH=/usr/lib/ccache/bin:$PATH
- fi
-
- # clear user-specified makeflags if requested
- if [ "$(check_option makeflags)" = "n" ]; then
- MAKEFLAGS=""
- fi
-
- # build
- msg "Starting build()..."
-
- # some applications (eg, blackbox) will not build with some languages
- unset LC_ALL LC_MESSAGES LANG
- umask 0022
-
- # ensure all necessary build variables are exported
- export CFLAGS CXXFLAGS MAKEFLAGS
-
- #check for "exit on syntax error" shell option
- echo $SHELLOPTS | grep errexit 2>&1 >/dev/null
- set_e=$?
-
- ret=0
- if [ "$LOGGING" = "1" ]; then
- BUILDLOG="${startdir}/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log"
- if [ -f "$BUILDLOG" ]; then
- i=1
- while true; do
- if [ -f "$BUILDLOG.$i" ]; then
- i=$(($i +1))
- else
- break
- fi
- done
- mv "$BUILDLOG" "$BUILDLOG.$i"
- fi
-
- #use 'errexit' to bail on syntax error
- [ $set_e -eq 1 ] && set -e
- build 2>&1 | tee "$BUILDLOG"; ret=${PIPESTATUS[0]}
- [ $set_e -eq 1 ] && set +e
- else
- #use 'errexit' to bail on syntax error
- [ $set_e -eq 1 ] && set -e
- build 2>&1 || ret=$?
- [ $set_e -eq 1 ] && set +e
- fi
- if [ $ret -gt 0 ]; then
- error "Build Failed. Aborting..."
- removedeps
- exit 2
- fi
-fi
-
-if [ "$(check_option docs)" = "n" ]; then
- # remove info/doc files
- msg "Removing info/doc files..."
- cd "$startdir/pkg"
- #fix flyspray bug #5021
- rm -rf ${DOC_DIRS[@]}
-fi
-
-# move /usr/share/man files to /usr/man
-if [ -d $startdir/pkg/usr/share/man ]; then
- cd "$startdir"
- mkdir -p pkg/usr/man
- cp -a pkg/usr/share/man/* pkg/usr/man/
- rm -rf pkg/usr/share/man
-fi
-
-# compress man pages
-msg "Compressing man pages..."
-find "$startdir"/pkg/{usr{,/local},opt/*}/man -type f 2>/dev/null | while read i ; do
- ext="${i##*.}"
- fn="${i##*/}"
- if [ "$ext" != "gz" -a "$ext" != "bz2" ]; then
- # update symlinks to this manpage
- find "$startdir"/pkg/{usr{,/local},opt/*}/man -lname "$fn" 2> /dev/null | while read ln ; do
- rm -f "$ln"
- ln -sf "${fn}.gz" "${ln}.gz"
- done
- # compress the original
- gzip -9 "$i"
- fi
-done
-
-cd "$startdir"
-
-# strip binaries
-if [ "$(check_option strip)" = "y" ]; then
- msg "Stripping debugging symbols from libraries..."
- find pkg/{,usr,usr/local,opt/*}/lib -type f -not -name "*.dll" -not -name "*.exe" \
- -exec /usr/bin/strip --strip-debug '{}' \; 2>&1 \
- | grep -v "No such file" | grep -v "format not recognized"
- msg "Stripping symbols from binaries..."
- find pkg/{,usr,usr/local,opt/*}/{bin,sbin} -type f -not -name "*.dll" -not -name "*.exe" \
- -exec /usr/bin/strip '{}' \; 2>&1 \
- | grep -v "No such file" | grep -v "format not recognized"
-fi
-
-# remove libtool (.la) files
-if [ "$(check_option libtool)" = "n" ]; then
- msg "Removing libtool .la files..."
- find pkg -type f -name "*.la" -exec rm -f -- '{}' \;
-fi
-
-# remove empty directories
-if [ "$(check_option emptydirs)" = "n" ]; then
- msg "Removing empty directories..."
- cd "$startdir/pkg"
- find -depth -type d -empty -delete;
-fi
-
-# get some package meta info
-builddate=$(LC_ALL= ; LANG= ; date -u "+%a %b %e %H:%M:%S %Y")
-if [ "$PACKAGER" != "" ]; then
- packager="$PACKAGER"
-else
- packager="Arch Linux (http://www.archlinux.org)"
-fi
-size=$(du -cb "$startdir/pkg" | tail -n 1 | awk '{print $1}')
-
-# build a filelist - do this first to keep meta files out of the list
-msg "Generating .FILELIST file..."
-cd "$startdir/pkg"
-tar cvf /dev/null * | sort >.FILELIST
-
-# write the .PKGINFO file
-msg "Generating .PKGINFO file..."
-cd "$startdir/pkg"
-echo "# Generated by makepkg $myver" >.PKGINFO
-echo -n "# " >>.PKGINFO
-date >>.PKGINFO
-echo "pkgname = $pkgname" >>.PKGINFO
-echo "pkgver = $pkgver-$pkgrel" >>.PKGINFO
-echo "pkgdesc = $pkgdesc" >>.PKGINFO
-echo "url = $url" >>.PKGINFO
-echo "builddate = $builddate" >>.PKGINFO
-echo "packager = $packager" >>.PKGINFO
-echo "size = $size" >>.PKGINFO
-if [ "$CARCH" != "" ]; then
- echo "arch = $CARCH" >>.PKGINFO
-fi
-
-for it in "${license[@]}"; do
- echo "license = $it" >>.PKGINFO
-done
-for it in "${replaces[@]}"; do
- echo "replaces = $it" >>.PKGINFO
-done
-for it in "${groups[@]}"; do
- echo "group = $it" >>.PKGINFO
-done
-for it in "${depends[@]}"; do
- echo "depend = $it" >>.PKGINFO
-done
-for it in "${conflicts[@]}"; do
- echo "conflict = $it" >>.PKGINFO
-done
-for it in "${provides[@]}"; do
- echo "provides = $it" >>.PKGINFO
-done
-for it in "${backup[@]}"; do
- echo "backup = $it" >>.PKGINFO
-done
-
-# TODO maybe remove this at some point
-# warn if license array is not present or empty
-if [ "$license" = "" ]; then
- warning "Please add a license line to your $BUILDSCRIPT!"
- plain "example for GPL'ed software: license=('GPL')."
-fi
-
-# check for an install script
-if [ "$install" != "" ]; then
- msg "Copying install script..."
- cp "$startdir/$install" "$startdir/pkg/.INSTALL"
-fi
-
-# do we have a changelog?
-have_changelog=0
-if [ -f "$startdir/ChangeLog" ]; then
- msg "Copying package changelog"
- cp "$startdir/ChangeLog" "$startdir/pkg/.CHANGELOG"
- have_changelog=1
-fi
-
-# tar it up
-msg "Compressing package..."
-cd "$startdir/pkg"
-
-pkg_file="$PKGDEST/$pkgname-$pkgver-$pkgrel-${CARCH}.${PKGEXT}"
-comp_files=".PKGINFO .FILELIST ${install:+.INSTALL}"
-[ $have_changelog -eq 1 ] && comp_files=".CHANGELOG $comp_files"
-
-if ! tar czf $pkg_file $comp_files *; then
- error "Failed to create package file."
- exit 1
-fi
-
-cd "$startdir"
-if [ "$CLEANUP" = "1" ]; then
- msg "Cleaning up..."
- rm -rf src pkg
- rm -rf ${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log*
-fi
-
-removedeps
-
-msg "Finished making: $pkgname ($(date))"
-
-installpackage
-
-exit 0
-# vim: set ts=2 sw=2 noet:
-
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
new file mode 100644
index 00000000..953bda2a
--- /dev/null
+++ b/scripts/makepkg.sh.in
@@ -0,0 +1,1470 @@
+#!/bin/bash -e
+#
+# makepkg - make packages compatable for use with pacman
+# @configure_input@
+#
+# Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+# Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
+# Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
+# Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
+# Copyright (c) 2006 by Alex Smith <alex@alex-smith.me.uk>
+# Copyright (c) 2006 by Andras Voroskoi <voroskoi@frugalware.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+#
+
+# makepkg uses quite a few external programs during its execution. You
+# need to have at least the following installed for makepkg to function:
+# awk, bsdtar (libarchive), bzip2, coreutils, fakeroot, find (findutils),
+# getopt (util-linux), gettext, grep, gzip, sed
+
+# gettext initialization
+export TEXTDOMAIN='pacman'
+export TEXTDOMAINDIR='@localedir@'
+
+myver='@PACKAGE_VERSION@'
+confdir='@sysconfdir@'
+startdir="$PWD"
+srcdir="$startdir/src"
+pkgdir="$startdir/pkg"
+
+# Options
+ASROOT=0
+CLEANUP=0
+CLEANCACHE=0
+DEP_BIN=0
+DEP_SRC=0
+FORCE=0
+INFAKEROOT=0
+GENINTEG=0
+INSTALL=0
+NOBUILD=0
+NODEPS=0
+NOEXTRACT=0
+RMDEPS=0
+REPKG=0
+LOGGING=0
+SOURCEONLY=0
+IGNOREARCH=0
+
+# Forces the pkgver of the current PKGBUILD. Used by the fakeroot call
+# when dealing with svn/cvs/etc PKGBUILDs.
+FORCE_VER=""
+
+PACMAN_OPTS=
+
+### SUBROUTINES ###
+
+plain() {
+ local mesg=$1; shift
+ if [ -t 2 -a ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then
+ printf "\033[1;1m ${mesg}\033[1;0m\n" "$@" >&2
+ else
+ printf " ${mesg}\n" "$@" >&2
+ fi
+}
+
+msg() {
+ local mesg=$1; shift
+ if [ -t 2 -a ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then
+ printf "\033[1;32m==>\033[1;0m\033[1;1m ${mesg}\033[1;0m\n" "$@" >&2
+ else
+ printf "==> ${mesg}\n" "$@" >&2
+ fi
+}
+
+msg2() {
+ local mesg=$1; shift
+ if [ -t 2 -a ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then
+ printf "\033[1;34m ->\033[1;0m\033[1;1m ${mesg}\033[1;0m\n" "$@" >&2
+ else
+ printf " -> ${mesg}\n" "$@" >&2
+ fi
+}
+
+warning() {
+ local mesg=$1; shift
+ if [ -t 2 -a ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then
+ printf "\033[1;33m==> $(gettext "WARNING:")\033[1;0m\033[1;1m ${mesg}\033[1;0m\n" "$@" >&2
+ else
+ printf "==> $(gettext "WARNING:") ${mesg}\n" "$@" >&2
+ fi
+}
+
+error() {
+ local mesg=$1; shift
+ if [ -t 2 -a ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then
+ printf "\033[1;31m==> $(gettext "ERROR:")\033[1;0m\033[1;1m ${mesg}\033[1;0m\n" "$@" >&2
+ else
+ printf "==> $(gettext "ERROR:") ${mesg}\n" "$@" >&2
+ fi
+}
+
+
+##
+# Special exit call for traps, Don't print any error messages when inside,
+# the fakeroot call, the error message will be printed by the main call.
+##
+trap_exit() {
+ if [ "$INFAKEROOT" = "0" ]; then
+ echo
+ error "$@"
+ fi
+ exit 1
+}
+
+
+##
+# Clean up function. Called automatically when the script exits.
+##
+clean_up() {
+ local EXIT_CODE=$?
+
+ if [ "$INFAKEROOT" = "1" ]; then
+ # Don't clean up when leaving fakeroot, we're not done yet.
+ return
+ fi
+
+ if [ $EXIT_CODE -eq 0 -a "$CLEANUP" = "1" ]; then
+ # If it's a clean exit and -c/--clean has been passed...
+ msg "$(gettext "Cleaning up...")"
+ cd "$startdir"
+ rm -rf pkg src
+ if [ "$pkgname" != "" ]; then
+ # Can't do this unless the BUILDSCRIPT has been sourced.
+ rm -f "${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log*"
+ fi
+ fi
+
+ remove_deps
+}
+
+
+##
+# Signal Traps
+##
+trap 'clean_up' 0
+trap 'trap_exit "$(gettext "TERM signal caught. Exiting...")"' TERM HUP QUIT
+trap 'trap_exit "$(gettext "Aborted by user! Exiting...")"' INT
+trap 'trap_exit "$(gettext "An unknown error has occured. Exiting...")"' ERR
+
+
+strip_url() {
+ echo "$1" | sed 's|^.*://.*/||g'
+}
+
+
+##
+# Checks to see if options are present in makepkg.conf or PKGBUILD;
+# PKGBUILD options always take precedence.
+#
+# usage : check_option( $option )
+# return : y - enabled
+# n - disabled
+# ? - not found
+##
+check_option() {
+ local ret=$(in_opt_array "$1" ${options[@]})
+ if [ "$ret" != '?' ]; then
+ echo $ret
+ return
+ fi
+
+ # BEGIN DEPRECATED
+ # TODO: This code should be removed in the next release of makepkg.
+ local needle=$(echo $1 | tr [:upper:] [:lower:])
+ local opt
+ for opt in ${options[@]}; do
+ opt=$(echo $opt | tr [:upper:] [:lower:])
+ if [ "$opt" = "no$needle" ]; then
+ warning "$(gettext "Options beginning with 'no' will be deprecated in the next version of makepkg!")"
+ plain "$(gettext "Please replace 'no' with '!': %s -> %s.")" "no$needle" "!$needle"
+ echo 'n' # Disabled
+ return
+ elif [ "$opt" = "keepdocs" -a "$needle" = "docs" ]; then
+ warning "$(gettext "Option 'keepdocs' may not work as intended. Please replace with 'docs'.")"
+ echo 'y' # Enabled
+ return
+ fi
+ done
+ # END DEPRECATED
+
+ # fall back to makepkg.conf options
+ ret=$(in_opt_array "$1" ${OPTIONS[@]})
+ if [ "$ret" != '?' ]; then
+ echo $ret
+ return
+ fi
+
+ echo '?' # Not Found
+}
+
+
+##
+# Check if option is present in BUILDENV
+#
+# usage : check_buildenv( $option )
+# return : y - enabled
+# n - disabled
+# ? - not found
+##
+check_buildenv() {
+ echo $(in_opt_array "$1" ${BUILDENV[@]})
+}
+
+
+##
+# usage : in_opt_array( $needle, $haystack )
+# return : y - enabled
+# n - disabled
+# ? - not found
+##
+in_opt_array() {
+ local needle=$(echo $1 | tr [:upper:] [:lower:]); shift
+
+ local opt
+ for opt in "$@"; do
+ opt=$(echo $opt | tr [:upper:] [:lower:])
+ if [ "$opt" = "$needle" ]; then
+ echo 'y' # Enabled
+ return
+ elif [ "$opt" = "!$needle" ]; then
+ echo 'n' # Disabled
+ return
+ fi
+ done
+
+ echo '?' # Not Found
+}
+
+
+##
+# usage : in_array( $needle, $haystack )
+# return : 0 - found
+# 1 - not found
+##
+in_array() {
+ local needle=$1; shift
+ [ -z "$1" ] && return 1 # Not Found
+ local item
+ for item in "$@"; do
+ [ "$item" = "$needle" ] && return 0 # Found
+ done
+ return 1 # Not Found
+}
+
+get_downloadclient() {
+ # $1 = url with valid protocol prefix
+ local url=$1
+ local proto=$(echo $netfile | sed 's|://.*||')
+
+ # loop through DOWNLOAD_AGENTS variable looking for protocol
+ local i
+ for i in "${DLAGENTS[@]}"; do
+ local handler=$(echo $i | sed 's|::.*||')
+ if [ "$proto" == "$handler" ]; then
+ agent=$(echo $i | sed 's|^.*::||')
+ break
+ fi
+ done
+
+ # if we didn't find an agent, return an error
+ if [ -z "$agent" ]; then
+ error "$(gettext "There is no agent set up to handle %s URLs. Check %s.")" "$proto" "$confdir/makepkg.conf"
+ plain "$(gettext "Aborting...")"
+ exit 1 # $E_CONFIG_ERROR
+ fi
+
+ # ensure specified program is installed
+ local program="$(echo $agent | awk '{print $1 }')"
+ if [ ! -x "$program" ]; then
+ local baseprog=$(basename $program)
+ error "$(gettext "The download program %s is not installed.")" "$baseprog"
+ plain "$(gettext "Aborting...")"
+ exit 1 # $E_MISSING_PROGRAM
+ fi
+
+ echo "$agent"
+}
+
+check_deps() {
+ [ $# -gt 0 ] || return
+
+ pmout=$(pacman $PACMAN_OPTS -T "$@")
+ ret=$?
+ if [ $ret -eq 127 ]; then #unresolved deps
+ echo "$pmout"
+ elif [ $ret -ne 0 ]; then
+ error "$(gettext "Pacman returned a fatal error (%i): %s")" "$ret" "$pmout"
+ exit 1
+ fi
+}
+
+handledeps() {
+ local R_DEPS_SATISFIED=0
+ local R_DEPS_MISSING=1
+
+ [ $# -eq 0 ] && return $R_DEPS_SATISFIED
+
+ local deplist="$*"
+ local dep depstrip striplist
+ for dep in $deplist; do
+ depstrip="$(echo $dep | sed -e 's|=.*$||' -e 's|>.*$||' -e 's|<.*$||')"
+ striplist="$striplist $depstrip"
+ done
+
+ if [ "$DEP_SRC" = "0" -a "$DEP_BIN" = "0" ]; then
+ return $R_DEPS_MISSING
+ fi
+
+ if [ "$DEP_BIN" = "1" ]; then
+ # install missing deps from binary packages (using pacman -S)
+ msg "$(gettext "Installing missing dependencies...")"
+ local ret=0
+
+ if [ "$ASROOT" = 0 ]; then
+ sudo pacman $PACMAN_OPTS -S --asdeps $striplist || ret=$?
+ else
+ pacman $PACMAN_OPTS -S --asdeps $striplist || ret=$?
+ fi
+
+ if [ $ret -ne 0 ]; then
+ error "$(gettext "Pacman failed to install missing dependencies.")"
+ exit 1 # TODO: error code
+ fi
+ elif [ "$DEP_SRC" = "1" ]; then
+ msg "$(gettext "Building missing dependencies...")"
+
+ # install missing deps by building them from source.
+ # we look for each package name in $SRCROOT and build it.
+ if [ "$SRCROOT" = "" ]; then
+ error "$(gettext "Source root cannot be found - please make sure it is specified in %s.")" "$confdir/makepkg.conf"
+ exit 1 # TODO: error code
+ fi
+
+ # TODO: handle version comparators (eg, glibc>=2.2.5)
+ for dep in $striplist; do
+ local candidates="$(find "$SRCROOT" -type d -name "$dep")"
+ if [ "$candidates" = "" ]; then
+ error "$(gettext "Could not find '%s' under %s")" "$dep" "$SRCROOT"
+ exit 1 # TODO: error code
+ fi
+
+ local makepkg_opts='-i -c -b'
+ [ "$RMDEPS" = "1" ] && makepkg_opts="$makepkg_opts -r"
+ local ret packagedir
+ for packagedir in $candidates; do
+ if [ -f "$packagedir/$BUILDSCRIPT" ]; then
+ cd "$packagedir"
+ ret=0
+ PKGDEST="$PKGDEST" makepkg $makepkg_opts || ret=$?
+ [ $ret -eq 0 ] && continue 2
+ fi
+ done
+
+ error "$(gettext "Failed to build '%s'")" "$dep"
+ exit 1 # TODO: error code
+ done
+ fi
+
+ # rerun any additional sh scripts found in /etc/profile.d/
+ local script
+ for script in /etc/profile.d/*.sh; do
+ if [ -x $script ]; then
+ source $script &>/dev/null
+ fi
+ done
+
+ return $R_DEPS_SATISFIED
+}
+
+resolve_deps() {
+ # $pkgdeps is a GLOBAL variable, used by remove_deps()
+ local R_DEPS_SATISFIED=0
+ local R_DEPS_MISSING=1
+
+ local deplist="$(check_deps $*)"
+ if [ "$deplist" = "" ]; then
+ return $R_DEPS_SATISFIED
+ else
+ pkgdeps="$pkgdeps $deplist"
+ fi
+
+ if handledeps $deplist; then
+ # check deps again to make sure they were resolved
+ deplist="$(check_deps $*)"
+ [ "$deplist" = "" ] && return $R_DEPS_SATISFIED
+ elif [ "$DEP_BIN" = "1" -o "$DEP_SRC" = "1" ]; then
+ error "$(gettext "Failed to install all missing dependencies.")"
+ fi
+
+ msg "$(gettext "Missing Dependencies:")"
+ local dep
+ for dep in $deplist; do
+ msg2 "$dep"
+ done
+
+ return $R_DEPS_MISSING
+}
+
+# fix flyspray bug #5923
+remove_deps() {
+ # $pkgdeps is a GLOBAL variable, set by resolve_deps()
+ [ "$RMDEPS" = "0" ] && return
+ [ "$pkgdeps" = "" ] && return
+
+ local dep depstrip deplist
+ for dep in $pkgdeps; do
+ depstrip=$(echo $dep | sed -e 's|=.*$||' -e 's|>.*$||' -e 's|<.*$||')
+ deplist="$deplist $depstrip"
+ done
+
+ msg "Removing installed dependencies..."
+ if [ "$ASROOT" = "0" ]; then
+ sudo pacman $PACMAN_OPTS -Rns $deplist
+ else
+ pacman $PACMAN_OPTS -Rns $deplist
+ fi
+}
+
+download_sources() {
+ msg "$(gettext "Retrieving Sources...")"
+
+ if [ ! -w "$SRCDEST" ] ; then
+ error "$(gettext "You do not have write permission to store downloads in %s.")" "$SRCDEST"
+ plain "$(gettext "Aborting...")"
+ exit 1
+ fi
+
+ pushd "$SRCDEST" &>/dev/null
+
+ local netfile
+ for netfile in ${source[@]}; do
+ local file=$(strip_url "$netfile")
+ if [ -f "$startdir/$file" ]; then
+ msg2 "$(gettext "Found %s in build dir")" "$file"
+ cp -s --remove-destination "$startdir/$file" "$srcdir/"
+ continue
+ elif [ -f "$SRCDEST/$file" ]; then
+ msg2 "$(gettext "Using cached copy of %s")" "$file"
+ cp -s --remove-destination "$SRCDEST/$file" "$srcdir/"
+ continue
+ fi
+
+ # find the client we should use for this URL
+ local dlclient=$(get_downloadclient $netfile) || exit $?
+
+ msg2 "$(gettext "Downloading %s...")" "$file"
+ # fix flyspray bug #3289
+ local ret=0
+ $dlclient "$netfile" || ret=$?
+ if [ $ret -gt 0 ]; then
+ error "$(gettext "Failure while downloading %s")" "$file"
+ plain "$(gettext "Aborting...")"
+ exit 1
+ fi
+ cp -s --remove-destination "$SRCDEST/$file" "$srcdir/"
+ done
+
+ popd &>/dev/null
+}
+
+generate_checksums() {
+ msg "$(gettext "Generating checksums for source files...")"
+ plain ""
+
+ local integ
+ for integ in ${INTEGRITY_CHECK[@]}; do
+ integ="$(echo $integ | tr [:upper:] [:lower:])"
+ case "$integ" in
+ md5|sha1|sha256|sha384|sha512) : ;;
+ *)
+ error "$(gettext "Invalid integrity algorithm '%s' specified.")" "$integ"
+ exit 1;; # $E_CONFIG_ERROR
+ esac
+
+ if [ ! $(type -p "${integ}sum") ]; then
+ error "$(gettext "Cannot find the '%s' program.")" "${integ}sum"
+ exit 1 # $E_MISSING_PROGRAM
+ fi
+
+ local ct=0
+ local numsrc=${#source[@]}
+ echo -n "${integ}sums=("
+
+ local i=0;
+ local indent=''
+ while [ $i -lt $((${#integ}+6)) ]; do
+ indent="$indent "
+ i=$(($i+1))
+ done
+
+ local netfile
+ for netfile in ${source[@]}; do
+ local file="$(strip_url "$netfile")"
+
+ if [ ! -f "$file" ] ; then
+ if [ ! -f "$SRCDEST/$file" ] ; then
+ error "$(gettext "Unable to find source file %s to generate checksum.")" "$file"
+ plain "$(gettext "Aborting...")"
+ exit 1
+ else
+ file=$SRCDEST/$file
+ fi
+ fi
+
+ local sum="$(${integ}sum "$file" | cut -d ' ' -f 1)"
+ [ $ct -gt 0 ] && echo -n "$indent"
+ echo -n "'$sum'"
+ ct=$(($ct+1))
+ [ $ct -lt $numsrc ] && echo
+ done
+
+ echo ")"
+ done
+}
+
+check_checksums() {
+ local integ
+ for integ in ${INTEGRITY_CHECK[@]}; do
+ integ="$(echo $integ | tr [:upper:] [:lower:])"
+ case "$integ" in
+ md5|sha1|sha256|sha384|sha512) : ;;
+ *)
+ error "$(gettext "Invalid integrity algorithm '%s' specified")" "$integ"
+ exit 1;; # $E_CONFIG_ERROR
+ esac
+
+ if [ ! $(type -p "${integ}sum") ]; then
+ error "$(gettext "Cannot find the '%s' program.")" "${integ}sum"
+ exit 1 # $E_MISSING_PROGRAM
+ fi
+
+ local integrity_sums=($(eval echo \${${integ}sums[@]}))
+ if [ ${#integrity_sums[@]} -eq ${#source[@]} ]; then
+ msg "$(gettext "Validating source files with %s...")" "${integ}sums"
+ local errors=0
+ local idx=0
+ local file
+ for file in "${source[@]}"; do
+ file="$(strip_url "$file")"
+ echo -n " $file ... " >&2
+
+ if [ ! -f "$file" ] ; then
+ if [ ! -f "$file" ] ; then
+ echo "$(gettext "NOT FOUND")" >&2
+ errors=1
+ continue
+ else
+ file=$SRCDEST/$file
+ fi
+ fi
+
+ if echo "${integrity_sums[$idx]} $file" | ${integ}sum --status -c - &>/dev/null; then
+ echo "$(gettext "Passed")" >&2
+ else
+ echo "$(gettext "FAILED")" >&2
+ errors=1
+ fi
+
+ idx=$((idx + 1))
+ done
+
+ if [ $errors -gt 0 ]; then
+ error "$(gettext "One or more files did not pass the validity check!")"
+ exit 1 # TODO: error code
+ fi
+ else
+ warning "$(gettext "Integrity checks (%s) are missing or incomplete.")" "$integ"
+ fi
+ done
+}
+
+extract_sources() {
+ msg "$(gettext "Extracting Sources...")"
+ local netfile
+ for netfile in "${source[@]}"; do
+ file=$(strip_url "$netfile")
+ if in_array "$file" ${noextract[@]}; then
+ #skip source files in the noextract=() array
+ # these are marked explicitly to NOT be extracted
+ continue
+ fi
+
+ if [ ! -f "$file" ] ; then
+ if [ ! -f "$SRCDEST/$file" ] ; then
+ error "$(gettext "Unable to find source file %s for extraction.")" "$file"
+ plain "$(gettext "Aborting...")"
+ exit 1
+ else
+ file=$SRCDEST/$file
+ fi
+ fi
+
+ # fix flyspray #6246
+ local file_type=$(file -bizL "$file")
+ local cmd=''
+ case "$file_type" in
+ *application/x-tar*|*application/x-zip*|*application/x-cpio*)
+ cmd="bsdtar -x -f $file" ;;
+ *application/x-gzip*)
+ cmd="gunzip -d -f $file" ;;
+ *application/x-bzip*)
+ cmd="bunzip2 -f $file" ;;
+ *)
+ # Don't know what to use to extract this file,
+ # skip to the next file
+ continue;;
+ esac
+
+ local ret=0
+ msg2 "$cmd"
+ $cmd || ret=$?
+ if [ $ret -ne 0 ]; then
+ error "$(gettext "Failed to extract %s")" "$file"
+ plain "$(gettext "Aborting...")"
+ exit 1
+ fi
+ done
+
+ if [ $EUID -eq 0 ]; then
+ # chown all source files to root.root
+ chown -R root.root "$srcdir"
+ fi
+}
+
+run_build() {
+ # use distcc if it is requested (check buildenv and PKGBUILD opts)
+ if [ "$(check_buildenv distcc)" = "y" -a "$(check_option distcc)" != "n" ]; then
+ [ -d /usr/lib/distcc/bin ] && export PATH="/usr/lib/distcc/bin:$PATH"
+ export DISTCC_HOSTS
+ elif [ "$(check_option distcc)" = "n" ]; then
+ # if it is not wanted, clear the makeflags too
+ MAKEFLAGS=""
+ fi
+
+ # use ccache if it is requested (check buildenv and PKGBUILD opts)
+ if [ "$(check_buildenv ccache)" = "y" -a "$(check_option ccache)" != "n" ]; then
+ [ -d /usr/lib/ccache/bin ] && export PATH="/usr/lib/ccache/bin:$PATH"
+ fi
+
+ # clear user-specified makeflags if requested
+ if [ "$(check_option makeflags)" = "n" ]; then
+ MAKEFLAGS=""
+ fi
+
+ msg "$(gettext "Starting build()...")"
+ cd "$srcdir"
+
+ # ensure we have a sane umask set
+ umask 0022
+
+ # ensure all necessary build variables are exported
+ export CFLAGS CXXFLAGS MAKEFLAGS CHOST
+
+ local ret=0
+ if [ "$LOGGING" = "1" ]; then
+ BUILDLOG="${startdir}/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log"
+ if [ -f "$BUILDLOG" ]; then
+ local i=1
+ while true; do
+ if [ -f "$BUILDLOG.$i" ]; then
+ i=$(($i +1))
+ else
+ break
+ fi
+ done
+ mv "$BUILDLOG" "$BUILDLOG.$i"
+ fi
+
+ build 2>&1 | tee "$BUILDLOG"; ret=${PIPESTATUS[0]}
+ else
+ build 2>&1 || ret=$?
+ fi
+
+ if [ $ret -gt 0 ]; then
+ error "$(gettext "Build Failed.")"
+ plain "$(gettext "Aborting...")"
+ remove_deps
+ exit 2 # $E_BUILD_FAILED
+ fi
+}
+
+tidy_install() {
+ cd "$pkgdir"
+ msg "$(gettext "Tidying install...")"
+
+ if [ "$(check_option docs)" = "n" ]; then
+ msg2 "$(gettext "Removing info/doc files...")"
+ #fix flyspray bug #5021
+ rm -rf ${DOC_DIRS[@]}
+ fi
+
+ if [ -d usr/share/man ]; then
+ msg2 "$(gettext "Moving usr/share/man files to usr/man...")"
+ mkdir -p usr/man
+ cp -a usr/share/man/* usr/man/
+ rm -rf usr/share/man
+ fi
+
+
+ msg2 "$(gettext "Compressing man pages...")"
+ local manpage ext file link
+ find {usr{,/local},opt/*}/man -type f 2>/dev/null | while read manpage ; do
+ ext="${manpage##*.}"
+ file="${manpage##*/}"
+ if [ "$ext" != "gz" -a "$ext" != "bz2" ]; then
+ # update symlinks to this manpage
+ find {usr{,/local},opt/*}/man -lname "$file" 2>/dev/null | while read link ; do
+ rm -f "$link"
+ ln -sf "${file}.gz" "${link}.gz"
+ done
+ # compress the original
+ gzip -9 "$manpage"
+ fi
+ done
+
+
+ if [ "$(check_option strip)" = "y" ]; then
+ msg2 "$(gettext "Stripping debugging symbols from binaries and libraries...")"
+ for file in $(find {,usr/{,local/},opt/}{bin,lib,sbin} -type f 2>/dev/null || true); do
+ case "$(file -biz "$file")" in
+ *application/x-sharedlib*) # Libraries
+ /usr/bin/strip --strip-debug "$file";;
+ *application/x-executable*) # Binaries
+ /usr/bin/strip "$file";;
+ esac
+ done
+ fi
+
+ if [ "$(check_option libtool)" = "n" ]; then
+ msg2 "$(gettext "Removing libtool .la files...")"
+ find . -type f -name "*.la" -exec rm -f -- '{}' \;
+ fi
+
+ if [ "$(check_option emptydirs)" = "n" ]; then
+ msg2 "$(gettext "Removing empty directories...")"
+ find . -depth -type d -empty -delete
+ fi
+}
+
+create_package() {
+ if [ ! -d "$pkgdir" ]; then
+ error "$(gettext "Missing pkg/ directory.")"
+ plain "$(gettext "Aborting...")"
+ exit 1 # $E_MISSING_PKGDIR
+ fi
+
+ cd "$pkgdir"
+ msg "$(gettext "Creating package...")"
+
+ local builddate=$(date -u "+%s")
+ if [ "$PACKAGER" != "" ]; then
+ local packager="$PACKAGER"
+ else
+ local packager="Arch Linux (http://www.archlinux.org)"
+ fi
+ local size=$(du -sb | awk '{print $1}')
+
+ msg2 "$(gettext "Generating .FILELIST file...")"
+ # The following command does the following:
+ # - find all directories and add a trailing /
+ # - find all other files/links
+ # - grep out dot files in root dir (e.g. .FILELIST .PKGINFO...)
+ # - sort the list
+ find . -mindepth 1 \( -type d -printf '%P/\n' \) , \( ! -type d -printf '%P\n' \) \
+ 2>/dev/null | grep -v '^\.' | sort >.FILELIST
+
+ # write the .PKGINFO file
+ msg2 "$(gettext "Generating .PKGINFO file...")"
+ echo "# Generated by makepkg $myver" >.PKGINFO
+ if [ "$INFAKEROOT" = "1" ]; then
+ echo "# using $(fakeroot -v)" >>.PKGINFO
+ fi
+ echo "# $(LC_ALL= LANG= date -u)" >>.PKGINFO
+ echo "pkgname = $pkgname" >>.PKGINFO
+ echo "pkgver = $pkgver-$pkgrel" >>.PKGINFO
+ echo "pkgdesc = $pkgdesc" >>.PKGINFO
+ echo "url = $url" >>.PKGINFO
+ echo "builddate = $builddate" >>.PKGINFO
+ echo "packager = $packager" >>.PKGINFO
+ echo "size = $size" >>.PKGINFO
+ if [ "$CARCH" != "" ]; then
+ echo "arch = $CARCH" >>.PKGINFO
+ fi
+
+ local it
+ for it in "${license[@]}"; do
+ echo "license = $it" >>.PKGINFO
+ done
+ for it in "${replaces[@]}"; do
+ echo "replaces = $it" >>.PKGINFO
+ done
+ for it in "${groups[@]}"; do
+ echo "group = $it" >>.PKGINFO
+ done
+ for it in "${depends[@]}"; do
+ echo "depend = $it" >>.PKGINFO
+ done
+ for it in "${optdepends[@]}"; do
+ echo "optdepend = $it" >>.PKGINFO
+ done
+ for it in "${conflicts[@]}"; do
+ echo "conflict = $it" >>.PKGINFO
+ done
+ for it in "${provides[@]}"; do
+ echo "provides = $it" >>.PKGINFO
+ done
+ for it in "${backup[@]}"; do
+ echo "backup = $it" >>.PKGINFO
+ done
+
+ # TODO maybe remove this at some point
+ # warn if license array is not present or empty
+ if [ "$license" = "" ]; then
+ warning "$(gettext "Please add a license line to your %s!")" "$BUILDSCRIPT"
+ plain "$(gettext "Example for GPL'ed software: license=('GPL').")"
+ fi
+
+ local comp_files=".PKGINFO .FILELIST"
+
+ # check for an install script
+ # TODO: should we include ${pkgname}.install if it exists and $install is unset?
+ if [ "$install" != "" ]; then
+ msg2 "$(gettext "Adding install script...")"
+ cp "$startdir/$install" .INSTALL
+ comp_files="$comp_files .INSTALL"
+ fi
+
+ # do we have a changelog?
+ if [ -f "$startdir/ChangeLog" ]; then
+ msg2 "$(gettext "Adding package changelog...")"
+ cp "$startdir/ChangeLog" .CHANGELOG
+ comp_files="$comp_files .CHANGELOG"
+ fi
+
+ # tar it up
+ msg2 "$(gettext "Compressing package...")"
+
+ local pkg_file="$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}"
+
+ if ! bsdtar -czf "$pkg_file" $comp_files $(ls); then
+ error "$(gettext "Failed to create package file.")"
+ exit 1 # TODO: error code
+ fi
+}
+
+create_xdelta() {
+ if [ "$(check_buildenv xdelta)" != "y" ]; then
+ return
+ elif [ ! "$(type -p xdelta)" ]; then
+ error "$(gettext "Cannot find the xdelta binary! Is xdelta installed?")"
+ return
+ fi
+
+ local pkg_file=$1
+ local cache_dir="/var/cache/pacman/pkg" # TODO: autoconf me
+ local pkginfo="$(mktemp "$startdir"/xdelta-pkginfo.XXXXXXXXX)"
+
+ local old_file old_version
+ for old_file in $(ls {"$cache_dir","$PKGDEST"}/${pkgname}-*-*{,-$CARCH}$PKGEXT 2>/dev/null); do
+ bsdtar -xOf "$old_file" .PKGINFO > "$pkginfo" || continue
+ if [ "$(cat "$pkginfo" | grep '^pkgname = ')" != "pkgname = $pkgname" ]; then
+ continue # Package name does not match.
+ elif [ "$(cat "$pkginfo" | grep '^arch = ')" != "arch = $CARCH" ] ; then
+ continue # Not same arch.
+ fi
+
+ old_version="$(cat "$pkginfo" | grep '^pkgver = ' | sed 's/^pkgver = //')"
+
+ # old_version may include the target package, only use the old versions
+ local vercmp=$(vercmp "$old_version" "$latest_version")
+ if [ "$old_version" != "$pkgver-$pkgrel" -a $vercmp -gt 0 ]; then
+ local latest_version=$old_version
+ local base_file=$old_file
+ fi
+ done
+
+ rm -f "$pkginfo"
+
+ if [ "$base_file" != "" ]; then
+ msg "$(gettext "Making delta from version %s...")" "$latest_version"
+ local delta_file="$PKGDEST/$pkgname-${latest_version}_to_$pkgver-$pkgrel-$CARCH.delta"
+ local ret=0
+
+ # xdelta will decompress base_file & pkg_file into TMP_DIR (or /tmp if
+ # TMP_DIR is unset) then perform the delta on the resulting tars
+ xdelta delta "$base_file" "$pkg_file" "$delta_file" || ret=$?
+
+ if [ $ret -eq 0 -o $ret -eq 1 ]; then
+ # Generate the final gz using xdelta for compression. xdelta will be our
+ # common denominator compression utility between the packager and the
+ # users. makepkg and pacman must use the same compression algorithm or
+ # the delta generated package may not match, producing md5 checksum
+ # errors.
+ msg2 "$(gettext "Recreating package tarball from delta to match md5 signatures")"
+ msg2 "$(gettext "NOTE: the delta should ONLY be distributed with this tarball")"
+ ret=0
+ xdelta patch "$delta_file" "$base_file" "$pkg_file" || ret=$?
+ if [ $ret -ne 0 ]; then
+ error "$(gettext "Could not generate the package from the delta.")"
+ exit 1
+ fi
+ else
+ warning "$(gettext "Delta was not able to be created.")"
+ fi
+ else
+ warning "$(gettext "No previous version found, skipping xdelta.")"
+ fi
+}
+
+create_srcpackage() {
+ cd "$startdir"
+ msg "$(gettext "Creating source package...")"
+ local comp_files="PKGBUILD"
+ msg2 "$(gettext "Adding %s...")" "PKGBUILD"
+
+ if [ "$install" != "" ]; then
+ if [ -f $install ]; then
+ msg2 "$(gettext "Adding install script...")"
+ comp_files="$comp_files $install"
+ else
+ error "$(gettext "Install script %s not found.")" "$install"
+ fi
+ fi
+
+ if [ -f ChangeLog ]; then
+ msg2 "$(gettext "Adding %s...")" "ChangeLog"
+ comp_files="$comp_files ChangeLog"
+ fi
+
+ local i
+ for i in ${source[@]}; do
+ if [ -f $i ]; then
+ msg2 "$(gettext "Adding %s...")" "$i"
+ comp_files="$comp_files $i"
+ fi
+ done
+
+ local pkg_file="$PKGDEST/${pkgname}-${pkgver}-${pkgrel}${SRCEXT}"
+
+ # tar it up
+ msg2 "$(gettext "Compressing source package...")"
+ if ! bsdtar -czf "$pkg_file" $comp_files; then
+ error "$(gettext "Failed to create source package file.")"
+ exit 1 # TODO: error code
+ fi
+}
+
+install_package() {
+ [ "$INSTALL" = "0" ] && return
+
+ msg "$(gettext "Installing package with pacman -U...")"
+ if [ "$ASROOT" = "0" ]; then
+ sudo pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT} || exit $?
+ else
+ pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT} || exit $?
+ fi
+}
+
+devel_check() {
+ newpkgver=""
+ if [ "$FORCE_VER" = "" ]; then
+ # Check if this is a svn/cvs/etc PKGBUILD; set $newpkgver if so.
+ # This will only be used on the first call to makepkg; subsequent
+ # calls to makepkg via fakeroot will explicitly pass the version
+ # number to avoid having to determine the version number twice.
+ oldpkgver=$pkgver
+ if [ ! -z ${_darcstrunk} ] && [ ! -z ${_darcsmod} ] ; then
+ msg "$(gettext "Determining latest darcs revision...")"
+ newpkgver=$(date +%Y%m%d)
+ elif [ ! -z ${_cvsroot} ] && [ ! -z ${_cvsmod} ] ; then
+ msg "$(gettext "Determining latest cvs revision...")"
+ newpkgver=$(date +%Y%m%d)
+ elif [ ! -z ${_gitroot} ] && [ ! -z ${_gitname} ] ; then
+ msg "$(gettext "Determining latest git revision...")"
+ newpkgver=$(date +%Y%m%d)
+ elif [ ! -z ${_svntrunk} ] && [ ! -z ${_svnmod} ] ; then
+ msg "$(gettext "Determining latest svn revision...")"
+ newpkgver=$(svn log $_svntrunk --limit 1 | sed -n 's/^r\([^ ]*\) .*$/\1/p')
+ elif [ ! -z ${_bzrtrunk} ] && [ ! -z ${_bzrmod} ] ; then
+ msg "$(gettext "Determining latest bzr revision...")"
+ newpkgver=$(bzr revno ${_bzrtrunk})
+ elif [ ! -z ${_hgroot} ] && [ ! -z ${_hgrepo} ] ; then
+ msg "$(gettext "Determining latest hg revision...")"
+ if [ -d ./src/$_hgrepo ] ; then
+ cd ./src/$_hgrepo
+ hg pull
+ hg update
+ else
+ [[ ! -d ./src/ ]] && mkdir ./src/
+ hg clone $_hgroot/$_hgrepo ./src/$_hgrepo
+ cd ./src/$_hgrepo
+ fi
+ newpkgver=$(hg tip | sed -n '1s/[^0-9]*\([^:]*\):.*$/\1/p')
+ cd ../../
+ fi
+
+ if [ "$newpkgver" != "" ]; then
+ msg2 "$(gettext "Version found: %s")" "$newpkgver"
+ pkgver=$newpkgver
+ fi
+
+ else
+ # Version number retrieved from fakeroot->makepkg argument
+ newpkgver=$FORCE_VER
+ fi
+}
+
+devel_update() {
+ # This is lame, but if we're wanting to use an updated pkgver for
+ # retrieving svn/cvs/etc sources, we'll update the PKGBUILD with
+ # the new pkgver and then re-source it. This is the most robust
+ # method for dealing with PKGBUILDs that use, e.g.:
+ #
+ # pkgver=23
+ # ...
+ # _foo=pkgver
+ #
+ if [ "$newpkgver" != "" ]; then
+ if [ "newpkgver" != "$pkgver" ]; then
+ sed -i "s/^pkgver=[^ ]*/pkgver=$newpkgver/" ./$BUILDSCRIPT
+ source $BUILDSCRIPT
+ fi
+ fi
+}
+
+usage() {
+ printf "makepkg (pacman) %s\n" "$myver"
+ echo
+ printf "$(gettext "Usage: %s [options]")\n" "$0"
+ echo
+ echo "$(gettext "Options:")"
+ printf "$(gettext " -A, --ignorearch Ignore incomplete arch field in %s")\n" "$BUILDSCRIPT"
+ echo "$(gettext " -b, --builddeps Build missing dependencies from source")"
+ echo "$(gettext " -c, --clean Clean up work files after build")"
+ echo "$(gettext " -C, --cleancache Clean up source files from the cache")"
+ echo "$(gettext " -d, --nodeps Skip all dependency checks")"
+ echo "$(gettext " -e, --noextract Do not extract source files (use existing src/ dir)")"
+ echo "$(gettext " -f, --force Overwrite existing package")"
+ echo "$(gettext " -g, --geninteg Generate integrity checks for source files")"
+ echo "$(gettext " -h, --help This help")"
+ echo "$(gettext " -i, --install Install package after successful build")"
+ echo "$(gettext " -L, --log Log package build process")"
+ echo "$(gettext " -m, --nocolor Disable colorized output messages")"
+ echo "$(gettext " -o, --nobuild Download and extract files only")"
+ printf "$(gettext " -p <buildscript> Use an alternate build script (instead of '%s')")\n" "$BUILDSCRIPT"
+ echo "$(gettext " -r, --rmdeps Remove installed dependencies after a successful build")"
+ # fix flyspray feature request #2978
+ echo "$(gettext " -R, --repackage Repackage contents of pkg/ without building")"
+ echo "$(gettext " -s, --syncdeps Install missing dependencies with pacman")"
+ echo "$(gettext " --asroot Allow makepkg to run as root user")"
+ echo "$(gettext " --source Do not build package; generate a source-only tarball")"
+ echo
+ echo "$(gettext "These options can be passed to pacman:")"
+ echo
+ echo "$(gettext " --noconfirm Do not ask for confirmation when resolving dependencies")"
+ echo "$(gettext " --noprogressbar Do not show a progress bar when downloading files")"
+ echo
+ printf "$(gettext "If -p is not specified, makepkg will look for '%s'")\n" "$BUILDSCRIPT"
+ echo
+}
+
+version() {
+ printf "makepkg (pacman) %s\n" "$myver"
+ printf "$(gettext "\
+Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n\n\
+This is free software; see the source for copying conditions.\n\
+There is NO WARRANTY, to the extent permitted by law.\n")"
+}
+
+ARGLIST=$@
+
+#preserve environment variables
+_PKGDEST=${PKGDEST}
+_SRCDEST=${SRCDEST}
+
+# Source makepkg.conf; fail if it is not found
+if [ -r "$confdir/makepkg.conf" ]; then
+ source "$confdir/makepkg.conf"
+else
+ error "$(gettext "%s not found.")" "$confdir/makepkg.conf"
+ plain "$(gettext "Aborting...")"
+ exit 1 # $E_CONFIG_ERROR
+fi
+
+# Source user-specific makepkg.conf overrides
+if [ -r ~/.makepkg.conf ]; then
+ source ~/.makepkg.conf
+fi
+
+# override settings with an environment variable for batch processing
+PKGDEST=${_PKGDEST:-$PKGDEST}
+PKGDEST=${PKGDEST:-$startdir} #default to $startdir if undefined
+SRCDEST=${_SRCDEST:-$SRCDEST}
+SRCDEST=${SRCDEST:-$startdir} #default to $startdir if undefined
+
+# Only use ABSROOT if we haven't been passed a SRCROOT on the command line.
+if [ -z "$SRCROOT" ]; then
+ if [ -r "$confdir/abs/abs.conf" ]; then
+ source "$confdir/abs/abs.conf"
+ fi
+ if [ -r ~/.abs.conf ]; then
+ source ~/.abs.conf
+ fi
+ SRCROOT=$ABSROOT
+fi
+
+# Parse Command Line Options.
+OPT_SHORT="AbcCdefFghiLmop:rRsSV"
+OPT_LONG="ignorearch,asroot,builddeps,clean,cleancache,nodeps,noextract,force,geninteg,help,install,log"
+OPT_LONG="$OPT_LONG,nocolor,nobuild,rmdeps,repackage,source,syncdeps,usesudo,version,forcever:"
+# Pacman Options
+OPT_LONG="$OPT_LONG,noconfirm,noprogressbar"
+OPT_TEMP="$(getopt -o "$OPT_SHORT" -l "$OPT_LONG" -n "$(basename "$0")" -- "$@" || echo 'GETOPT GO BANG!')"
+if echo "$OPT_TEMP" | grep -q 'GETOPT GO BANG!'; then
+ # This is a small hack to stop the script bailing with 'set -e'
+ echo; usage; exit 1 # E_INVALID_OPTION;
+fi
+eval set -- "$OPT_TEMP"
+unset OPT_SHORT OPT_LONG OPT_TEMP
+
+while true; do
+ case "$1" in
+ # Pacman Options
+ --noconfirm) PACMAN_OPTS="$PACMAN_OPTS --noconfirm" ;;
+ --noprogressbar) PACMAN_OPTS="$PACMAN_OPTS --noprogressbar" ;;
+
+ # Makepkg Options
+ --asroot) ASROOT=1 ;;
+ -A|--ignorearch) IGNOREARCH=1 ;;
+ -b|--builddeps) DEP_SRC=1 ;;
+ -c|--clean) CLEANUP=1 ;;
+ -C|--cleancache) CLEANCACHE=1 ;;
+ -d|--nodeps) NODEPS=1 ;;
+ -e|--noextract) NOEXTRACT=1 ;;
+ -f|--force) FORCE=1 ;;
+ -F) INFAKEROOT=1 ;;
+ -g|--geninteg) GENINTEG=1 ;;
+ -i|--install) INSTALL=1 ;;
+ -L|--log) LOGGING=1 ;;
+ -m|--nocolor) USE_COLOR='n' ;;
+ -o|--nobuild) NOBUILD=1 ;;
+ -p) shift; BUILDSCRIPT=$1 ;;
+ -r|--rmdeps) RMDEPS=1 ;;
+ -R|--repackage) REPKG=1 ;;
+ --source) SOURCEONLY=1 ;;
+ -s|--syncdeps) DEP_BIN=1 ;;
+
+ # Hidden option used by fakeroot call for svn/cvs/etc PKGBUILDs to set the pkgver
+ --forcever) shift; FORCE_VER=$1;;
+
+ # BEGIN DEPRECATED
+ -S|--usesudo)
+ warning "$(gettext "Sudo is used by default now. The --usesudo option is deprecated!")" ;;
+ # END DEPRECATED
+
+ -h|--help) usage; exit 0 ;; # E_OK
+ -V|--version) version; exit 0 ;; # E_OK
+
+ --) OPT_IND=0; shift; break;;
+ *) usage; exit 1 ;; # E_INVALID_OPTION
+ esac
+ shift
+done
+
+if [ "$CLEANCACHE" = "1" ]; then
+ #fix flyspray feature request #5223
+ if [ -n "$SRCDEST" -a "$SRCDEST" != "$startdir" ]; then
+ msg "$(gettext "Cleaning up ALL files from %s.")" "$SRCDEST"
+ echo -n "$(gettext " Are you sure you wish to do this? [Y/n] ")"
+ read answer
+ answer=$(echo $answer | tr [:upper:] [:lower:])
+ if [ "$answer" = "yes" -o "$answer" = "y" ]; then
+ rm "$SRCDEST"/*
+ if [ $? -ne 0 ]; then
+ error "$(gettext "Problem removing files; you may not have correct permissions in %s")" "$SRCDEST"
+ exit 1
+ else
+ # removal worked
+ msg "$(gettext "Source cache cleaned.")"
+ exit 0
+ fi
+ else
+ # answer = no
+ msg "$(gettext "No files have been removed.")"
+ exit 0
+ fi
+ else
+ # $SRCDEST is $startdir, two possibilities
+ error "$(gettext "Source destination must be defined in makepkg.conf.")"
+ plain "$(gettext "In addition, please run makepkg -C outside of your cache directory.")"
+ exit 1
+ fi
+fi
+
+if [ -z $BUILDSCRIPT ]; then
+ error "$(gettext "BUILDSCRIPT is undefined! Ensure you have updated %s.")" "$confdir/makepkg.conf"
+ exit 1
+fi
+
+if [ "$INFAKEROOT" = "0" ]; then
+ if [ $EUID -eq 0 -a "$ASROOT" = "0" ]; then
+ # Warn those who like to live dangerously.
+ error "$(gettext "Running makepkg as root is a BAD idea and can cause")"
+ plain "$(gettext "permanent, catastrophic damage to your system. If you")"
+ plain "$(gettext "wish to run as root, please use the --asroot option.")"
+ exit 1 # $E_USER_ABORT
+ elif [ $EUID -gt 0 -a "$ASROOT" = "1" ]; then
+ # Warn those who try to use the --asroot option when they are not root
+ error "$(gettext "The --asroot option is meant for the root user only.")"
+ plain "$(gettext "Please rerun makepkg without the --asroot flag.")"
+ exit 1 # $E_USER_ABORT
+ elif [ "$(check_buildenv fakeroot)" = "y" -a $EUID -gt 0 ]; then
+ if [ ! $(type -p fakeroot) ]; then
+ error "$(gettext "Fakeroot must be installed if using the 'fakeroot' option")"
+ plain "$(gettext "in the BUILDENV array in %s.")" "$confdir/makepkg.conf"
+ exit 1
+ fi
+ elif [ $EUID -gt 0 ]; then
+ warning "$(gettext "Running makepkg as an unprivileged user will result in non-root")"
+ plain "$(gettext "ownership of the packaged files. Try using the fakeroot environment by")"
+ plain "$(gettext "placing 'fakeroot' in the BUILDENV array in makepkg.conf.")"
+ sleep 1
+ fi
+else
+ if [ "$FAKEROOTKEY" = "" ]; then
+ error "$(gettext "Do not use the '-F' option. This option is only for use by makepkg.")"
+ exit 1 # TODO: error code
+ fi
+fi
+
+# check for sudo if we will need it during makepkg execution
+if [ "$ASROOT" = "0" -a \( "$DEP_BIN" = "1" -o "$DEP_SRC" = "1" \
+ -o "$RMDEPS" = "1" -o "$INSTALL" = "1" \) ]; then
+ if [ ! "$(type -p sudo)" ]; then
+ error "$(gettext "Cannot find the sudo binary! Is sudo installed?")"
+ plain "$(gettext "Missing dependencies cannot be installed or removed as a normal user")"
+ plain "$(gettext "without sudo; install and configure sudo to auto-resolve dependencies.")"
+ exit 1
+ fi
+fi
+
+unset pkgname pkgver pkgrel pkgdesc url license groups provides md5sums force
+unset replaces depends conflicts backup source install build makedepends
+unset optdepends options noextract
+
+if [ ! -f "$BUILDSCRIPT" ]; then
+ error "$(gettext "%s does not exist.")" "$BUILDSCRIPT"
+ exit 1
+ #TODO this is an attempt at a generic way to unset all package specific
+ #variables in a PKGBUILD
+ #else
+ # #this is fun.... we'll unset
+ # for var in $(grep "=" $BUILDSCRIPT | sed "s|.*\(\<.*\>\)=.*|\1|g"); do
+ # unset $var
+ # done
+fi
+
+source "$BUILDSCRIPT"
+
+# check for no-no's in the build script
+if [ -z "$pkgver" ]; then
+ error "$(gettext "%s is not allowed to be empty.")" "pkgver"
+ exit 1
+fi
+if [ -z "$pkgrel" ]; then
+ error "$(gettext "%s is not allowed to be empty.")" "pkgrel"
+ exit 1
+fi
+if [ $(echo "$pkgver" | grep '-') ]; then
+ error "$(gettext "%s is not allowed to contain hyphens.")" "pkgver"
+ exit 1
+fi
+if [ $(echo "$pkgrel" | grep '-') ]; then
+ error "$(gettext "%s is not allowed to contain hyphens.")" "pkgrel"
+ exit 1
+fi
+
+if [ "$arch" = 'any' ]; then
+ CARCH='any'
+fi
+
+if ! in_array $CARCH ${arch[@]}; then
+ if [ "$IGNOREARCH" = "0" ]; then
+ error "$(gettext "%s is not available for the '%s' architecture.")" "$pkgname" "$CARCH"
+ plain "$(gettext "Note that many packages may need a line added to their %s")" "$BUILDSCRIPT"
+ plain "$(gettext "such as arch=('%s').")" "$CARCH"
+ exit 1
+ else
+ warning "$(gettext "%s is not available for the '%s' architecture.")" "$pkgname" "$CARCH"
+ plain "$(gettext "Note that many packages may need a line added to their %s")" "$BUILDSCRIPT"
+ plain "$(gettext "such as arch=('%s').")" "$CARCH"
+ fi
+fi
+
+if [ "$install" -a ! -f "$install" ]; then
+ error "$(gettext "Install scriptlet (%s) does not exist.")" "$install"
+ exit 1
+fi
+
+devel_check
+
+if [ -f "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" \
+ -a "$FORCE" = "0" -a "$GENINTEG" = "0" -a "$SOURCEONLY" = "0" \
+ -a "$FORCE_VER" = "" ]; then
+ if [ "$INSTALL" = "1" ]; then
+ warning "$(gettext "A package has already been built, installing existing package...")"
+ install_package
+ exit $?
+ else
+ error "$(gettext "A package has already been built. (use -f to overwrite)")"
+ exit 1
+ fi
+fi
+
+# Run the bare minimum in fakeroot
+# fix flyspray bug 6208 -- using makepkg with fakeroot gives an error
+if [ "$INFAKEROOT" = "1" ]; then
+ if [ "$REPKG" = "1" ]; then
+ warning "$(gettext "Skipping build.")"
+ else
+ devel_update
+ run_build
+ tidy_install
+ fi
+
+ create_package
+
+ msg "$(gettext "Leaving fakeroot environment.")"
+ exit 0 # $E_OK
+fi
+
+msg "$(gettext "Making package: %s")" "$pkgname $pkgver-$pkgrel ($(date))"
+
+if [ $EUID -eq 0 ]; then
+ warning "$(gettext "Running makepkg as root...")"
+fi
+
+# if we are creating a source-only package, go no further
+if [ "$SOURCEONLY" = "1" ]; then
+ if [ -f "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}${SRCEXT}" \
+ -a "$FORCE" = "0" ]; then
+ error "$(gettext "A package has already been built. (use -f to overwrite)")"
+ exit 1
+ fi
+ create_srcpackage
+ msg "$(gettext "Source package created: %s")" "$pkgname ($(date))"
+ exit 0
+fi
+
+# fix flyspray bug #5973
+if [ "$NODEPS" = "1" -o "$GENINTEG" = "1" -o "$NOBUILD" = "1" -o "$REPKG" = "1" ]; then
+ if [ "$NODEPS" = "1" ]; then
+ warning "$(gettext "Skipping dependency checks.")"
+ fi
+ # skip printing a warning message for the others: geninteg, nobuild, repkg
+elif [ $(type -p pacman) ]; then
+ unset pkgdeps # Set by resolve_deps() and used by remove_deps()
+ deperr=0
+
+ msg "$(gettext "Checking Runtime Dependencies...")"
+ resolve_deps ${depends[@]} || deperr=1
+
+ msg "$(gettext "Checking Buildtime Dependencies...")"
+ resolve_deps ${makedepends[@]} || deperr=1
+
+ if [ $deperr -eq 1 ]; then
+ error "$(gettext "Could not resolve all dependencies.")"
+ exit 1
+ fi
+else
+ warning "$(gettext "pacman was not found in PATH; skipping dependency checks.")"
+fi
+
+# get back to our src directory so we can begin with sources
+mkdir -p "$srcdir"
+cd "$srcdir"
+
+if [ "$GENINTEG" = "1" ]; then
+ download_sources
+ generate_checksums
+ exit 0 # $E_OK
+fi
+
+if [ "$NOEXTRACT" = "1" -o "$REPKG" = "1" ]; then
+ warning "$(gettext "Skipping source retrieval -- using existing src/ tree")"
+ warning "$(gettext "Skipping source integrity checks -- using existing src/ tree")"
+ warning "$(gettext "Skipping source extraction -- using existing src/ tree")"
+
+ if [ "$NOEXTRACT" = "1" -a "$(ls "$srcdir" 2>/dev/null)" = "" ]; then
+ error "$(gettext "The source directory is empty, there is nothing to build!")"
+ plain "$(gettext "Aborting...")"
+ exit 1
+ elif [ "$REPKG" = "1" -a \( ! -d "$pkgdir" -o "$(ls "$pkgdir" 2>/dev/null)" = "" \) ]; then
+ error "$(gettext "The package directory is empty, there is nothing to repackage!")"
+ plain "$(gettext "Aborting...")"
+ exit 1
+ fi
+else
+ download_sources
+ check_checksums
+ extract_sources
+fi
+
+if [ "$NOBUILD" = "1" ]; then
+ msg "$(gettext "Sources are ready.")"
+ exit 0 #E_OK
+else
+ # check for existing pkg directory; don't remove if we are repackaging
+ if [ -d "$pkgdir" -a "$REPKG" = "0" ]; then
+ msg "$(gettext "Removing existing pkg/ directory...")"
+ rm -rf "$pkgdir"
+ fi
+ mkdir -p "$pkgdir"
+
+ if [ $EUID -eq 0 ]; then
+ # if we are root, then we don't need to recall makepkg with fakeroot
+ if [ "$REPKG" = "1" ]; then
+ warning "$(gettext "Skipping build.")"
+ else
+ devel_update
+ run_build
+ tidy_install
+ fi
+
+ create_package
+ else
+ msg "$(gettext "Entering fakeroot environment...")"
+ cd "$startdir"
+
+ if [ "$newpkgver" != "" ]; then
+ fakeroot -- $0 --forcever $newpkgver -F $ARGLIST || exit $?
+ else
+ fakeroot -- $0 -F $ARGLIST || exit $?
+ fi
+ fi
+
+ create_xdelta "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}"
+fi
+
+msg "$(gettext "Finished making: %s")" "$pkgname ($(date))"
+
+install_package
+
+exit 0 #E_OK
+
+# vim: set ts=2 sw=2 noet:
diff --git a/scripts/makeworld b/scripts/makeworld
deleted file mode 100755
index b9d318c6..00000000
--- a/scripts/makeworld
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/bin/bash
-#
-# makeworld
-#
-# Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-# USA.
-#
-
-version="3.0.0"
-toplevel=$(pwd)
-
-usage() {
- echo "makeworld version $version"
- echo "usage: $0 [options] <destdir> <category> [category] ..."
- echo "options:"
- echo " -b, --builddeps Build missing dependencies from source"
- echo " -B, --noccache Do not use ccache during build"
- echo " -c, --clean Clean up work files after build"
- echo " -C, --cleancache Clean up source files from the cache"
- echo " -d, --nodeps Skip all dependency checks"
- echo " -e, --noextract Do not extract source files (use existing src/ dir)"
- echo " -f, --force Overwrite existing packages"
- echo " -i, --install Install package after successful build"
- echo " -m, --nocolor Disable colorized output messages"
- echo " -h, --help This help"
- echo " -o, --nobuild Download and extract files only"
- echo " -r, --rmdeps Remove installed dependencies after a successful build"
- echo " -s, --syncdeps Install missing dependencies with pacman"
- echo " -S, --usesudo Use sudo when running pacman commands"
- echo
- echo "These options can be passed to pacman:"
- echo
- echo " --noconfirm Do not ask for confirmation when resolving dependencies"
- echo " --noprogressbar Do not show a progress bar when downloading files"
- echo
- echo "Where <category> is one or more directory names under the ABS root"
- echo "eg: makeworld -c /packages base lib editors"
- echo
- echo "This should be run from the toplevel directory of ABS (usually /var/abs)"
-}
-
-if [ $# -lt 2 ]; then
- usage
- exit 1
-fi
-
-MAKEPKG_OPTS=
-for arg in $*; do
- case $arg in
- # pacman
- --noconfirm) MAKEPKG_OPTS="$MAKEPKG_OPTS --noconfirm" ;;
- --noprogressbar) MAKEPKG_OPTS="$MAKEPKG_OPTS --noprogressbar" ;;
- # makepkg
- --clean) MAKEPKG_OPTS="$MAKEPKG_OPTS -c" ;;
- --install) MAKEPKG_OPTS="$MAKEPKG_OPTS -i" ;;
- --syncdeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -s" ;;
- --usesudo) MAKEPKG_OPTS="$MAKEPKG_OPTS -S" ;;
- --builddeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -b" ;;
- --nodeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -d" ;;
- --force) MAKEPKG_OPTS="$MAKEPKG_OPTS -f" ;;
- --rmdeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -r" ;;
- --noccache) MAKEPKG_OPTS="$MAKEPKG_OPTS -B" ;;
- --cleancache) MAKEPKG_OPTS="$MAKEPKG_OPTS -C" ;;
- --noextract) MAKEPKG_OPTS="$MAKEPKG_OPTS -e" ;;
- --nobuild) MAKEPKG_OPTS="$MAKEPKG_OPTS -o" ;;
- --nocolor) MAKEPKG_OPTS="$MAKEPKG_OPTS -m" ;;
- --help)
- usage
- exit 0
- ;;
- --*)
- usage
- exit 1
- ;;
- -*)
- while getopts "chisSbdfrBCemoS-" opt; do
- case $opt in
- c) MAKEPKG_OPTS="$MAKEPKG_OPTS -c" ;;
- i) MAKEPKG_OPTS="$MAKEPKG_OPTS -i" ;;
- s) MAKEPKG_OPTS="$MAKEPKG_OPTS -s" ;;
- b) MAKEPKG_OPTS="$MAKEPKG_OPTS -b" ;;
- d) MAKEPKG_OPTS="$MAKEPKG_OPTS -d" ;;
- f) MAKEPKG_OPTS="$MAKEPKG_OPTS -f" ;;
- r) MAKEPKG_OPTS="$MAKEPKG_OPTS -r" ;;
- B) MAKEPKG_OPTS="$MAKEPKG_OPTS -B" ;;
- C) MAKEPKG_OPTS="$MAKEPKG_OPTS -C" ;;
- e) MAKEPKG_OPTS="$MAKEPKG_OPTS -e" ;;
- m) MAKEPKG_OPTS="$MAKEPKG_OPTS -m" ;;
- o) MAKEPKG_OPTS="$MAKEPKG_OPTS -o" ;;
- S) MAKEPKG_OPTS="$MAKEPKG_OPTS -S" ;;
- h)
- usage
- exit 0
- ;;
- -)
- OPTIND=0
- break
- ;;
- esac
- done
- ;;
- *)
- dest=$arg
- shift
- break
- ;;
- esac
- shift
- if [ "$dest" != "" ]; then
- break
- fi
-done
-
-if [ "$dest" = "" ]; then
- usage
- exit 1
-fi
-
-# convert a (possibly) relative path to absolute
-cd "$dest"
-dest="$(pwd)"
-cd - &>/dev/null
-
-sd=$(date +"[%b %d %H:%M]")
-
-for category in $*; do
- for port in $(find "$toplevel/$category" -maxdepth 1 -mindepth 1 -type d | sort); do
- cd $port
- if [ -f PKGBUILD ]; then
- . PKGBUILD
- buildstatus=0
- if [ ! -f "$dest/$pkgname-$pkgver-$pkgrel.pkg.tar.gz" ]; then
- PKGDEST="$dest" makepkg $MAKEPKG_OPTS -m 2>>$toplevel/makepkg.log
- if [ $? -gt 0 ]; then
- buildstatus=2
- else
- buildstatus=1
- fi
- fi
- d=$(date +"[%b %d %H:%M]")
- echo -n "$d " >>$toplevel/build.log
- case $buildstatus in
- 0) echo "$pkgname already built -- skipping" >>$toplevel/build.log ;;
- 1) echo "$pkgname was built successfully" >>$toplevel/build.log ;;
- 2) echo "$pkgname build failed" >>$toplevel/build.log ;;
- esac
- fi
- done
-done
-ed=$(date +"[%b %d %H:%M]")
-
-echo "makeworld complete." >>$toplevel/build.log
-echo " started: $sd" >>$toplevel/build.log
-echo " finished: $ed" >>$toplevel/build.log
-
-exit 0
-
-# vim: set ts=2 sw=2 noet:
diff --git a/scripts/makeworld.sh.in b/scripts/makeworld.sh.in
new file mode 100644
index 00000000..49b758c6
--- /dev/null
+++ b/scripts/makeworld.sh.in
@@ -0,0 +1,194 @@
+#!/bin/bash
+#
+# makeworld
+# @configure_input@
+#
+# Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+#
+
+# gettext initialization
+export TEXTDOMAIN='pacman'
+export TEXTDOMAINDIR='@localedir@'
+
+myver="@PACKAGE_VERSION@"
+BUG_REPORT_EMAIL='@PACKAGE_BUGREPORT@'
+toplevel=$(pwd)
+
+usage() {
+ printf "makeworld (pacman) %s\n" "$myver"
+ echo "$(gettext "Usage: %s [options] <destdir> <category> [category] ...")" "$0"
+ echo "$(gettext "Options:")"
+ echo "$(gettext " -b, --builddeps Build missing dependencies from source")"
+ echo "$(gettext " -B, --noccache Do not use ccache during build")"
+ echo "$(gettext " -c, --clean Clean up work files after build")"
+ echo "$(gettext " -C, --cleancache Clean up source files from the cache")"
+ echo "$(gettext " -d, --nodeps Skip all dependency checks")"
+ echo "$(gettext " -e, --noextract Do not extract source files (use existing src/ dir)")"
+ echo "$(gettext " -f, --force Overwrite existing packages")"
+ echo "$(gettext " -i, --install Install package after successful build")"
+ echo "$(gettext " -m, --nocolor Disable colorized output messages")"
+ echo "$(gettext " -h, --help This help")"
+ echo "$(gettext " -o, --nobuild Download and extract files only")"
+ echo "$(gettext " -r, --rmdeps Remove installed dependencies after a successful build")"
+ echo "$(gettext " -s, --syncdeps Install missing dependencies with pacman")"
+ echo "$(gettext " -S, --usesudo Use sudo when running pacman commands")"
+ echo
+ echo "$(gettext "These options can be passed to pacman:")"
+ echo
+ echo "$(gettext " --noconfirm Do not ask for confirmation when resolving dependencies")"
+ echo "$(gettext " --noprogressbar Do not show a progress bar when downloading files")"
+ echo
+ echo "$(gettext "Where <category> is one or more directory names under the ABS root")"
+ echo "$(gettext "eg: makeworld -c /packages base lib editors")"
+ echo
+ echo "$(gettext "This should be run from the toplevel directory of ABS (usually /var/abs)")"
+}
+
+version() {
+ printf "makeworld (pacman) %s\n" "$myver"
+ printf "$(gettext "\
+Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n\n\
+This is free software; see the source for copying conditions.\n\
+There is NO WARRANTY, to the extent permitted by law.\n")"
+}
+
+MAKEPKG_OPTS=
+for arg in $*; do
+ case $arg in
+ # pacman
+ --noconfirm) MAKEPKG_OPTS="$MAKEPKG_OPTS --noconfirm" ;;
+ --noprogressbar) MAKEPKG_OPTS="$MAKEPKG_OPTS --noprogressbar" ;;
+ # makepkg
+ --clean) MAKEPKG_OPTS="$MAKEPKG_OPTS -c" ;;
+ --install) MAKEPKG_OPTS="$MAKEPKG_OPTS -i" ;;
+ --syncdeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -s" ;;
+ --usesudo) MAKEPKG_OPTS="$MAKEPKG_OPTS -S" ;;
+ --builddeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -b" ;;
+ --nodeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -d" ;;
+ --force) MAKEPKG_OPTS="$MAKEPKG_OPTS -f" ;;
+ --rmdeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -r" ;;
+ --noccache) MAKEPKG_OPTS="$MAKEPKG_OPTS -B" ;;
+ --cleancache) MAKEPKG_OPTS="$MAKEPKG_OPTS -C" ;;
+ --noextract) MAKEPKG_OPTS="$MAKEPKG_OPTS -e" ;;
+ --nobuild) MAKEPKG_OPTS="$MAKEPKG_OPTS -o" ;;
+ --nocolor) MAKEPKG_OPTS="$MAKEPKG_OPTS -m" ;;
+ --help)
+ usage
+ exit 0
+ ;;
+ --version)
+ version
+ exit 0
+ ;;
+ --*)
+ usage
+ exit 1
+ ;;
+ -*)
+ while getopts "chisSbdfrBCemoSV-" opt; do
+ case $opt in
+ c) MAKEPKG_OPTS="$MAKEPKG_OPTS -c" ;;
+ i) MAKEPKG_OPTS="$MAKEPKG_OPTS -i" ;;
+ s) MAKEPKG_OPTS="$MAKEPKG_OPTS -s" ;;
+ b) MAKEPKG_OPTS="$MAKEPKG_OPTS -b" ;;
+ d) MAKEPKG_OPTS="$MAKEPKG_OPTS -d" ;;
+ f) MAKEPKG_OPTS="$MAKEPKG_OPTS -f" ;;
+ r) MAKEPKG_OPTS="$MAKEPKG_OPTS -r" ;;
+ B) MAKEPKG_OPTS="$MAKEPKG_OPTS -B" ;;
+ C) MAKEPKG_OPTS="$MAKEPKG_OPTS -C" ;;
+ e) MAKEPKG_OPTS="$MAKEPKG_OPTS -e" ;;
+ m) MAKEPKG_OPTS="$MAKEPKG_OPTS -m" ;;
+ o) MAKEPKG_OPTS="$MAKEPKG_OPTS -o" ;;
+ S) MAKEPKG_OPTS="$MAKEPKG_OPTS -S" ;;
+ h)
+ usage
+ exit 0
+ ;;
+ V)
+ version
+ exit 0
+ ;;
+ -)
+ OPTIND=0
+ break
+ ;;
+ esac
+ done
+ ;;
+ *)
+ dest=$arg
+ shift
+ break
+ ;;
+ esac
+ shift
+ if [ "$dest" != "" ]; then
+ break
+ fi
+done
+
+if [ "$dest" = "" ]; then
+ usage
+ exit 1
+fi
+
+if [ $# -lt 1 ]; then
+ usage
+ exit 1
+fi
+
+# convert a (possibly) relative path to absolute
+cd "$dest"
+dest="$(pwd)"
+cd - &>/dev/null
+
+sd=$(date +"[%b %d %H:%M]")
+
+for category in $*; do
+ for port in $(find "$toplevel/$category" -maxdepth 1 -mindepth 1 -type d | sort); do
+ cd $port
+ if [ -f PKGBUILD ]; then
+ . PKGBUILD
+ buildstatus=0
+ if [ ! -f "$dest/$pkgname-$pkgver-$pkgrel.pkg.tar.gz" ]; then
+ PKGDEST="$dest" makepkg $MAKEPKG_OPTS -m 2>>$toplevel/makepkg.log
+ if [ $? -gt 0 ]; then
+ buildstatus=2
+ else
+ buildstatus=1
+ fi
+ fi
+ d=$(date +"[%b %d %H:%M]")
+ echo -n "$d " >>$toplevel/build.log
+ case $buildstatus in
+ 0) echo "$pkgname already built -- skipping" >>$toplevel/build.log ;;
+ 1) echo "$pkgname was built successfully" >>$toplevel/build.log ;;
+ 2) echo "$pkgname build failed" >>$toplevel/build.log ;;
+ esac
+ fi
+ done
+done
+ed=$(date +"[%b %d %H:%M]")
+
+echo "makeworld complete." >>$toplevel/build.log
+echo " started: $sd" >>$toplevel/build.log
+echo " finished: $ed" >>$toplevel/build.log
+
+exit 0
+
+# vim: set ts=2 sw=2 noet:
diff --git a/scripts/pacman-optimize b/scripts/pacman-optimize
deleted file mode 100755
index ca170334..00000000
--- a/scripts/pacman-optimize
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/bin/bash
-#
-# pacman-optimize
-#
-# Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-# USA.
-#
-
-myver='3.0.0'
-
-error() {
- if [ "$USECOLOR" = "YES" -o "$USECOLOR" = "yes" ]; then
- echo -e "\033[1;31m:: ERROR:\033[1;0m \033[1;1m$@\033[1;0m" >&2
- else
- echo ":: ERROR: $@" >&2
- fi
-}
-
-source /etc/rc.conf #for USECOLOR
-source /etc/rc.d/functions
-
-usage() {
- echo "pacman-optimize $myver"
- echo "usage: $0 [pacman_db_root]"
- echo
- echo "pacman-optimize is a little hack that should improve the performance"
- echo "of pacman when reading/writing to its filesystem-based database."
- echo
- echo "Because pacman uses many small files to keep track of packages,"
- echo "there is a tendency for these files to become fragmented over time."
- echo "This script attempts to relocate these small files into one"
- echo "continuous location on your hard drive. The result is that the hard"
- echo "drive should be able to read them faster, since the hard drive head"
- echo "does not have to move around the disk as much."
- echo
-}
-
-die() {
- error $@
- exit 1
-}
-
-die_r() {
- rm -f /tmp/pacman.lck
- die $@
-}
-
-dbroot="/var/lib/pacman"
-
-if [ "$1" != "" ]; then
- if [ "$1" = "-h" -o "$1" = "--help" ]; then
- usage
- exit 0
- fi
- dbroot="$1"
-fi
-
-# make sure pacman isn't running
-if [ -f /tmp/pacman.lck ]; then
- die "Pacman lockfile was found. Cannot run while pacman is running."
-fi
-
-if [ ! -d "$dbroot" ]; then
- die "$dbroot does not exist or is not a directory"
-fi
-
-if [ ! -w "$dbroot" ]; then
- die "You must have correct permissions to optimize the database"
-fi
-
-# do not let pacman run while we do this
-touch /tmp/pacman.lck
-
-# step 1: sum the old db
-stat_busy "Md5sum'ing the old database"
-find $dbroot -type f | sort | xargs md5sum > /tmp/pacsums.old
-stat_done
-
-# step 2: tar it up
-stat_busy "Tar'ing up $dbroot"
-cd $dbroot
-tar -czf /tmp/pacmanDB.tgz ./
-if [ $? -ne 0 ]; then
- stat_fail
- rm -f /tmp/pacmanDB.tgz /tmp/pacsums.old
- die_r "tar'ing up $dbroot failed"
-fi
-stat_done
-
-# step 3: make and sum the new db
-stat_busy "Making and md5sum'ing the new db"
-mkdir $dbroot.new
-tar -zxpf /tmp/pacmanDB.tgz -C $dbroot.new/
-if [ $? -ne 0 ]; then
- rm -f /tmp/pacmanDB.tgz /tmp/pacsums.old
- rm -rf "$dbroot.new"
- die_r "untar'ing $dbroot failed"
-fi
-find "$dbroot.new" -type f | sort | sed -e 's/pacman.new/pacman/g' |\
- xargs md5sum > /tmp/pacsums.new
-stat_done
-
-# step 4: compare the sums
-stat_busy "Checking integrity"
-diff /tmp/pacsums.old /tmp/pacsums.new >/dev/null 2>&1
-if [ $? -ne 0 ]; then
- # failed
- stat_fail
- # leave /tmp/pacsums.old and .new for checking to see what doesn't match up
- rm -rf "$dbroot.new" /tmp/pacman.lck /tmp/pacmanDB.tgz
- die_r "integrity check FAILED, reverting to old database"
-fi
-stat_done
-
-# step 5: remove the new temporary database and the old one
-# and use the .tgz to replace the old one
-stat_busy "Putting the new database in place"
-rm -rf "$dbroot.new" "$dbroot"/*
-tar -zxpf /tmp/pacmanDB.tgz -C "$dbroot"/
-stat_done
-
-# remove the lock file, sum files, and .tgz of database
-rm -f /tmp/pacman.lck /tmp/pacsums.old /tmp/pacsums.new /tmp/pacmanDB.tgz
-
-echo
-echo "Finished. Your pacman database has been optimized."
-echo
-
-exit 0
-
-# vim: set ts=2 sw=2 noet:
diff --git a/scripts/pacman-optimize.sh.in b/scripts/pacman-optimize.sh.in
new file mode 100644
index 00000000..513ed481
--- /dev/null
+++ b/scripts/pacman-optimize.sh.in
@@ -0,0 +1,164 @@
+#!/bin/bash
+#
+# pacman-optimize
+# @configure_input@
+#
+# Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+#
+
+# gettext initialization
+export TEXTDOMAIN='pacman'
+export TEXTDOMAINDIR='@localedir@'
+
+myver='@PACKAGE_VERSION@'
+dbroot='@localstatedir@/lib/pacman/'
+lockfile="${dbroot}db.lck"
+
+msg() {
+ local mesg=$1; shift
+ printf "==> ${mesg}\n" "$@" >&2
+}
+
+error () {
+ local mesg=$1; shift
+ printf "==> ERROR: ${mesg}\n" "$@" >&2
+}
+
+usage() {
+ printf "pacman-optimize (pacman) %s\n\n" "$myver"
+ printf "$(gettext "Usage: %s [pacman_db_root]")\n\n" "$0"
+ printf "$(gettext "\
+pacman-optimize is a little hack that should improve the performance\n\
+of pacman when reading/writing to its filesystem-based database.\n\n")"
+ printf "$(gettext "\
+Because pacman uses many small files to keep track of packages,\n\
+there is a tendency for these files to become fragmented over time.\n\
+This script attempts to relocate these small files into one\n\
+continuous location on your hard drive. The result is that the hard\n\
+drive should be able to read them faster, since the hard drive head\n\
+does not have to move around the disk as much.\n")"
+}
+
+version() {
+ printf "pacman-optimize (pacman) %s\n" "$myver"
+ printf "$(gettext "\
+Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n\n\
+This is free software; see the source for copying conditions.\n\
+There is NO WARRANTY, to the extent permitted by law.\n")"
+}
+
+die() {
+ error "$@"
+ exit 1
+}
+
+die_r() {
+ rm -f "$lockfile"
+ die "$@"
+}
+
+if [ "$1" = "-h" -o "$1" = "--help" ]; then
+ usage
+ exit 0
+fi
+
+if [ "$1" = "-V" -o "$1" = "--version" ]; then
+ version
+ exit 0
+fi
+
+if [ "$1" != "" ]; then
+ dbroot="$1"
+fi
+
+# make sure diff is installed
+if ! type diff >/dev/null 2>&1; then
+ die "$(gettext "diff tool was not found, please install diffutils.")"
+fi
+
+# make sure pacman isn't running
+if [ -f "$lockfile" ]; then
+ die "$(gettext "Pacman lock file was found. Cannot run while pacman is running.")"
+fi
+
+if [ ! -d "$dbroot" ]; then
+ die "$(gettext "%s does not exist or is not a directory.")" "$dbroot"
+fi
+
+if [ ! -w "$dbroot" ]; then
+ die "$(gettext "You must have correct permissions to optimize the database.")"
+fi
+
+workdir=$(mktemp -d /tmp/pacman-optimize.XXXXXXXXXX) ||
+ die_r "$(gettext "ERROR: Can not create temp directory for database building.")\n" >&2
+
+# do not let pacman run while we do this
+touch "$lockfile"
+
+# step 1: sum the old db
+msg "$(gettext "MD5sum'ing the old database...")"
+find "$dbroot" -type f | sort | xargs md5sum > "$workdir/pacsums.old"
+
+# step 2: tar it up
+msg "$(gettext "Tar'ing up %s...")" "$dbroot"
+cd "$dbroot"
+bsdtar -czf "$workdir/pacmanDB.tgz" ./
+if [ $? -ne 0 ]; then
+ rm -rf "$workdir"
+ die_r "$(gettext "Tar'ing up %s failed.")" "$dbroot"
+fi
+
+# step 3: make and sum the new db
+msg "$(gettext "Making and MD5sum'ing the new db...")"
+mkdir "$dbroot.new"
+bsdtar -zxpf "$workdir/pacmanDB.tgz" -C "$dbroot.new/"
+if [ $? -ne 0 ]; then
+ rm -rf "$workdir"
+ die_r "$(gettext "Untar'ing %s failed.")" "$dbroot"
+fi
+find "$dbroot.new" -type f | sort | \
+ xargs md5sum | sed 's#.new/##' > "$workdir/pacsums.new"
+
+# step 4: compare the sums
+msg "$(gettext "Checking integrity...")"
+diff "$workdir/pacsums.old" "$workdir/pacsums.new" >/dev/null 2>&1
+if [ $? -ne 0 ]; then
+ # failed
+ # leave /tmp/pacsums.old and .new for checking to see what doesn't match up
+ rm -rf "$dbroot.new"
+ die_r "$(gettext "Integrity check FAILED, reverting to old database.")"
+fi
+
+# step 5: remove the new temporary database and the old one
+# and use the .tgz to replace the old one
+msg "$(gettext "Putting the new database in place...")"
+rm -rf "$dbroot.new" "$dbroot"/*
+bsdtar -zxpf "$workdir/pacmanDB.tgz" -C "$dbroot/"
+
+# remove the lock file, sum files, and .tgz of database
+rm -f "$lockfile"
+rm -rf "$workdir"
+
+echo
+msg "$(gettext "Finished. Your pacman database has been optimized.")"
+msg "$(gettext "For full benefits of pacman-optimize, run 'sync' now.")"
+echo
+
+exit 0
+
+# vim: set ts=2 sw=2 noet:
diff --git a/scripts/rankmirrors b/scripts/rankmirrors.py.in
index 3eb10b5a..0c50bdd8 100644
--- a/scripts/rankmirrors
+++ b/scripts/rankmirrors.py.in
@@ -1,9 +1,9 @@
#! /usr/bin/python
#
-# rankmirrors : read a list of mirrors from a file and rank them by speed
+# rankmirrors - read a list of mirrors from a file and rank them by speed
+# @configure_input@
#
-# Original Idea copyright (c) 2006 R.G. <chesercat>
-# Modified 2006 by Dan McGee <dan@archlinux.org>
+# Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -22,13 +22,19 @@
#
import os, sys, datetime, time, socket, urllib2
from optparse import OptionParser
+from string import Template
def createOptParser():
usage = "usage: %prog [options] MIRRORFILE | URL"
+ version = "%prog (pacman) @PACKAGE_VERSION@\n" \
+ "Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n\n" \
+ "This is free software; see the source for copying conditions.\n" \
+ "There is NO WARRANTY, to the extent permitted by law."
description = "Ranks pacman mirrors by their connection and opening " \
"speed. Pacman mirror files are located in /etc/pacman.d/. It " \
"can also rank one mirror if the URL is provided."
- parser = OptionParser(usage = usage, description = description)
+ parser = OptionParser(usage = usage, version = version,
+ description = description)
parser.add_option("-n", type = "int", dest = "num", default = 0,
help = "number of servers to output, 0 for all")
parser.add_option("-t", "--times", action = "store_true",
@@ -39,6 +45,9 @@ def createOptParser():
parser.add_option("-v", "--verbose", action = "store_true",
dest = "verbose", default = False,
help = "be verbose in ouptut")
+ # The following two options should be automatic
+ #parser.add_option("-h", "--help", action = "help")
+ #parser.add_option("-V", "--version", action = "version")
return parser
def timeCmd(cmd):
@@ -112,11 +121,15 @@ if __name__ == "__main__":
print args[0], ':', "%.2f" % serverToTime
sys.exit(0)
- if not os.path.isfile(args[0]):
+ if not os.path.isfile(args[0]) and args[0] != "-":
print >>sys.stderr, 'rankmirrors: file', args[0], 'does not exist.'
sys.exit(1)
- fl = open(args[0], 'r')
+ if args[0] == "-":
+ fl = sys.stdin
+ else:
+ fl = open(args[0], 'r')
+
serverToTime = {}
if options.times:
print 'Querying servers, this may take some time...'
@@ -141,12 +154,15 @@ if __name__ == "__main__":
print ' * ',
sys.stdout.flush()
+ # if the $repo var is used in the url, replace it by core
+ tempUrl = Template(serverUrl).safe_substitute(repo='core')
+
# add *.db.tar.gz to server name. the repo name is parsed
# from the mirror url; it is the third (or fourth) dir
# from the end, where the url is http://foo/bar/REPO/os/arch
try:
- splitted2 = serverUrl.split('/')
- if serverUrl[-1] != '/':
+ splitted2 = tempUrl.split('/')
+ if tempUrl[-1] != '/':
repoName = splitted2[-3]
dbFileName = '/' + repoName + '.db.tar.gz'
else:
@@ -156,7 +172,7 @@ if __name__ == "__main__":
dbFileName = ''
try:
- serverToTime[serverUrl] = timeCmd(getFuncToTime(serverUrl + dbFileName))
+ serverToTime[serverUrl] = timeCmd(getFuncToTime(tempUrl + dbFileName))
if options.verbose:
try:
print "%.2f" % serverToTime[serverUrl]
diff --git a/scripts/repo-add b/scripts/repo-add
deleted file mode 100755
index 642100d0..00000000
--- a/scripts/repo-add
+++ /dev/null
@@ -1,288 +0,0 @@
-#!/bin/bash
-#
-# repo-add : add a package to a given repo database file
-#
-# Copyright (c) 2006 Aaron Griffin <aaron@archlinux.org>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-# USA.
-
-myver='3.0.3'
-
-FORCE=0
-REPO_DB_FILE=""
-
-DB_COMPRESSION="gz" #TODO this is gross
-DB_CHECKSUMS=(md5)
-TMP_DIR=""
-
-# print usage instructions
-usage() {
- echo "repo-add $myver"
- echo
- echo "usage: repo-add <path-to-db> [--force] <package> ..."
- echo
- echo "repo-add will update a package database by reading a package file."
- echo "Multiple packages to add can be specified on the command line."
- echo
- echo "The --force flag will add a 'force' entry to the sync database, which"
- echo "tells pacman to skip its internal version number checking and update"
- echo "the package regardless."
- echo
- echo "Example:"
- echo " repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz"
- echo
-}
-
-# return calculated checksum of package
-# arg1 - checksum type
-# arg2 - path to package
-get_checksum () {
- case "$(echo "$1" | tr A-Z a-z)" in
- md5) sum=$(md5sum $2); echo ${sum% *} ;;
- sha1) sum=$(sha1sum $2); echo ${sum% *} ;;
- sha256) sum=$(sha256sum $2); echo ${sum% *} ;;
- sha384) sum=$(sha256sum $2); echo ${sum% *} ;;
- sha512) sum=$(sha256sum $2); echo ${sum% *} ;;
- esac
-}
-
-# return PKGINFO string for checksum type
-# arg1 - checksum type
-checksum_name () {
- case "$(echo "$1" | tr A-Z a-z)" in
- md5) echo "MD5SUM" ;;
- sha1) echo "SHA1SUM" ;;
- sha256) echo "SHA256SUM" ;;
- sha384) echo "SHA384SUM" ;;
- sha512) echo "SHA512SUM" ;;
- esac
-}
-
-# test if a file is a repository DB
-test_repo_db_file () {
- if [ -f "$REPO_DB_FILE" ]; then
- [ "$(tar tf "$REPO_DB_FILE" | grep -c "/desc")" -gt 0 ] || return 1
- else
- true
- fi
-}
-
-# write an entry to the pacman database
-# arg1 - path to package
-db_write_entry()
-{
- # blank out all variables and set pkgfile
- pkgfile=$(readlink -f $1)
- export pkgname=""
- pkgver=""
- pkgdesc=""
- url=""
- builddate=""
- packager=""
- csize=""
- size=""
- _groups=""
- _depends=""
- _backups=""
- _licenses=""
- _replaces=""
- _provides=""
- _conflicts=""
-
- OLDIFS="$IFS"
- # IFS (field seperator) is only the newline character
- IFS="
-"
-
- # read info from the zipped package
- for i in $(tar xOf "$pkgfile" .PKGINFO | grep -v "^#" |sed 's|\(\w*\)\s*=\s*\(.*\)|\1="\2"|'); do
- eval "${i}"
- case "$i" in
- group=*) _groups="$_groups $group" ;;
- depend=*) _depends="$_depends $depend" ;;
- backup=*) _backups="$_backups $backup" ;;
- license=*) _licenses="$_licenses $license" ;;
- replaces=*) _replaces="$_replaces $replaces" ;;
- provides=*) _provides="$_provides $provides" ;;
- conflict=*) _conflicts="$_conflicts $conflict" ;;
- esac
- done
-
- IFS=$OLDIFS
-
- # get compressed size of package
- csize="$(du -b $pkgfile | cut -f1)"
-
- cd $gstmpdir
-
- # ensure $pkgname and $pkgver variables were found
- if [ -z "$pkgname" -o -z "$pkgver" ]; then
- echo " error: invalid package file"
- return 1
- fi
-
- # remove any other package in the DB with same name
- for existing in *; do
- if [ "${existing%-*-*}" = "$pkgname" ]; then
- echo ":: removing existing package '$existing'"
- rm -rf $existing
- fi
- done
-
- # create package directory
- mkdir "$pkgname-$pkgver"
- cd "$pkgname-$pkgver"
-
- # create desc entry
- echo ":: creating 'desc' db entry"
- echo -e "%FILENAME%\n$(basename $1)\n" >>desc
- echo -e "%NAME%\n$pkgname\n" >>desc
- echo -e "%VERSION%\n$pkgver\n" >>desc
- if [ -n "$pkgdesc" ]; then
- echo -e "%DESC%\n$pkgdesc\n" >>desc
- fi
- if [ -n "$_groups" ]; then
- echo "%GROUPS%" >>desc
- echo $_groups | tr -s ' ' '\n' >>desc
- echo "" >>desc
- fi
- [ -n $csize ] && echo -e "%CSIZE%\n$csize\n" >>desc
- [ -n $size ] && echo -e "%ISIZE%\n$size\n" >>desc
-
- # compute checksums
- for chk in ${DB_CHECKSUMS[@]}; do
- name="$(checksum_name $chk)"
- echo ":: computing $name checksums"
- if [ -n "$name" ]; then
- echo -e "%$name%\n$(get_checksum $chk $pkgfile)\n" >>desc
- fi
- done
-
- [ -n "$url" ] && echo -e "%URL%\n$url\n" >>desc
- if [ -n "$_licenses" ]; then
- echo "%LICENSE%" >>desc
- echo $_licenses | tr -s ' ' '\n' >>desc
- echo "" >>desc
- fi
- [ -n "$arch" ] && echo -e "%ARCH%\n$arch\n" >>desc
- [ -n "$builddate" ] && echo -e "%BUILDDATE%\n$builddate\n" >>desc
- [ -n "$packager" ] && echo -e "%PACKAGER%\n$packager\n" >>desc
-
- if [ -n "$_replaces" ]; then
- echo "%REPLACES%" >>desc
- echo $_replaces | tr -s ' ' '\n' >>desc
- echo "" >>desc
- fi
- [ "$FORCE" = "1" ] && echo -e "%FORCE%\n" >>desc
-
- # create depends entry
- echo ":: creating 'depends' db entry"
- if [ -n "$_depends" ]; then
- echo "%DEPENDS%" >>depends
- echo $_depends | tr -s ' ' '\n' >>depends
- echo "" >>depends
- fi
- if [ -n "$_conflicts" ]; then
- echo "%CONFLICTS%" >>depends
- echo $_conflicts | tr -s ' ' '\n' >>depends
- echo "" >>depends
- fi
- if [ -n "$_provides" ]; then
- echo "%PROVIDES%" >>depends
- echo $_provides | tr -s ' ' '\n' >>depends
- echo "" >>depends
- fi
-
- # preserve the modification time
- touch -r "$pkgfile" desc depends
-} # end db_write_entry
-
-# PROGRAM START
-
-# check for help flags
-if [ "$1" = "-h" -o "$1" = "--help" ]; then
- usage
- exit 0
-fi
-
-# check for correct number of args
-if [ $# -lt 2 ]; then
- usage
- exit 1
-fi
-
-# main routine
-if [ $# -gt 1 ]; then
- gstmpdir=$(mktemp -d /tmp/gensync.XXXXXXXXXX) || (\
- echo "cannot create temp directory for database building"; \
- exit 1)
-
- success=0
- # parse arguements
- for arg in $@; do
- if [ "$arg" == "--force" -o "$arg" == "-f" ]; then
- FORCE=1
- elif [ -z "$REPO_DB_FILE" ]; then
- REPO_DB_FILE="$(readlink -f $arg)"
- if ! test_repo_db_file; then
- echo "error: repository file '$REPO_DB_FILE' is not a proper pacman db"
- exit 1
- elif [ -f "$REPO_DB_FILE" ]; then
- echo ":: extracting database to a temporary location"
- tar xf "$REPO_DB_FILE" -C "$gstmpdir"
- fi
- else
- if [ -f "$arg" ]; then
- if ! tar tf "$arg" .PKGINFO 2>&1 >/dev/null; then
- echo "error: '$arg' is not a package file, skipping"
- else
- echo ":: adding package '$arg'"
-
- this_dir="$(pwd)"
- if db_write_entry "$arg"; then
- success=1
- fi
- cd $this_dir
- fi
- else
- echo "error: package '$arg' not found"
- fi
- fi
- done
-
- # if all operations were a success, rezip database
- if [ "$success" = "1" ]; then
- echo ":: creating updated database file ${REPO_DB_FILE}"
- cd $gstmpdir
- if [ -n "$(ls)" ]; then
- [ -f "${REPO_DB_FILE}.old" ] && rm "${REPO_DB_FILE}.old"
- [ -f "$REPO_DB_FILE" ] && mv "$REPO_DB_FILE" "${REPO_DB_FILE}.old"
- case "$DB_COMPRESSION" in
- gz) tar c * | gzip -9 >$REPO_DB_FILE ;;
- bz2) tar c * | bzip2 -9 >$REPO_DB_FILE ;;
- *) echo "warning: no compression set"
- tar c * >$REPO_DB_FILE;;
- esac
- fi
- else
- echo ":: no packages modified, nothing to do"
- fi
-fi
-
-# remove the temp directory used to unzip
-[ -d "$gstmpdir" ] && rm -rf $gstmpdir
-
-# vim: set ts=2 sw=2 noet:
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
new file mode 100644
index 00000000..adcefc1d
--- /dev/null
+++ b/scripts/repo-add.sh.in
@@ -0,0 +1,346 @@
+#!/bin/bash
+#
+# repo-add - add a package to a given repo database file
+# @configure_input@
+#
+# Copyright (c) 2006 Aaron Griffin <aaron@archlinux.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# gettext initialization
+export TEXTDOMAIN='pacman'
+export TEXTDOMAINDIR='@localedir@'
+
+myver='@PACKAGE_VERSION@'
+confdir='@sysconfdir@'
+
+FORCE=0
+REPO_DB_FILE=""
+
+msg() {
+ local mesg=$1; shift
+ printf "==> ${mesg}\n" "$@" >&1
+}
+
+msg2() {
+ local mesg=$1; shift
+ printf " -> ${mesg}\n" "$@" >&1
+}
+
+warning() {
+ local mesg=$1; shift
+ printf "==> $(gettext "WARNING:") ${mesg}\n" "$@" >&2
+}
+
+error() {
+ local mesg=$1; shift
+ printf "==> $(gettext "ERROR:") ${mesg}\n" "$@" >&2
+}
+
+# print usage instructions
+usage() {
+ printf "repo-add (pacman) %s\n\n" "$myver"
+ printf "$(gettext "Usage: %s <path-to-db> [--force] <package> ...\n\n")" "$0"
+ printf "$(gettext "\
+repo-add will update a package database by reading a package file.\n\
+Multiple packages to add can be specified on the command line.\n\n")"
+ printf "$(gettext "\
+The --force flag will add a 'force' entry to the sync database, which\n\
+tells pacman to skip its internal version number checking and update\n\
+the package regardless.\n\n")"
+ echo "$(gettext "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz")"
+}
+
+version() {
+ printf "repo-add (pacman) %s\n" "$myver"
+ printf "$(gettext "\
+Copyright (C) 2006 Aaron Griffin <aaron@archlinux.org>.\n\n\
+This is free software; see the source for copying conditions.\n\
+There is NO WARRANTY, to the extent permitted by law.\n")"
+}
+
+# test if a file is a repository DB
+test_repo_db_file () {
+ if [ -f "$REPO_DB_FILE" ]; then
+ if bsdtar -tf "$REPO_DB_FILE" | grep -q "/desc"; then
+ return 0 # YES
+ fi
+ else
+ return 0 # YES - No database file is also aloud.
+ fi
+
+ return 1 # NO
+}
+
+# write a list entry
+# arg1 - Entry name
+# arg2 - List
+# arg3 - File to write to
+write_list_entry() {
+ if [ -n "$2" ]; then
+ echo "%$1%" >>$3
+ echo $2 | tr -s ' ' '\n' >>$3
+ echo "" >>$3
+ fi
+}
+
+# write a delta entry to the pacman database
+# arg1 - path to delta
+db_write_delta()
+{
+ # blank out all variables and set deltafile
+ local deltafile=$(readlink -f "$1")
+ local filename=$(basename "$deltafile")
+ local deltavars pkgname fromver tover arch csize md5sum
+
+ # format of the delta filename:
+ # (package)-(fromver)_to_(tover)-(arch).delta
+ deltavars=( $(echo "$filename" | sed -e 's/\(.*\)-\(.*-.*\)_to_\(.*-.*\)-\(.*\).delta/\1 \2 \3 \4/') )
+ pkgname=${deltavars[0]}
+ fromver=${deltavars[1]}
+ tover=${deltavars[2]}
+ arch=${deltavars[3]}
+
+ # get md5sum and size of delta
+ md5sum="$(md5sum "$deltafile" | cut -d ' ' -f 1)"
+ csize=$(du -b -L "$deltafile" | cut -f 1)
+
+ # ensure variables were found
+ if [ -z "$pkgname" -o -z "$fromver" -o -z "$tover" -o -z "$arch" ]; then
+ return 1
+ fi
+
+ # add the entry for this delta file
+ echo -e "$fromver $tover $csize $filename $md5sum" >>deltas
+} # end db_write_delta
+
+
+# write an entry to the pacman database
+# arg1 - path to package
+db_write_entry()
+{
+ # blank out all variables and set pkgfile
+ local pkgfile=$(readlink -f "$1")
+ local pkgname pkgver pkgdesc url builddate packager csize size \
+ group depend backup license replaces provides conflict \
+ _groups _depends _backups _licenses _replaces _provides _conflicts \
+ startdir
+
+ local OLDIFS="$IFS"
+ # IFS (field seperator) is only the newline character
+ IFS="
+"
+
+ # read info from the zipped package
+ local line
+ for line in $(bsdtar -xOf "$pkgfile" .PKGINFO | \
+ grep -v "^#" | sed 's|\(\w*\)\s*=\s*\(.*\)|\1="\2"|'); do
+ eval "$line"
+ case "$line" in
+ group=*) _groups="$_groups $group" ;;
+ depend=*) _depends="$_depends $depend" ;;
+ backup=*) _backups="$_backups $backup" ;;
+ license=*) _licenses="$_licenses $license" ;;
+ replaces=*) _replaces="$_replaces $replaces" ;;
+ provides=*) _provides="$_provides $provides" ;;
+ conflict=*) _conflicts="$_conflicts $conflict" ;;
+ esac
+ done
+
+ IFS=$OLDIFS
+
+ # get compressed size of package
+ csize=$(du -b -L "$pkgfile" | cut -f 1)
+
+ startdir=$(pwd)
+ pushd "$gstmpdir" 2>&1 >/dev/null
+
+ # ensure $pkgname and $pkgver variables were found
+ if [ -z "$pkgname" -o -z "$pkgver" ]; then
+ error "$(gettext "Invalid package file '%s'.")" "$pkgfile"
+ popd 2>&1 >/dev/null
+ return 1
+ fi
+
+ # remove any other package in the DB with same name
+ local existing
+ for existing in *; do
+ if [ "${existing%-*-*}" = "$pkgname" ]; then
+ msg2 "$(gettext "Removing existing package '%s'...")" "$existing"
+ rm -rf "$existing"
+ fi
+ done
+
+ # create package directory
+ mkdir "$pkgname-$pkgver"
+ cd "$pkgname-$pkgver"
+
+ # create desc entry
+ msg2 "$(gettext "Creating 'desc' db entry...")"
+ echo -e "%FILENAME%\n$(basename "$1")\n" >>desc
+ echo -e "%NAME%\n$pkgname\n" >>desc
+ echo -e "%VERSION%\n$pkgver\n" >>desc
+ [ -n "$pkgdesc" ] && echo -e "%DESC%\n$pkgdesc\n" >>desc
+ write_list_entry "GROUPS" "$_groups" "desc"
+ [ -n $csize ] && echo -e "%CSIZE%\n$csize\n" >>desc
+ [ -n $size ] && echo -e "%ISIZE%\n$size\n" >>desc
+
+ # compute checksums
+ msg2 "$(gettext "Computing md5 checksums...")"
+ echo -e "%MD5SUM%\n$(md5sum "$pkgfile" | cut -d ' ' -f 1)\n" >>desc
+
+ [ -n "$url" ] && echo -e "%URL%\n$url\n" >>desc
+ write_list_entry "LICENSE" "$_licenses" "desc"
+ [ -n "$arch" ] && echo -e "%ARCH%\n$arch\n" >>desc
+ [ -n "$builddate" ] && echo -e "%BUILDDATE%\n$builddate\n" >>desc
+ [ -n "$packager" ] && echo -e "%PACKAGER%\n$packager\n" >>desc
+ write_list_entry "REPLACES" "$_replaces" "desc"
+ [ $FORCE -eq 1 ] && echo -e "%FORCE%\n" >>desc
+
+ # create depends entry
+ msg2 "$(gettext "Creating 'depends' db entry...")"
+ write_list_entry "DEPENDS" "$_depends" "depends"
+ write_list_entry "CONFLICTS" "$_conflicts" "depends"
+ write_list_entry "PROVIDES" "$_provides" "depends"
+
+ # create deltas entry if there are delta files
+ for delta in $startdir/$pkgname-*-*_to_*-*-$arch.delta; do
+ # This for loop also pulls in all files that start with the current package
+ # name and are followed by a -whatever. For instance, running this loop for
+ # gcc would also grab gcc-libs. To guard against this, compare the package
+ # name of the delta to the current package name.
+ local filename=$(basename "$delta")
+ local dpkgname="$(echo "$filename" | sed -e 's/\(.*\)-.*-.*_to_.*-.*-.*.delta/\1/')"
+ if [ "$pkgname" = "$dpkgname" -a -f "$delta" ]; then
+ # create deltas file if it does not already exist
+ if [ ! -f "deltas" ]; then
+ msg2 "$(gettext "Creating 'deltas' db entry...")"
+ echo -e "%DELTAS%" >>deltas
+ fi
+
+ # write this delta entry
+ if db_write_delta "$delta"; then
+ msg2 "$(gettext "Added delta '%s'")" "$(basename "$delta")"
+ else
+ msg2 "$(gettext "Could not add delta '%s'")" "$(basename "$delta")"
+ fi
+ fi
+ done
+ # add the final newline
+ [ -f "deltas" ] && echo -e "" >>deltas
+
+ # preserve the modification time
+ touch -r "$pkgfile" desc depends
+ [ -f "deltas" ] && touch -r "$pkgfile" deltas
+
+ popd 2>&1 >/dev/null
+} # end db_write_entry
+
+# PROGRAM START
+
+# check for help flags
+if [ "$1" = "-h" -o "$1" = "--help" ]; then
+ usage
+ exit 0
+fi
+
+# check for version flags
+if [ "$1" = "-V" -o "$1" = "--version" ]; then
+ version
+ exit 0
+fi
+
+# check for correct number of args
+if [ $# -lt 2 ]; then
+ usage
+ exit 1
+fi
+
+# source system and user makepkg.conf
+if [ -r "$confdir/makepkg.conf" ]; then
+ source "$confdir/makepkg.conf"
+else
+ error "$(gettext "%s not found. Cannot continue.")" "$confdir/makepkg.conf"
+ exit 1 # $E_CONFIG_ERROR
+fi
+
+if [ -r ~/.makepkg.conf ]; then
+ source ~/.makepkg.conf
+fi
+
+# main routine
+gstmpdir=$(mktemp -d /tmp/repo-add.XXXXXXXXXX) || (\
+ error "$(gettext "Cannot create temp directory for database building.")"; \
+ exit 1)
+
+success=0
+# parse arguements
+for arg in "$@"; do
+ if [ "$arg" == "--force" -o "$arg" == "-f" ]; then
+ FORCE=1
+ elif [ -z "$REPO_DB_FILE" ]; then
+ REPO_DB_FILE=$(readlink -f "$arg")
+ if ! test_repo_db_file; then
+ error "$(gettext "Repository file '%s' is not a proper pacman database.")" "$REPO_DB_FILE"
+ exit 1
+ elif [ -f "$REPO_DB_FILE" ]; then
+ msg "$(gettext "Extracting database to a temporary location...")"
+ bsdtar -xf "$REPO_DB_FILE" -C "$gstmpdir"
+ fi
+ else
+ if [ -f "$arg" ]; then
+ if ! bsdtar -tf "$arg" .PKGINFO 2>&1 >/dev/null; then
+ error "$(gettext "'%s' is not a package file, skipping")" "$arg"
+ else
+ msg "$(gettext "Adding package '%s'")" "$arg"
+
+ if db_write_entry "$arg"; then
+ success=1
+ fi
+ fi
+ else
+ error "$(gettext "Package '%s' not found.")" "$arg"
+ fi
+ fi
+done
+
+# if all operations were a success, rezip database
+if [ $success -eq 1 ]; then
+ msg "$(gettext "Creating updated database file %s")" "$REPO_DB_FILE"
+ pushd "$gstmpdir" 2>&1 >/dev/null
+
+ if [ -n "$(ls)" ]; then
+ [ -f "${REPO_DB_FILE}.old" ] && rm "${REPO_DB_FILE}.old"
+ [ -f "$REPO_DB_FILE" ] && mv "$REPO_DB_FILE" "${REPO_DB_FILE}.old"
+
+ case "$DB_COMPRESSION" in
+ gz) TAR_OPT="z" ;;
+ bz2) TAR_OPT="j" ;;
+ *) warning "$(gettext "No compression set.")" ;;
+ esac
+
+ bsdtar -c${TAR_OPT}f "$REPO_DB_FILE" *
+ fi
+
+ popd 2>&1 >/dev/null
+else
+ msg "$(gettext "No packages modified, nothing to do.")"
+fi
+
+# remove the temp directory used to unzip
+[ -d "$gstmpdir" ] && rm -rf "$gstmpdir"
+
+# vim: set ts=2 sw=2 noet:
diff --git a/scripts/repo-remove b/scripts/repo-remove
deleted file mode 100755
index eeee2406..00000000
--- a/scripts/repo-remove
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/bin/bash
-#
-# repo-remove : remove a package entry from a given repo database file
-#
-# Copyright (c) 2007 Dan McGee <dan@archlinux.org>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-# USA.
-
-myver='3.0.0'
-
-FORCE=0
-REPO_DB_FILE=""
-
-DB_COMPRESSION="gz" #TODO this is gross
-DB_CHECKSUMS=(md5)
-TMP_DIR=""
-
-# print usage instructions
-usage() {
- echo "repo-remove $myver"
- echo
- echo "usage: repo-remove <path-to-db> <packagename> ..."
- echo
- echo "repo-remove will update a package database by removing the package name"
- echo "specified on the command line from the given repo database. Multiple"
- echo "packages to remove can be specified on the command line."
- echo
- echo "Example:"
- echo " repo-remove /path/to/repo.db.tar.gz kernel26"
- echo
-}
-
-# test if a file is a repository DB
-test_repo_db_file () {
- if [ -f "$REPO_DB_FILE" ]; then
- [ "$(tar tf "$REPO_DB_FILE" | grep -c "/desc")" -gt 0 ] || return 1
- else
- true
- fi
-}
-
-# remove existing entries from the DB
-db_remove_entry()
-{
- cd $gstmpdir
-
- # remove any other package in the DB with same name
- for existing in *; do
- if [ "${existing%-*-*}" = "$1" ]; then
- echo ":: removing existing package '$existing'"
- rm -rf $existing
- fi
- done
-} # end db_remove_entry
-
-# PROGRAM START
-
-# check for help flags
-if [ "$1" = "-h" -o "$1" = "--help" ]; then
- usage
- exit 0
-fi
-
-# check for correct number of args
-if [ $# -lt 2 ]; then
- usage
- exit 1
-fi
-
-# main routine
-if [ $# -gt 1 ]; then
- gstmpdir=$(mktemp -d /tmp/gensync.XXXXXXXXXX) || (\
- echo "cannot create temp directory for database building"; \
- exit 1)
-
- success=0
- # parse arguements
- for arg in $@; do
- if [ -z "$REPO_DB_FILE" ]; then
- REPO_DB_FILE="$(readlink -f $arg)"
- if ! test_repo_db_file; then
- echo "error: repository file '$REPO_DB_FILE' is not a proper pacman db"
- exit 1
- elif [ -f "$REPO_DB_FILE" ]; then
- echo ":: extracting database to a temporary location"
- tar xf "$REPO_DB_FILE" -C "$gstmpdir"
- fi
- else
- echo ":: searching for package '$arg'"
-
- this_dir="$(pwd)"
- if db_remove_entry "$arg"; then
- success=1
- else
- echo "error: package matching '$arg' not found"
- fi
- cd $this_dir
- fi
- done
-
- # if all operations were a success, rezip database
- if [ "$success" = "1" ]; then
- echo ":: creating updated database file ${REPO_DB_FILE}"
- cd $gstmpdir
- if [ -n "$(ls)" ]; then
- [ -f "${REPO_DB_FILE}.old" ] && rm "${REPO_DB_FILE}.old"
- [ -f "$REPO_DB_FILE" ] && mv "$REPO_DB_FILE" "${REPO_DB_FILE}.old"
- case "$DB_COMPRESSION" in
- gz) tar c * | gzip -9 >$REPO_DB_FILE ;;
- bz2) tar c * | bzip2 -9 >$REPO_DB_FILE ;;
- *) echo "warning: no compression set"
- tar c * >$REPO_DB_FILE;;
- esac
- fi
- else
- echo ":: no packages modified, nothing to do"
- fi
-fi
-
-# remove the temp directory used to unzip
-[ -d "$gstmpdir" ] && rm -rf $gstmpdir
-
-# vim: set ts=2 sw=2 noet:
diff --git a/scripts/repo-remove.sh.in b/scripts/repo-remove.sh.in
new file mode 100644
index 00000000..617f04cf
--- /dev/null
+++ b/scripts/repo-remove.sh.in
@@ -0,0 +1,184 @@
+#!/bin/bash
+#
+# repo-remove - remove a package entry from a given repo database file
+# @configure_input@
+#
+# Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+
+# gettext initialization
+export TEXTDOMAIN='pacman'
+export TEXTDOMAINDIR='@localedir@'
+
+myver='@PACKAGE_VERSION@'
+confdir='@sysconfdir@'
+
+FORCE=0
+REPO_DB_FILE=""
+
+msg() {
+ local mesg=$1; shift
+ printf "==> ${mesg}\n" "$@" >&1
+}
+
+msg2() {
+ local mesg=$1; shift
+ printf " -> ${mesg}\n" "$@" >&1
+}
+
+warning() {
+ local mesg=$1; shift
+ printf "==> $(gettext "WARNING:") ${mesg}\n" "$@" >&2
+}
+
+error() {
+ local mesg=$1; shift
+ printf "==> $(gettext "ERROR:") ${mesg}\n" "$@" >&2
+}
+
+# print usage instructions
+usage() {
+ printf "$(gettext "repo-remove %s\n\n")" $myver
+ printf "$(gettext "usage: %s <path-to-db> <packagename> ...\n\n")" "$0"
+ printf "$(gettext "\
+repo-remove will update a package database by removing the package name\n\
+specified on the command line from the given repo database. Multiple\n\
+packages to remove can be specified on the command line.\n\n")"
+ echo "$(gettext "Example: repo-remove /path/to/repo.db.tar.gz kernel26")"
+}
+
+version() {
+ printf "repo-remove (pacman) %s\n" "$myver"
+ printf "$(gettext "\
+Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n\n\
+This is free software; see the source for copying conditions.\n\
+There is NO WARRANTY, to the extent permitted by law.\n")"
+}
+
+# test if a file is a repository DB
+test_repo_db_file () {
+ if [ -f "$REPO_DB_FILE" ]; then
+ if bsdtar -tf "$REPO_DB_FILE" | grep -q "/desc"; then
+ return 0 # YES
+ fi
+ fi
+
+ return 1 # NO
+}
+
+# remove existing entries from the DB
+db_remove_entry() {
+ pushd "$gstmpdir" 2>&1 >/dev/null
+
+ # remove any other package in the DB with same name
+ local existing
+ for existing in *; do
+ if [ "${existing%-*-*}" = "$1" ]; then
+ msg2 "$(gettext "Removing existing package '%s'...")" "$existing"
+ rm -rf "$existing"
+ fi
+ done
+
+ popd 2>&1 >/dev/null
+} # end db_remove_entry
+
+# PROGRAM START
+
+# check for help flags
+if [ "$1" = "-h" -o "$1" = "--help" ]; then
+ usage
+ exit 0
+fi
+
+# check for version flags
+if [ "$1" = "-V" -o "$1" = "--version" ]; then
+ version
+ exit 0
+fi
+
+# check for correct number of args
+if [ $# -lt 2 ]; then
+ usage
+ exit 1
+fi
+
+# source system and user makepkg.conf
+if [ -r "$confdir/makepkg.conf" ]; then
+ source "$confdir/makepkg.conf"
+else
+ error "$(gettext "%s not found. Cannot continue.")" "$confdir/makepkg.conf"
+ exit 1 # $E_CONFIG_ERROR
+fi
+
+if [ -r ~/.makepkg.conf ]; then
+ source ~/.makepkg.conf
+fi
+
+# main routine
+gstmpdir=$(mktemp -d /tmp/repo-remove.XXXXXXXXXX) || (\
+ error "$(gettext "Cannot create temp directory for database building.")"; \
+ exit 1)
+
+success=0
+# parse arguements
+for arg in "$@"; do
+ if [ -z "$REPO_DB_FILE" ]; then
+ REPO_DB_FILE=$(readlink -f "$arg")
+ if ! test_repo_db_file; then
+ error "$(gettext "Repository file '%s' is not a proper pacman database.")\n" "$REPO_DB_FILE"
+ exit 1
+ elif [ -f "$REPO_DB_FILE" ]; then
+ msg "$(gettext "Extracting database to a temporary location...")"
+ bsdtar -xf "$REPO_DB_FILE" -C "$gstmpdir"
+ fi
+ else
+ msg "$(gettext "Searching for package '%s'...")" "$arg"
+
+ if db_remove_entry "$arg"; then
+ success=1
+ else
+ error "$(gettext "Package matching '%s' not found.")" "$arg"
+ fi
+ fi
+done
+
+# if all operations were a success, rezip database
+if [ $success -eq 1 ]; then
+ msg "$(gettext "Creating updated database file '%s'...")" "$REPO_DB_FILE"
+ pushd "$gstmpdir" 2>&1 >/dev/null
+
+ if [ -n "$(ls)" ]; then
+ [ -f "${REPO_DB_FILE}.old" ] && rm "${REPO_DB_FILE}.old"
+ [ -f "$REPO_DB_FILE" ] && mv "$REPO_DB_FILE" "${REPO_DB_FILE}.old"
+ case "$DB_COMPRESSION" in
+ gz) TAR_OPT="z" ;;
+ bz2) TAR_OPT="j" ;;
+ *) warning "$(gettext "No compression set.")" ;;
+ esac
+
+ bsdtar -c${TAR_OPT}f "$REPO_DB_FILE" *
+ fi
+
+ popd 2>&1 >/dev/null
+else
+ msg "$(gettext "No packages modified, nothing to do.")"
+fi
+
+# remove the temp directory used to unzip
+[ -d "$gstmpdir" ] && rm -rf $gstmpdir
+
+# vim: set ts=2 sw=2 noet:
diff --git a/scripts/updatesync b/scripts/updatesync
deleted file mode 100755
index a4a6847f..00000000
--- a/scripts/updatesync
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/bin/bash
-#
-# updatesync
-#
-# Copyright (c) 2004 by Jason Chu <jason@archlinux.org>
-# Derived from gensync (c) 2002-2006 Judd Vinet <jvinet@zeroflux.org>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-# USA.
-#
-
-myver='3.0.0'
-
-usage() {
- echo "updatesync $myver"
- echo "usage: $0 <action> <destfile> <option> [package_directory]"
- echo
- echo "updatesync will update a sync database by reading a PKGBUILD and"
- echo "modifying the destfile. updatesync updates the database in a temporary"
- echo "directory and then compresses it to <destfile>."
- echo
- echo "There are two types of actions:"
- echo
- echo "upd - Will update a package's entry or create it if it doesn't exist."
- echo " It takes the package's PKGBUILD as an option."
- echo "del - Will remove a package's entry from the db."
- echo " It takes the package's name as an option."
- echo
- echo "updatesync will calculate md5sums of packages in the same directory as"
- echo "<destfile>, unless an alternate [package_directory] is specified."
- echo
- echo "example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
- echo
- echo
- exit 0
-}
-
-BUILDSCRIPT="PKGBUILD"
-PKGEXT="pkg.tar.gz"
-
-source /etc/makepkg.conf
-
-error () {
- echo "==> ERROR: $*" >&2
-}
-
-die () {
- error $*
- exit 1
-}
-
-check_force () {
- local i
- for i in ${options[@]}; do
- local lc=$(echo $i | tr [:upper:] [:lower:])
- if [ "$lc" = "force" ]; then
- true
- fi
- done
- false
-}
-
-if [ $# -lt 3 ]; then
- usage
- exit 1
-fi
-
-if [ "$1" = "-h" -o "$1" = "--help" ]; then
- usage
- exit 0
-fi
-
-if [ "$1" != "upd" -a "$1" != "del" ]; then
- usage
- exit 1
-fi
-
-action=$1
-pkgdb=$2
-option=$3
-pkgdir="$(pwd)"
-if [ "$4" != "" ]; then
- pkgdir="$4"
-fi
-opt_force=""
-
-if [ ! -f "$option" ]; then
- die "$option not found"
-fi
-
-if [ "$action" = "upd" ]; then # INSERT / UPDATE
- unset pkgname pkgver pkgrel options
-
- source $option || die "failed to parse $option"
- pkgfile="$pkgdir/$pkgname-$pkgver-$pkgrel-$CARCH.$PKGEXT"
-
- if [ ! -f "$pkgfile" ]; then
- die "could not find $pkgname-$pkgver-$pkgrel-$CARCH.$PKGEXT - aborting"
- fi
-
- if check_force; then
- opt_force="--force"
- fi
-
- repo-add "$pkgdb" $opt_force "$pkgfile"
-else # DELETE
- fname="$(basename $option)"
- if [ "$fname" = "PKGBUILD" ]; then
- unset pkgname pkgver pkgrel options
- source $option
- else
- pkgname=$1
- fi
-
- repo-remove "$pkgdb" "$pkgname"
-fi
-
-exit 0
-# vim: set ts=2 sw=2 noet:
diff --git a/scripts/updatesync.sh.in b/scripts/updatesync.sh.in
new file mode 100644
index 00000000..57bd39cb
--- /dev/null
+++ b/scripts/updatesync.sh.in
@@ -0,0 +1,157 @@
+#!/bin/bash
+#
+# updatesync
+# @configure_input@
+#
+# Copyright (c) 2004 by Jason Chu <jason@archlinux.org>
+# Derived from gensync (c) 2002-2006 Judd Vinet <jvinet@zeroflux.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+# USA.
+#
+
+# gettext initialization
+export TEXTDOMAIN='pacman'
+export TEXTDOMAINDIR='@localedir@'
+
+myver='@PACKAGE_VERSION@'
+
+# functions
+
+usage() {
+ printf "updatesync (pacman) %s\n\n" "$myver"
+ printf "$(gettext "Usage: %s <action> <destfile> <option> [package_directory]")\n\n" "$0"
+ printf "$(gettext "\
+updatesync will update a sync database by reading a PKGBUILD and\n\
+modifying the destfile. updatesync updates the database in a temporary\n\
+directory and then compresses it to <destfile>.\n\n")"
+ printf "$(gettext "There are two types of actions:\n\n")"
+ printf "$(gettext "upd - Will update a package's entry or create it if it doesn't exist.\n It takes the package's PKGBUILD as an option.\n")"
+ printf "$(gettext "del - Will remove a package's entry from the db. It takes the package's\n name as an option.\n")"
+ echo
+ printf "$(gettext "\
+updatesync will calculate md5sums of packages in the same directory as\n\
+<destfile>, unless an alternate [package_directory] is specified.\n\n")"
+ echo "$(gettext "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD")"
+ exit 0
+}
+
+version() {
+ printf "updatesync (pacman) %s\n" "$myver"
+ printf "$(gettext "\
+Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\n\n\
+This is free software; see the source for copying conditions.\n\
+There is NO WARRANTY, to the extent permitted by law.\n")"
+}
+
+error () {
+ local mesg=$1; shift
+ printf "==> ERROR: ${mesg}\n" "$@" >&2
+}
+
+die () {
+ error $*
+ exit 1
+}
+
+check_force () {
+ local i
+ for i in ${options[@]}; do
+ local lc=$(echo $i | tr [:upper:] [:lower:])
+ if [ "$lc" = "force" ]; then
+ true
+ fi
+ done
+ false
+}
+
+# PROGRAM START
+
+if [ "$1" = "-h" -o "$1" = "--help" ]; then
+ usage
+ exit 0
+fi
+
+if [ "$1" = "-V" -o "$1" = "--version" ]; then
+ version
+ exit 0
+fi
+
+if [ $# -lt 3 ]; then
+ usage
+ exit 1
+fi
+
+# source system and user makepkg.conf
+if [ -r @sysconfdir@/makepkg.conf ]; then
+ source @sysconfdir@/makepkg.conf
+else
+ die "$(gettext "%s not found. Can not continue.")" "@sysconfdir@/makepkg.conf"
+fi
+
+if [ -r ~/.makepkg.conf ]; then
+ source ~/.makepkg.conf
+fi
+
+if [ "$1" != "upd" -a "$1" != "del" ]; then
+ usage
+ exit 1
+fi
+
+action=$1
+pkgdb=$2
+option=$3
+pkgdir="$(pwd)"
+if [ "$4" != "" ]; then
+ pkgdir="$4"
+fi
+opt_force=""
+
+if [ ! -f "$option" ]; then
+ die "$(gettext "%s not found")" $option
+fi
+
+if [ "$action" = "upd" ]; then # INSERT / UPDATE
+ unset pkgname pkgver pkgrel options
+
+ source $option || die "$(gettext "failed to parse %s")" $option
+ if [ "$arch" = 'any' ]; then
+ CARCH='any'
+ fi
+ pkgfile="$pkgdir/$pkgname-$pkgver-$pkgrel-$CARCH.$PKGEXT"
+
+ if [ ! -f "$pkgfile" ]; then
+ die "$(gettext "could not find %s-%s-%s-%s.%s - aborting")" $pkgname $pkgver $pkgrel $CARCH $PKGEXT
+ fi
+
+ if check_force; then
+ opt_force="--force"
+ fi
+
+ repo-add "$pkgdb" $opt_force "$pkgfile"
+else # DELETE
+ fname="$(basename $option)"
+ if [ "$fname" = "PKGBUILD" ]; then
+ unset pkgname pkgver pkgrel options
+ source $option
+ else
+ pkgname=$1
+ fi
+
+ repo-remove "$pkgdb" "$pkgname"
+fi
+
+exit 0
+# vim: set ts=2 sw=2 noet:
diff --git a/src/pacman/.gitignore b/src/pacman/.gitignore
index f8247c5e..3b2600fd 100644
--- a/src/pacman/.gitignore
+++ b/src/pacman/.gitignore
@@ -1,6 +1,4 @@
.deps
.libs
-Makefile
-Makefile.in
pacman
pacman.static
diff --git a/src/pacman/Makefile.am b/src/pacman/Makefile.am
index 82ec4d6b..0395432e 100644
--- a/src/pacman/Makefile.am
+++ b/src/pacman/Makefile.am
@@ -1,36 +1,42 @@
-SUBDIRS = po
+# paths set at make time
+conffile = ${sysconfdir}/pacman.conf
+dbpath = ${localstatedir}/lib/pacman/
+cachedir = ${localstatedir}/cache/pacman/pkg/
+logfile = ${localstatedir}/log/pacman.log
bin_PROGRAMS = pacman
-if LINKSTATIC
+if INCLUDE_PACMAN_STATIC
bin_PROGRAMS += pacman.static
endif
-localedir = $(datadir)/locale
-DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
+DEFS = -DLOCALEDIR=\"@localedir@\" \
+ -DCONFFILE=\"$(conffile)\" \
+ -DROOTDIR=\"$(ROOTDIR)\" \
+ -DDBPATH=\"$(dbpath)\" \
+ -DCACHEDIR=\"$(cachedir)\" \
+ -DLOGFILE=\"$(logfile)\" \
+ @DEFS@
INCLUDES = -I$(top_srcdir)/lib/libalpm
-AM_CFLAGS = -D_GNU_SOURCE
+AM_CFLAGS = -pedantic -D_GNU_SOURCE
pacman_SOURCES = \
- add.h add.c \
+ add.c \
conf.h conf.c \
- deptest.h deptest.c \
- downloadprog.h downloadprog.c \
- log.h log.c \
+ deptest.c \
package.h package.c \
- pacman.c \
- query.h query.c \
- remove.h remove.c \
- sync.h sync.c \
- trans.h trans.c \
- upgrade.h upgrade.c \
+ pacman.h pacman.c \
+ query.c \
+ remove.c \
+ sync.c \
+ callback.h callback.c \
util.h util.c
-pacman_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la \
- -ldownload
+pacman_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la
pacman_static_SOURCES = $(pacman_SOURCES)
pacman_static_LDFLAGS = $(LDFLAGS) -all-static
-pacman_static_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la \
- -ldownload
+pacman_static_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la
+
+# vim:set ts=2 sw=2 noet:
diff --git a/src/pacman/add.c b/src/pacman/add.c
index 2adf8681..e04707f2 100644
--- a/src/pacman/add.c
+++ b/src/pacman/add.c
@@ -1,8 +1,8 @@
/*
* add.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
+ * Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -24,33 +24,65 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <libintl.h>
#include <alpm.h>
#include <alpm_list.h>
/* pacman */
-#include "add.h"
-#include "log.h"
-#include "downloadprog.h"
-#include "trans.h"
+#include "pacman.h"
+#include "callback.h"
#include "conf.h"
#include "util.h"
-extern config_t *config;
+/* Free the current transaction and print an error if unsuccessful */
+static int add_cleanup(void)
+{
+ int ret = alpm_trans_release();
+ if(ret != 0) {
+ pm_printf(PM_LOG_ERROR, _("failed to release transaction (%s)\n"),
+ alpm_strerrorlast());
+ ret = 1;
+ }
+ return(ret);
+}
+
+/**
+ * @brief Upgrade a specified list of packages.
+ *
+ * @param targets a list of packages (as strings) to upgrade
+ *
+ * @return 0 on success, 1 on failure
+ */
+int pacman_upgrade(alpm_list_t *targets)
+{
+ /* this is basically just a remove-then-add process. pacman_add() will */
+ /* handle it */
+ config->upgrade = 1;
+ return(pacman_add(targets));
+}
+
+/**
+ * @brief Add a specified list of packages which cannot already be installed.
+ *
+ * @param targets a list of packages (as strings) to add
+ *
+ * @return 0 on success, 1 on failure
+ */
int pacman_add(alpm_list_t *targets)
{
- alpm_list_t *i = targets, *data = NULL;
+ alpm_list_t *i, *data = NULL;
+ pmtranstype_t transtype = PM_TRANS_TYPE_ADD;
int retval = 0;
if(targets == NULL) {
- return(0);
+ pm_printf(PM_LOG_ERROR, _("no targets specified (use -h for help)\n"));
+ return(1);
}
/* Check for URL targets and process them
*/
- while(i) {
+ for(i = targets; i; i = alpm_list_next(i)) {
if(strstr(i->data, "://")) {
char *str = alpm_fetch_pkgurl(i->data);
if(str == NULL) {
@@ -60,126 +92,103 @@ int pacman_add(alpm_list_t *targets)
i->data = str;
}
}
- i = i->next;
}
- /* Step 1: create a new transaction
- */
- if(alpm_trans_init((config->upgrade == 0) ? PM_TRANS_TYPE_ADD : PM_TRANS_TYPE_UPGRADE,
- config->flags, cb_trans_evt, cb_trans_conv, cb_trans_progress) == -1) {
- ERR(NL, "%s\n", alpm_strerror(pm_errno));
+ /* Step 1: create a new transaction */
+ if(config->upgrade == 1) {
+ /* if upgrade flag was set, change this to an upgrade transaction */
+ transtype = PM_TRANS_TYPE_UPGRADE;
+ }
+
+ if(alpm_trans_init(transtype, config->flags, cb_trans_evt,
+ cb_trans_conv, cb_trans_progress) == -1) {
+ /* TODO: error messages should be in the front end, not the back */
+ fprintf(stderr, _("error: %s\n"), alpm_strerrorlast());
if(pm_errno == PM_ERR_HANDLE_LOCK) {
- MSG(NL, _(" if you're sure a package manager is not already running,\n"
- " you can remove %s%s\n"), alpm_option_get_root(), PM_LOCK);
+ /* TODO this and the 2 other places should probably be on stderr */
+ printf(_(" if you're sure a package manager is not already\n"
+ " running, you can remove %s.\n"), alpm_option_get_lockfile());
}
return(1);
}
- /* and add targets to it */
- MSG(NL, _("loading package data... "));
- for(i = targets; i; i = i->next) {
- if(alpm_trans_addtarget(i->data) == -1) {
- MSG(NL, "\n");
- ERR(NL, _("failed to add target '%s' (%s)"), (char *)i->data, alpm_strerror(pm_errno));
- retval = 1;
- goto cleanup;
+ /* add targets to the created transaction */
+ printf(_("loading package data... "));
+ for(i = targets; i; i = alpm_list_next(i)) {
+ char *targ = alpm_list_getdata(i);
+ if(alpm_trans_addtarget(targ) == -1) {
+ fprintf(stderr, _("error: failed to add target '%s' (%s)"), targ,
+ alpm_strerrorlast());
+ add_cleanup();
+ return(1);
}
}
- MSG(CL, _("done.\n"));
+ printf(_("done.\n"));
- /* Step 2: "compute" the transaction based on targets and flags
- */
+ /* Step 2: "compute" the transaction based on targets and flags */
+ /* TODO: No, compute nothing. This is stupid. */
if(alpm_trans_prepare(&data) == -1) {
- long long *pkgsize, *freespace;
-
- ERR(NL, _("failed to prepare transaction (%s)\n"), alpm_strerror(pm_errno));
+ fprintf(stderr, _("error: failed to prepare transaction (%s)\n"),
+ alpm_strerrorlast());
switch(pm_errno) {
case PM_ERR_UNSATISFIED_DEPS:
for(i = data; i; i = alpm_list_next(i)) {
pmdepmissing_t *miss = alpm_list_getdata(i);
-
+ pmdepend_t *dep = alpm_miss_get_dep(miss);
+ char *depstring = alpm_dep_get_string(dep);
+
/* TODO indicate if the error was a virtual package or not:
* :: %s: requires %s, provided by %s
*/
- MSG(NL, _(":: %s: requires %s"), alpm_dep_get_target(miss),
- alpm_dep_get_name(miss));
- switch(alpm_dep_get_mod(miss)) {
- case PM_DEP_MOD_ANY:
- break;
- case PM_DEP_MOD_EQ:
- MSG(CL, "=%s", alpm_dep_get_version(miss));
- break;
- case PM_DEP_MOD_GE:
- MSG(CL, ">=%s", alpm_dep_get_version(miss));
- break;
- case PM_DEP_MOD_LE:
- MSG(CL, "<=%s", alpm_dep_get_version(miss));
- break;
- }
- MSG(CL, "\n");
+ printf(_(":: %s: requires %s\n"), alpm_miss_get_target(miss),
+ depstring);
+ free(depstring);
}
- break;
+ break;
case PM_ERR_CONFLICTING_DEPS:
for(i = data; i; i = alpm_list_next(i)) {
- pmdepmissing_t *miss = alpm_list_getdata(i);
- MSG(NL, _(":: %s: conflicts with %s"),
- alpm_dep_get_target(miss), alpm_dep_get_name(miss));
+ pmconflict_t *conflict = alpm_list_getdata(i);
+ printf(_(":: %s: conflicts with %s"),
+ alpm_conflict_get_package1(conflict), alpm_conflict_get_package2(conflict));
}
- break;
+ break;
case PM_ERR_FILE_CONFLICTS:
for(i = data; i; i = alpm_list_next(i)) {
- pmconflict_t *conflict = alpm_list_getdata(i);
- switch(alpm_conflict_get_type(conflict)) {
- case PM_CONFLICT_TYPE_TARGET:
- MSG(NL, _("%s exists in both '%s' and '%s'\n"),
- alpm_conflict_get_file(conflict),
- alpm_conflict_get_target(conflict),
- alpm_conflict_get_ctarget(conflict));
+ pmfileconflict_t *conflict = alpm_list_getdata(i);
+ switch(alpm_fileconflict_get_type(conflict)) {
+ case PM_FILECONFLICT_TARGET:
+ printf(_("%s exists in both '%s' and '%s'\n"),
+ alpm_fileconflict_get_file(conflict),
+ alpm_fileconflict_get_target(conflict),
+ alpm_fileconflict_get_ctarget(conflict));
break;
- case PM_CONFLICT_TYPE_FILE:
- MSG(NL, _("%s: %s exists in filesystem\n"),
- alpm_conflict_get_target(conflict),
- alpm_conflict_get_file(conflict));
+ case PM_FILECONFLICT_FILESYSTEM:
+ printf(_("%s: %s exists in filesystem\n"),
+ alpm_fileconflict_get_target(conflict),
+ alpm_fileconflict_get_file(conflict));
break;
}
}
- MSG(NL, _("\nerrors occurred, no packages were upgraded.\n"));
- break;
- /* TODO This is gross... we should not return these values in the same list we
- * would get conflicts and such with... it's just silly
- */
- case PM_ERR_DISK_FULL:
- i = data;
- pkgsize = alpm_list_getdata(i);
- i = alpm_list_next(i);
- freespace = alpm_list_getdata(i);
- MSG(NL, _(":: %.1f MB required, have %.1f MB"),
- (double)(*pkgsize / (1024.0*1024.0)), (double)(*freespace / (1024.0*1024.0)));
- break;
+ printf(_("\nerrors occurred, no packages were upgraded.\n"));
+ break;
default:
- break;
+ break;
}
- retval=1;
- goto cleanup;
+ add_cleanup();
+ alpm_list_free_inner(data, free);
+ alpm_list_free(data);
+ return(1);
}
+ alpm_list_free(data);
- /* Step 3: actually perform the installation
- */
+ /* Step 3: perform the installation */
if(alpm_trans_commit(NULL) == -1) {
- ERR(NL, _("failed to commit transaction (%s)\n"), alpm_strerror(pm_errno));
- retval=1;
- goto cleanup;
- }
-
-cleanup:
- if(data) {
- alpm_list_free(data);
- }
- if(alpm_trans_release() == -1) {
- ERR(NL, _("failed to release transaction (%s)\n"), alpm_strerror(pm_errno));
- retval=1;
+ fprintf(stderr, _("error: failed to commit transaction (%s)\n"), alpm_strerrorlast());
+ add_cleanup();
+ return(1);
}
+ retval = add_cleanup();
return(retval);
}
diff --git a/src/pacman/add.h b/src/pacman/add.h
deleted file mode 100644
index 61a956c5..00000000
--- a/src/pacman/add.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * add.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-#ifndef _PM_ADD_H
-#define _PM_ADD_H
-
-#include <alpm_list.h>
-
-int pacman_add(alpm_list_t *targets);
-
-#endif /* _PM_ADD_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/callback.c b/src/pacman/callback.c
new file mode 100644
index 00000000..6129d8d7
--- /dev/null
+++ b/src/pacman/callback.c
@@ -0,0 +1,552 @@
+/*
+ * callback.c
+ *
+ * Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+#include <unistd.h>
+#include <dirent.h>
+#include <wchar.h>
+
+#include <alpm.h>
+
+/* pacman */
+#include "callback.h"
+#include "util.h"
+#include "conf.h"
+
+/* TODO this should not have to be defined twice- trans.c & log.c */
+#define LOG_STR_LEN 256
+#define FILENAME_TRIM_LEN 23
+
+/* download progress bar */
+static float rate_last;
+static int xfered_last;
+static struct timeval initial_time;
+
+/* transaction progress bar ? */
+static int prevpercent=0; /* for less progressbar output */
+
+/* Silly little helper function, determines if the caller needs a visual update
+ * since the last time this function was called.
+ * This is made for the two progress bar functions, to prevent flicker
+ *
+ * first_call indicates if this is the first time it is called, for
+ * initialization purposes */
+static float get_update_timediff(int first_call)
+{
+ float retval = 0.0;
+ static struct timeval last_time = {0, 0};
+
+ /* on first call, simply set the last time and return */
+ if(first_call) {
+ gettimeofday(&last_time, NULL);
+ } else {
+ struct timeval this_time;
+ float diff_sec, diff_usec;
+
+ gettimeofday(&this_time, NULL);
+ diff_sec = this_time.tv_sec - last_time.tv_sec;
+ diff_usec = this_time.tv_usec - last_time.tv_usec;
+
+ retval = diff_sec + (diff_usec / 1000000.0);
+
+ /* return 0 and do not update last_time if interval was too short */
+ if(retval < UPDATE_SPEED_SEC) {
+ retval = 0.0;
+ } else {
+ last_time = this_time;
+ /* printf("\nupdate retval: %f\n", retval); DEBUG*/
+ }
+ }
+
+ return(retval);
+}
+
+/* refactored from cb_trans_progress */
+static void fill_progress(const int graph_percent, const int display_percent,
+ const int proglen)
+{
+ const unsigned int hashlen = proglen - 8;
+ const unsigned int hash = graph_percent * hashlen / 100;
+ static unsigned int lasthash = 0, mouth = 0;
+ unsigned int i;
+
+ /* printf("\ndebug: proglen: %i\n", proglen); DEBUG*/
+
+ if(graph_percent == 0) {
+ lasthash = 0;
+ mouth = 0;
+ }
+
+ /* magic numbers, how I loathe thee */
+ if(proglen > 8) {
+ printf(" [");
+ for(i = hashlen; i > 1; --i) {
+ /* if special progress bar enabled */
+ if(config->chomp) {
+ if(i > hashlen - hash) {
+ printf("-");
+ } else if(i == hashlen - hash) {
+ if(lasthash == hash) {
+ if(mouth) {
+ printf("\033[1;33mC\033[m");
+ } else {
+ printf("\033[1;33mc\033[m");
+ }
+ } else {
+ lasthash = hash;
+ mouth = mouth == 1 ? 0 : 1;
+ if(mouth) {
+ printf("\033[1;33mC\033[m");
+ } else {
+ printf("\033[1;33mc\033[m");
+ }
+ }
+ } else if(i%3 == 0) {
+ printf("\033[0;37mo\033[m");
+ } else {
+ printf("\033[0;37m \033[m");
+ }
+ } /* else regular progress bar */
+ else if(i > hashlen - hash) {
+ printf("#");
+ } else {
+ printf("-");
+ }
+ }
+ printf("]");
+ }
+ /* print percent after progress bar */
+ if(proglen > 5) {
+ printf(" %3d%%", display_percent);
+ }
+
+ if(graph_percent == 100) {
+ printf("\n");
+ } else {
+ printf("\r");
+ }
+ fflush(stdout);
+}
+
+
+
+/* callback to handle messages/notifications from libalpm transactions */
+void cb_trans_evt(pmtransevt_t event, void *data1, void *data2)
+{
+ char str[LOG_STR_LEN] = "";
+
+ switch(event) {
+ case PM_TRANS_EVT_CHECKDEPS_START:
+ printf(_("checking dependencies...\n"));
+ break;
+ case PM_TRANS_EVT_FILECONFLICTS_START:
+ if(config->noprogressbar) {
+ printf(_("checking for file conflicts...\n"));
+ }
+ break;
+ case PM_TRANS_EVT_RESOLVEDEPS_START:
+ printf(_("resolving dependencies...\n"));
+ break;
+ case PM_TRANS_EVT_INTERCONFLICTS_START:
+ printf(_("looking for inter-conflicts...\n"));
+ break;
+ case PM_TRANS_EVT_ADD_START:
+ if(config->noprogressbar) {
+ printf(_("installing %s...\n"), alpm_pkg_get_name(data1));
+ }
+ break;
+ case PM_TRANS_EVT_ADD_DONE:
+ snprintf(str, LOG_STR_LEN, "installed %s (%s)\n",
+ alpm_pkg_get_name(data1),
+ alpm_pkg_get_version(data1));
+ alpm_logaction(str);
+ break;
+ case PM_TRANS_EVT_REMOVE_START:
+ if(config->noprogressbar) {
+ printf(_("removing %s...\n"), alpm_pkg_get_name(data1));
+ }
+ break;
+ case PM_TRANS_EVT_REMOVE_DONE:
+ snprintf(str, LOG_STR_LEN, "removed %s (%s)\n",
+ alpm_pkg_get_name(data1),
+ alpm_pkg_get_version(data1));
+ alpm_logaction(str);
+ break;
+ case PM_TRANS_EVT_UPGRADE_START:
+ if(config->noprogressbar) {
+ printf(_("upgrading %s...\n"), alpm_pkg_get_name(data1));
+ }
+ break;
+ case PM_TRANS_EVT_UPGRADE_DONE:
+ snprintf(str, LOG_STR_LEN, "upgraded %s (%s -> %s)\n",
+ (char *)alpm_pkg_get_name(data1),
+ (char *)alpm_pkg_get_version(data2),
+ (char *)alpm_pkg_get_version(data1));
+ alpm_logaction(str);
+ break;
+ case PM_TRANS_EVT_INTEGRITY_START:
+ printf(_("checking package integrity...\n"));
+ break;
+ case PM_TRANS_EVT_DELTA_INTEGRITY_START:
+ printf(_("checking delta integrity...\n"));
+ break;
+ case PM_TRANS_EVT_DELTA_PATCHES_START:
+ printf(_("applying deltas...\n"));
+ break;
+ case PM_TRANS_EVT_DELTA_PATCH_START:
+ printf(_("generating %s with %s... "), (char *)data1, (char *)data2);
+ break;
+ case PM_TRANS_EVT_DELTA_PATCH_DONE:
+ printf(_("success!\n"));
+ break;
+ case PM_TRANS_EVT_DELTA_PATCH_FAILED:
+ printf(_("failed.\n"));
+ break;
+ case PM_TRANS_EVT_SCRIPTLET_INFO:
+ printf("%s", (char*)data1);
+ break;
+ case PM_TRANS_EVT_PRINTURI:
+ printf("%s/%s\n", (char*)data1, (char*)data2);
+ break;
+ case PM_TRANS_EVT_RETRIEVE_START:
+ printf(_(":: Retrieving packages from %s...\n"), (char*)data1);
+ break;
+ /* all the simple done events, with fallthrough for each */
+ case PM_TRANS_EVT_FILECONFLICTS_DONE:
+ case PM_TRANS_EVT_EXTRACT_DONE:
+ case PM_TRANS_EVT_CHECKDEPS_DONE:
+ case PM_TRANS_EVT_RESOLVEDEPS_DONE:
+ case PM_TRANS_EVT_INTERCONFLICTS_DONE:
+ case PM_TRANS_EVT_INTEGRITY_DONE:
+ case PM_TRANS_EVT_DELTA_INTEGRITY_DONE:
+ case PM_TRANS_EVT_DELTA_PATCHES_DONE:
+ /* nothing */
+ break;
+ }
+ fflush(stdout);
+}
+
+/* callback to handle questions from libalpm transactions (yes/no) */
+/* TODO this is one of the worst ever functions written. void *data ? wtf */
+void cb_trans_conv(pmtransconv_t event, void *data1, void *data2,
+ void *data3, int *response)
+{
+ char str[LOG_STR_LEN] = "";
+
+ switch(event) {
+ case PM_TRANS_CONV_INSTALL_IGNOREPKG:
+ if(data2) {
+ /* TODO we take this route based on data2 being not null? WTF */
+ snprintf(str, LOG_STR_LEN, _(":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "),
+ alpm_pkg_get_name(data1),
+ alpm_pkg_get_name(data2));
+ *response = yesno(str);
+ } else {
+ snprintf(str, LOG_STR_LEN, _(":: %s is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] "),
+ alpm_pkg_get_name(data1));
+ *response = yesno(str);
+ }
+ break;
+ case PM_TRANS_CONV_REMOVE_HOLDPKG:
+ snprintf(str, LOG_STR_LEN, _(":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "),
+ alpm_pkg_get_name(data1));
+ *response = yesno(str);
+ break;
+ case PM_TRANS_CONV_REPLACE_PKG:
+ snprintf(str, LOG_STR_LEN, _(":: Replace %s with %s/%s? [Y/n] "),
+ alpm_pkg_get_name(data1),
+ (char *)data3,
+ alpm_pkg_get_name(data2));
+ *response = yesno(str);
+ break;
+ case PM_TRANS_CONV_CONFLICT_PKG:
+ snprintf(str, LOG_STR_LEN, _(":: %s conflicts with %s. Remove %s? [Y/n] "),
+ (char *)data1,
+ (char *)data2,
+ (char *)data2);
+ *response = yesno(str);
+ break;
+ case PM_TRANS_CONV_LOCAL_NEWER:
+ if(!config->op_s_downloadonly) {
+ snprintf(str, LOG_STR_LEN, _(":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "),
+ alpm_pkg_get_name(data1),
+ alpm_pkg_get_version(data1));
+ *response = yesno(str);
+ } else {
+ *response = 1;
+ }
+ break;
+ case PM_TRANS_CONV_CORRUPTED_PKG:
+ if(!config->noconfirm) {
+ snprintf(str, LOG_STR_LEN, _(":: File %s is corrupted. Do you want to delete it? [Y/n] "),
+ (char *)data1);
+ *response = yesno(str);
+ } else {
+ *response = 1;
+ }
+ break;
+ }
+}
+
+/* callback to handle display of transaction progress */
+void cb_trans_progress(pmtransprog_t event, const char *pkgname, int percent,
+ int howmany, int remain)
+{
+ float timediff;
+
+ /* size of line to allocate for text printing (e.g. not progressbar) */
+ const int infolen = 50;
+ int tmp, digits, oprlen, textlen, pkglen;
+ char *opr = NULL;
+ wchar_t *wcopr = NULL;
+
+ if(config->noprogressbar) {
+ return;
+ }
+
+ if(percent == 0) {
+ timediff = get_update_timediff(1);
+ } else {
+ timediff = get_update_timediff(0);
+ }
+
+ if(percent > 0 && percent < 100 && !timediff) {
+ /* only update the progress bar when
+ * a) we first start
+ * b) we end the progress
+ * c) it has been long enough since the last call
+ */
+ return;
+ }
+
+ /* if no pkgname, percent is too high or unchanged, then return */
+ if(!pkgname || percent == prevpercent) {
+ return;
+ }
+
+ prevpercent=percent;
+ /* set text of message to display */
+ switch (event) {
+ case PM_TRANS_PROGRESS_ADD_START:
+ opr = _("installing");
+ break;
+ case PM_TRANS_PROGRESS_UPGRADE_START:
+ opr = _("upgrading");
+ break;
+ case PM_TRANS_PROGRESS_REMOVE_START:
+ opr = _("removing");
+ break;
+ case PM_TRANS_PROGRESS_CONFLICTS_START:
+ opr = _("checking for file conflicts");
+ break;
+ }
+ /* convert above strings to wide chars */
+ oprlen = strlen(opr);
+ wcopr = calloc(oprlen, sizeof(wchar_t));
+ if(!wcopr) {
+ fprintf(stderr, "malloc failure: could not allocate %zd bytes\n",
+ strlen(opr) * sizeof(wchar_t));
+ return;
+ }
+ oprlen = mbstowcs(wcopr, opr, oprlen);
+
+ /* find # of digits in package counts to scale output */
+ digits = 1;
+ tmp = howmany;
+ while((tmp /= 10)) {
+ ++digits;
+ }
+
+ /* determine room left for non-digits text [not ( 1/12) part] */
+ textlen = infolen - 3 - (2 * digits);
+ /* room left for package name */
+ pkglen = textlen - oprlen - 1;
+
+ switch (event) {
+ case PM_TRANS_PROGRESS_ADD_START:
+ case PM_TRANS_PROGRESS_UPGRADE_START:
+ case PM_TRANS_PROGRESS_REMOVE_START:
+ /* old way of doing it, but ISO C does not recognize it
+ printf("(%2$*1$d/%3$*1$d) %4$s %6$-*5$.*5$s", digits, remain, howmany,
+ opr, pkglen, pkgname);*/
+ printf("(%*d/%*d) %s %-*.*s", digits, remain, digits, howmany,
+ opr, pkglen, pkglen, pkgname);
+ break;
+ case PM_TRANS_PROGRESS_CONFLICTS_START:
+ /* old way of doing it, but ISO C does not recognize it
+ printf("(%2$*1$d/%3$*1$d) %5$-*4$s", digits, remain, howmany,
+ textlen, opr);*/
+ printf("(%*d/%*d) %-*s", digits, remain, digits, howmany,
+ textlen, opr);
+ break;
+ }
+
+ free(wcopr);
+
+ /* call refactored fill progress function */
+ fill_progress(percent, percent, getcols() - infolen);
+}
+
+/* callback to handle display of download progress */
+void cb_dl_progress(const char *filename, int file_xfered, int file_total,
+ int list_xfered, int list_total)
+{
+ const int infolen = 50;
+ char *fname, *p;
+
+ float rate = 0.0, timediff = 0.0, f_xfered = 0.0;
+ unsigned int eta_h = 0, eta_m = 0, eta_s = 0;
+ int graph_percent = 0, display_percent = 0;
+ char rate_size = 'K', xfered_size = 'K';
+ int xfered = 0, total = 0;
+
+ /* Need this variable when TotalDownload is set to know if we should
+ * reset xfered_last and rate_last. */
+ static int has_init = 0;
+
+ if(config->noprogressbar) {
+ return;
+ }
+
+ /* Choose how to display the amount downloaded, rate, ETA, and
+ * percentage depending on the TotalDownload option. */
+ if (config->totaldownload && list_total > 0) {
+ xfered = list_xfered;
+ total = list_total;
+ } else {
+ xfered = file_xfered;
+ total = file_total;
+ }
+
+ /* this is basically a switch on file_xferred: 0, file_total, and
+ * anything else */
+ if(file_xfered == 0) {
+ /* set default starting values, but only once for TotalDownload */
+ if (!(config->totaldownload && list_total > 0) ||
+ (config->totaldownload && list_total > 0 && !has_init)) {
+ gettimeofday(&initial_time, NULL);
+ timediff = get_update_timediff(1);
+ xfered_last = 0;
+ rate_last = 0.0;
+ has_init = 1;
+ }
+ rate = 0.0;
+ eta_s = 0;
+ } else if(file_xfered == file_total) {
+ /* compute final values */
+ struct timeval current_time;
+ float diff_sec, diff_usec;
+
+ gettimeofday(&current_time, NULL);
+ diff_sec = current_time.tv_sec - initial_time.tv_sec;
+ diff_usec = current_time.tv_usec - initial_time.tv_usec;
+ timediff = diff_sec + (diff_usec / 1000000.0);
+ rate = xfered / (timediff * 1024.0);
+
+ /* round elapsed time to the nearest second */
+ eta_s = (int)(timediff + 0.5);
+ } else {
+ /* compute current average values */
+ timediff = get_update_timediff(0);
+
+ if(timediff < UPDATE_SPEED_SEC) {
+ /* return if the calling interval was too short */
+ return;
+ }
+ rate = (xfered - xfered_last) / (timediff * 1024.0);
+ /* average rate to reduce jumpiness */
+ rate = (rate + 2*rate_last) / 3;
+ eta_s = (total - xfered) / (rate * 1024.0);
+ rate_last = rate;
+ xfered_last = xfered;
+ }
+
+ /* fix up time for display */
+ eta_h = eta_s / 3600;
+ eta_s -= eta_h * 3600;
+ eta_m = eta_s / 60;
+ eta_s -= eta_m * 60;
+
+ fname = strdup(filename);
+ /* strip package or DB extension for cleaner look */
+ if((p = strstr(fname, PKGEXT)) || (p = strstr(fname, DBEXT))) {
+ *p = '\0';
+ }
+ if(strlen(fname) > FILENAME_TRIM_LEN) {
+ strcpy(fname + FILENAME_TRIM_LEN -3,"...");
+ }
+
+ /* Awesome formatting for progress bar. We need a mess of Kb->Mb->Gb stuff
+ * here. We'll use limit of 2048 for each until we get some empirical */
+ /* rate_size = 'K'; was set above */
+ if(rate > 2048.0) {
+ rate /= 1024.0;
+ rate_size = 'M';
+ if(rate > 2048.0) {
+ rate /= 1024.0;
+ rate_size = 'G';
+ /* we should not go higher than this for a few years (9999.9 Gb/s?)*/
+ }
+ }
+
+ f_xfered = xfered / 1024.0; /* convert to K by default */
+ /* xfered_size = 'K'; was set above */
+ if(f_xfered > 2048.0) {
+ f_xfered /= 1024.0;
+ xfered_size = 'M';
+ if(f_xfered > 2048.0) {
+ f_xfered /= 1024.0;
+ xfered_size = 'G';
+ /* I should seriously hope that archlinux packages never break
+ * the 9999.9GB mark... we'd have more serious problems than the progress
+ * bar in pacman */
+ }
+ }
+
+ printf(" %-*s %6.1f%c %#6.1f%c/s %02u:%02u:%02u", FILENAME_TRIM_LEN, fname,
+ f_xfered, xfered_size, rate, rate_size, eta_h, eta_m, eta_s);
+
+ free(fname);
+
+ /* The progress bar is based on the file percent regardless of the
+ * TotalDownload option. */
+ graph_percent = (int)((float)file_xfered) / ((float)file_total) * 100;
+ display_percent = (int)((float)xfered) / ((float)total) * 100;
+ fill_progress(graph_percent, display_percent, getcols() - infolen);
+ return;
+}
+
+/* Callback to handle notifications from the library */
+void cb_log(pmloglevel_t level, char *fmt, va_list args)
+{
+ if(!strlen(fmt)) {
+ return;
+ }
+
+ pm_vfprintf(stdout, level, fmt, args);
+}
+
+/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/trans.h b/src/pacman/callback.h
index 0c0f9e01..59d8a45b 100644
--- a/src/pacman/trans.h
+++ b/src/pacman/callback.h
@@ -1,8 +1,8 @@
/*
- * trans.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ * callback.h
+ *
+ * Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,25 +15,32 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
-#ifndef _PM_TRANS_H
-#define _PM_TRANS_H
+#ifndef _PM_CALLBACK_H
+#define _PM_CALLBACK_H
#include <alpm.h>
-/* callback to handle messages/notifications from pacman transactions */
+/* callback to handle messages/notifications from libalpm transactions */
void cb_trans_evt(pmtransevt_t event, void *data1, void *data2);
-/* callback to handle questions from pacman transactions (yes/no) */
+/* callback to handle questions from libalpm transactions (yes/no) */
void cb_trans_conv(pmtransconv_t event, void *data1, void *data2,
void *data3, int *response);
-/* callback to handle display of the progress bar for transactions */
+/* callback to handle display of transaction progress */
void cb_trans_progress(pmtransprog_t event, const char *pkgname, int percent,
int howmany, int remain);
-#endif /* _PM_TRANS_H */
+/* callback to handle display of download progress */
+void cb_dl_progress(const char *filename, int file_xfered, int file_total,
+ int list_xfered, int list_total);
+
+/* callback to handle messages/notifications from pacman library */
+void cb_log(pmloglevel_t level, char *fmt, va_list args);
+
+#endif /* _PM_CALLBACK_H */
/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/conf.c b/src/pacman/conf.c
index a770fd47..743f8330 100644
--- a/src/pacman/conf.c
+++ b/src/pacman/conf.c
@@ -1,8 +1,8 @@
/*
* conf.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -23,38 +23,46 @@
#include <stdlib.h>
#include <stdio.h>
-#include <string.h>
-#include <limits.h>
-#include <libintl.h>
-
-#include <alpm.h>
+#include <string.h> /* strdup */
/* pacman */
#include "conf.h"
-#include "util.h"
-#include "log.h"
-#include "sync.h"
-#include "downloadprog.h"
-config_t *config_new()
-{
- config_t *config;
+/* global config variable */
+config_t *config = NULL;
- MALLOC(config, sizeof(config_t));
-
- memset(config, 0, sizeof(config_t));
+config_t *config_new(void)
+{
+ config_t *newconfig = calloc(1, sizeof(config_t));
+ if(!newconfig) {
+ fprintf(stderr, "malloc failure: could not allocate %zd bytes\n",
+ sizeof(config_t));
+ return(NULL);
+ }
+ /* defaults which may get overridden later */
+ newconfig->op = PM_OP_MAIN;
+ newconfig->logmask = PM_LOG_ERROR | PM_LOG_WARNING;
+ /* CONFFILE is defined at compile-time */
+ newconfig->configfile = strdup(CONFFILE);
+ newconfig->rootdir = NULL;
+ newconfig->dbpath = NULL;
+ newconfig->logfile = NULL;
- return(config);
+ return(newconfig);
}
-int config_free(config_t *config)
+int config_free(config_t *oldconfig)
{
- if(config == NULL) {
+ if(oldconfig == NULL) {
return(-1);
}
- FREE(config->configfile);
- free(config);
+ free(oldconfig->configfile);
+ free(oldconfig->rootdir);
+ free(oldconfig->dbpath);
+ free(oldconfig->logfile);
+ free(oldconfig);
+ oldconfig = NULL;
return(0);
}
diff --git a/src/pacman/conf.h b/src/pacman/conf.h
index 05ef0b4c..989fa2c8 100644
--- a/src/pacman/conf.h
+++ b/src/pacman/conf.h
@@ -1,8 +1,8 @@
/*
* conf.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _PM_CONF_H
@@ -24,25 +24,36 @@
#include <alpm.h>
typedef struct __config_t {
- /* command line options */
- char *configfile;
unsigned short op;
+ unsigned short quiet;
unsigned short verbose;
unsigned short version;
unsigned short help;
unsigned short upgrade;
unsigned short noconfirm;
unsigned short noprogressbar;
- unsigned short op_d_resolve;
+ unsigned short logmask;
+ /* unfortunately, we have to keep track of paths both here and in the library
+ * because they can come from both the command line or config file, and we
+ * need to ensure we get the order of preference right. */
+ char *configfile;
+ char *rootdir;
+ char *dbpath;
+ char *logfile;
+ /* TODO how to handle cachedirs? */
+
unsigned short op_q_isfile;
unsigned short op_q_info;
unsigned short op_q_list;
unsigned short op_q_foreign;
unsigned short op_q_orphans;
+ unsigned short op_q_deps;
+ unsigned short op_q_explicit;
unsigned short op_q_owns;
unsigned short op_q_search;
unsigned short op_q_changelog;
unsigned short op_q_upgrade;
+
unsigned short op_s_clean;
unsigned short op_s_dependsonly;
unsigned short op_s_downloadonly;
@@ -50,16 +61,35 @@ typedef struct __config_t {
unsigned short op_s_sync;
unsigned short op_s_search;
unsigned short op_s_upgrade;
+
unsigned short group;
pmtransflag_t flags;
- unsigned short noask;
- unsigned int ask;
+
+ /* conf file options */
+ unsigned short chomp; /* I Love Candy! */
+ unsigned short usecolor; /* enable colorful output */
+ unsigned short showsize; /* show individual package sizes */
+ unsigned short totaldownload; /* When downloading, display the amount
+ downloaded, rate, ETA, and percent
+ downloaded of the total download list */
} config_t;
-#define FREECONF(p) do { if(p) { config_free(p); p = NULL; } } while(0)
+/* Operations */
+enum {
+ PM_OP_MAIN = 1,
+ PM_OP_ADD,
+ PM_OP_REMOVE,
+ PM_OP_UPGRADE,
+ PM_OP_QUERY,
+ PM_OP_SYNC,
+ PM_OP_DEPTEST
+};
+
+/* global config variable */
+extern config_t *config;
config_t *config_new(void);
-int config_free(config_t *config);
+int config_free(config_t *oldconfig);
#endif /* _PM_CONF_H */
diff --git a/src/pacman/deptest.c b/src/pacman/deptest.c
index 1ae7ceb5..32fb3d08 100644
--- a/src/pacman/deptest.c
+++ b/src/pacman/deptest.c
@@ -1,8 +1,8 @@
/*
* deptest.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -24,20 +24,16 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <libintl.h>
#include <alpm.h>
#include <alpm_list.h>
/* pacman */
-#include "deptest.h"
+#include "pacman.h"
#include "util.h"
#include "conf.h"
-#include "log.h"
-#include "sync.h"
-
-extern config_t *config;
+/* TODO: This should use _alpm_checkdeps() */
int pacman_deptest(alpm_list_t *targets)
{
int retval = 0;
@@ -46,7 +42,7 @@ int pacman_deptest(alpm_list_t *targets)
if(targets == NULL) {
return(0);
}
-
+
for(i = targets; i; i = alpm_list_next(i)) {
int found = 0;
pmpkg_t *pkg;
@@ -55,20 +51,16 @@ int pacman_deptest(alpm_list_t *targets)
alpm_list_t *j, *provides;
target = alpm_list_getdata(i);
-
- /* splitdep modifies the string... we'll compensate for now */
- char *saved_target = NULL;
- saved_target = calloc(strlen(target)+1, sizeof(char));
- strncpy(saved_target, target, strlen(target));
-
dep = alpm_splitdep(target);
- pkg = alpm_db_get_pkg(alpm_option_get_localdb(), target);
+ pkg = alpm_db_get_pkg(alpm_option_get_localdb(),
+ alpm_dep_get_name(dep));
if(pkg && alpm_depcmp(pkg, dep)) {
found = 1;
} else {
/* not found, can we find anything that provides this in the local DB? */
- provides = alpm_db_whatprovides(alpm_option_get_localdb(), target);
+ provides = alpm_db_whatprovides(alpm_option_get_localdb(),
+ alpm_dep_get_name(dep));
for(j = provides; j; j = alpm_list_next(j)) {
pmpkg_t *pkg;
pkg = alpm_list_getdata(j);
@@ -78,13 +70,14 @@ int pacman_deptest(alpm_list_t *targets)
break;
}
}
+ alpm_list_free(provides);
}
if(!found) {
- MSG(NL, "%s", saved_target);
- retval = 1;
+ printf("%s\n", target);
+ retval = 127;
}
- free(saved_target);
+ free(dep);
}
return(retval);
}
diff --git a/src/pacman/deptest.h b/src/pacman/deptest.h
deleted file mode 100644
index ee30e437..00000000
--- a/src/pacman/deptest.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * deptest.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-#ifndef _PM_DEPTEST_H
-#define _PM_DEPTEST_H
-
-#include <alpm_list.h>
-
-int pacman_deptest(alpm_list_t *targets);
-
-#endif /* _PM_DEPTEST_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/downloadprog.c b/src/pacman/downloadprog.c
deleted file mode 100644
index 6ce8e2f5..00000000
--- a/src/pacman/downloadprog.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * downloadprog.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-
-#include "config.h"
-
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <time.h>
-#include <sys/time.h>
-#include <libintl.h>
-#include <math.h>
-
-#include <alpm.h>
-
-/* pacman */
-#include "downloadprog.h"
-#include "util.h"
-#include "log.h"
-#include "conf.h"
-
-/* progress bar */
-static float rate_last;
-static int xfered_last;
-static struct timeval initial_time;
-
-/* pacman options */
-extern config_t *config;
-
-#define FILENAME_TRIM_LEN 23
-
-void log_progress(const char *filename, int xfered, int total)
-{
- const int infolen = 50;
- char *fname, *p;
-
- float rate = 0.0, timediff = 0.0, f_xfered = 0.0;
- unsigned int eta_h = 0, eta_m = 0, eta_s = 0;
- int percent;
- char rate_size = 'K', xfered_size = 'K';
-
- if(config->noprogressbar) {
- return;
- }
-
- /* XXX: big fat hack: due to the fact that we switch out printf/pm_fprintf,
- * not everything honors our 'neednl' newline hackery. This forces a newline
- * if we need one before drawing the progress bar */
- MSG(NL,NULL);
-
- /* this is basically a switch on xferred: 0, total, and anything else */
- if(xfered == 0) {
- /* set default starting values */
- gettimeofday(&initial_time, NULL);
- xfered_last = 0;
- rate_last = 0.0;
- timediff = get_update_timediff(1);
- rate = 0.0;
- eta_s = 0;
- set_output_padding(1); /* we need padding from pm_fprintf output */
- } else if(xfered == total) {
- /* compute final values */
- struct timeval current_time;
- float diff_sec, diff_usec;
-
- gettimeofday(&current_time, NULL);
- diff_sec = current_time.tv_sec - initial_time.tv_sec;
- diff_usec = current_time.tv_usec - initial_time.tv_usec;
- timediff = diff_sec + (diff_usec / 1000000.0);
- rate = (float)total / (timediff * 1024.0);
-
- /* round elapsed time to the nearest second */
- eta_s = (int)floorf(timediff + 0.5);
-
- set_output_padding(0); /* shut off padding */
- } else {
- /* compute current average values */
- timediff = get_update_timediff(0);
-
- if(timediff < UPDATE_SPEED_SEC) {
- /* return if the calling interval was too short */
- return;
- }
- rate = (float)(xfered - xfered_last) / (timediff * 1024.0);
- /* average rate to reduce jumpiness */
- rate = (float)(rate + 2*rate_last) / 3;
- eta_s = (unsigned int)(total - xfered) / (rate * 1024.0);
- rate_last = rate;
- xfered_last = xfered;
- }
-
- percent = (int)((float)xfered) / ((float)total) * 100;
-
- /* fix up time for display */
- eta_h = eta_s / 3600;
- eta_s -= eta_h * 3600;
- eta_m = eta_s / 60;
- eta_s -= eta_m * 60;
-
- fname = strdup(filename);
- /* strip extension if it's there
- * NOTE: in the case of package files, only the pkgname is sent now */
- if((p = strstr(fname, PM_EXT_PKG)) || (p = strstr(fname, PM_EXT_DB))) {
- *p = '\0';
- }
- if(strlen(fname) > FILENAME_TRIM_LEN) {
- strcpy(fname + FILENAME_TRIM_LEN -3,"...");
- }
-
- /* Awesome formatting for progress bar. We need a mess of Kb->Mb->Gb stuff
- * here. We'll use limit of 2048 for each until we get some empirical */
- /* rate_size = 'K'; was set above */
- if(rate > 2048.0) {
- rate /= 1024.0;
- rate_size = 'M';
- if(rate > 2048.0) {
- rate /= 1024.0;
- rate_size = 'G';
- /* we should not go higher than this for a few years (9999.9 Gb/s?)*/
- }
- }
-
- f_xfered = (float) xfered / 1024.0; /* convert to K by default */
- /* xfered_size = 'K'; was set above */
- if(f_xfered > 2048.0) {
- f_xfered /= 1024.0;
- xfered_size = 'M';
- if(f_xfered > 2048.0) {
- f_xfered /= 1024.0;
- xfered_size = 'G';
- /* I should seriously hope that archlinux packages never break
- * the 9999.9GB mark... we'd have more serious problems than the progress
- * bar in pacman */
- }
- }
-
- printf(" %-*s %6.1f%c %#6.1f%c/s %02u:%02u:%02u", FILENAME_TRIM_LEN, fname,
- f_xfered, xfered_size, rate, rate_size, eta_h, eta_m, eta_s);
-
- free(fname);
-
- fill_progress(percent, getcols() - infolen);
- return;
-}
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/downloadprog.h b/src/pacman/downloadprog.h
deleted file mode 100644
index e79fcc51..00000000
--- a/src/pacman/downloadprog.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * downloadprog.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-#ifndef _PM_DOWNLOADPROG_H
-#define _PM_DOWNLOADPROG_H
-
-void log_progress(const char *filename, int xfered, int total);
-
-#endif /* _PM_DOWNLOADPROG_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/log.c b/src/pacman/log.c
deleted file mode 100644
index ca83df0b..00000000
--- a/src/pacman/log.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * log.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-#include <ctype.h>
-#include <time.h>
-#include <libintl.h>
-
-#include <alpm.h>
-
-/* pacman */
-#include "log.h"
-#include "conf.h"
-#include "util.h"
-
-#define LOG_STR_LEN 256
-
-extern config_t *config;
-
-static int neednl = 0; /* for cleaner message output */
-static int needpad = 0; /* pad blanks to terminal width */
-
-/* simple helper for needpad */
-void set_output_padding(int on)
-{
- needpad = on;
-}
-
-/* Callback to handle notifications from the library
- */
-void cb_log(unsigned short level, char *msg)
-{
- char str[LOG_STR_LEN] = "";
-
- if(!strlen(msg)) {
- return;
- }
-
- switch(level) {
- case PM_LOG_DEBUG:
- sprintf(str, _("debug"));
- break;
- case PM_LOG_ERROR:
- sprintf(str, _("error"));
- break;
- case PM_LOG_WARNING:
- sprintf(str, _("warning"));
- break;
- case PM_LOG_FUNCTION:
- /* TODO we should increase the indent level when this occurs so we can see
- * program flow easier. It'll be fun
- */
- sprintf(str, _("function"));
- break;
- default:
- sprintf(str, "???");
- break;
- }
-
-#ifdef PACMAN_DEBUG
- /* If debug is on, we'll timestamp the output */
- if(alpm_option_get_logmask() & PM_LOG_DEBUG) {
- time_t t;
- struct tm *tmp;
- char timestr[10] = {0};
-
- t = time(NULL);
- tmp = localtime(&t);
- strftime(timestr, 9, "%H:%M:%S", tmp);
- timestr[8] = '\0';
-
- MSG(NL, "[%s] %s: %s", timestr, str, msg);
- } else {
- MSG(NL, "%s: %s", str, msg);
- }
-#else
- MSG(NL, "%s: %s", str, msg);
-#endif
-}
-
-/* Wrapper to fprintf() that allows to choose if we want the output
- * to be appended on the current line, or written to a new one
- */
-void pm_fprintf(FILE *file, unsigned short line, char *fmt, ...)
-{
- va_list args;
-
- char str[LOG_STR_LEN];
- int len = 0;
-
- if(neednl == 1 && line == NL) {
- fprintf(file, "\n");
- neednl = 0;
- }
-
- if(!fmt) {
- return;
- }
-
- va_start(args, fmt);
- vsnprintf(str, LOG_STR_LEN, fmt, args);
- va_end(args);
-
- len = strlen(str);
-
- if(needpad == 1 && str[len-1] == '\n') {
- /* we want this removed so we can pad */
- str[len-1] = ' ';
- neednl = 1;
- }
-
- fprintf(file, str);
-
- if(needpad == 1) {
- int i, cols = getcols();
- for(i=len; i < cols; ++i) {
- fprintf(file, " ");
- }
- if(neednl == 1 && line == NL) {
- fprintf(file, "\n");
- neednl = 0;
- }
- }
- fflush(file);
- neednl = (str[strlen(str)-1] == '\n') ? 0 : 1;
-}
-
-/* Check verbosity option and, if set, print the
- * string to stdout
- */
-void vprint(char *fmt, ...)
-{
- va_list args;
-
- char str[LOG_STR_LEN];
-
- if(config->verbose > 0) {
- va_start(args, fmt);
- vsnprintf(str, LOG_STR_LEN, fmt, args);
- va_end(args);
- pm_fprintf(stdout, NL, str);
- }
-}
-
-/* presents a prompt and gets a Y/N answer
- */
-int yesno(char *fmt, ...)
-{
- char str[LOG_STR_LEN];
- char response[32];
- va_list args;
-
- if(config->noconfirm) {
- return(1);
- }
-
- va_start(args, fmt);
- vsnprintf(str, LOG_STR_LEN, fmt, args);
- va_end(args);
-
- /* Use stderr so questions are always displayed when redirecting output */
- pm_fprintf(stderr, NL, str); \
-
- if(fgets(response, 32, stdin)) {
- if(strlen(response) != 0) {
- strtrim(response);
- }
-
- /* User hits 'enter', forcing a newline here */
- neednl = 0;
-
- if(!strcasecmp(response, _("Y")) || !strcasecmp(response, _("YES")) || strlen(response) == 0) {
- return(1);
- }
- }
- return(0);
-}
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/log.h b/src/pacman/log.h
deleted file mode 100644
index 1205e8e6..00000000
--- a/src/pacman/log.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * log.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-#ifndef _PM_LOG_H
-#define _PM_LOG_H
-
-#include <stdio.h>
-
-/* TODO these are illegal in ISO C, thus the reason -pedantic was never used
- * as a compile flag for the pacman side of things (named variadic macros) */
-#define MSG(line, fmt, args...) pm_fprintf(stdout, line, fmt, ##args)
-#define ERR(line, fmt, args...) do { \
- pm_fprintf(stderr, line, _("error: ")); \
- pm_fprintf(stderr, CL, fmt, ##args); \
-} while(0)
-#define WARN(line, fmt, args...) do { \
- pm_fprintf(stderr, line, _("warning: ")); \
- pm_fprintf(stderr, CL, fmt, ##args); \
-} while(0)
-
-enum {
- NL, /* new line */
- CL /* current line */
-};
-
-void set_output_padding(int on);
-
-/* callback to handle messages/notifications from pacman library */
-void cb_log(unsigned short level, char *msg);
-
-void pm_fprintf(FILE *file, unsigned short line, char *fmt, ...);
-void vprint(char *fmt, ...);
-
-int yesno(char *fmt, ...);
-
-#endif /* _PM_LOG_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/package.c b/src/pacman/package.c
index 5c27b665..ac3f8207 100644
--- a/src/pacman/package.c
+++ b/src/pacman/package.c
@@ -1,8 +1,8 @@
/*
* package.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -26,25 +26,28 @@
#include <string.h>
#include <limits.h>
#include <sys/stat.h>
-#include <libintl.h>
#include <alpm.h>
#include <alpm_list.h>
/* pacman */
#include "package.h"
-#include "log.h"
#include "util.h"
-/* Display the content of an installed package
+/* Display the content of a package
*
- * level: <1 - omits N/A info for file query (-Qp)
- * 1 - normal level
- * >1 - extra information (backup files)
+ * level: <0 - sync package [-Si]
+ * =0 - file query [-Qip]
+ * 1 - localdb query, normal level [-Qi]
+ * >1 - localdb query, extra information (backup files) [-Qii]
*/
void dump_pkg_full(pmpkg_t *pkg, int level)
{
- const char *bdate, *type, *idate, *reason, *descheader;
+ const char *reason, *descheader;
+ time_t bdate, idate;
+ char bdatestr[50] = "", idatestr[50] = "";
+ const alpm_list_t *i;
+ alpm_list_t *requiredby = NULL, *depstrings = NULL;
if(pkg == NULL) {
return;
@@ -52,8 +55,13 @@ void dump_pkg_full(pmpkg_t *pkg, int level)
/* set variables here, do all output below */
bdate = alpm_pkg_get_builddate(pkg);
- type = alpm_pkg_get_buildtype(pkg);
+ if(bdate) {
+ strftime(bdatestr, 50, "%c", localtime(&bdate));
+ }
idate = alpm_pkg_get_installdate(pkg);
+ if(idate) {
+ strftime(idatestr, 50, "%c", localtime(&idate));
+ }
switch((long)alpm_pkg_get_reason(pkg)) {
case PM_PKG_REASON_EXPLICIT:
@@ -67,86 +75,89 @@ void dump_pkg_full(pmpkg_t *pkg, int level)
break;
}
+ /* turn depends list into a text list */
+ for(i = alpm_pkg_get_depends(pkg); i; i = alpm_list_next(i)) {
+ pmdepend_t *dep = (pmdepend_t*)alpm_list_getdata(i);
+ depstrings = alpm_list_add(depstrings, alpm_dep_get_string(dep));
+ }
+
+ if(level>0) {
+ /* compute this here so we don't get a puase in the middle of output */
+ requiredby = alpm_pkg_compute_requiredby(pkg);
+ }
+
descheader = _("Description : ");
/* actual output */
- printf(_("Name : %s\n"), (char *)alpm_pkg_get_name(pkg));
- printf(_("Version : %s\n"), (char *)alpm_pkg_get_version(pkg));
- printf(_("URL : %s\n"), (char *)alpm_pkg_get_url(pkg));
- list_display(_("License :"), alpm_pkg_get_licenses(pkg));
+ if(level == 0) {
+ string_display(_("Filename :"), alpm_pkg_get_filename(pkg));
+ }
+ string_display(_("Name :"), alpm_pkg_get_name(pkg));
+ string_display(_("Version :"), alpm_pkg_get_version(pkg));
+ string_display(_("URL :"), alpm_pkg_get_url(pkg));
+ list_display(_("Licenses :"), alpm_pkg_get_licenses(pkg));
list_display(_("Groups :"), alpm_pkg_get_groups(pkg));
list_display(_("Provides :"), alpm_pkg_get_provides(pkg));
- list_display(_("Depends On :"), alpm_pkg_get_depends(pkg));
- list_display(_("Removes :"), alpm_pkg_get_removes(pkg));
+ list_display(_("Depends On :"), depstrings);
+ list_display(_("Optional Deps :"), alpm_pkg_get_optdepends(pkg));
/* Only applicable if installed */
if(level > 0) {
- list_display(_("Required By :"), alpm_pkg_get_requiredby(pkg));
+ list_display(_("Required By :"), requiredby);
+ FREELIST(requiredby);
}
list_display(_("Conflicts With :"), alpm_pkg_get_conflicts(pkg));
- printf(_("Installed Size : %6.2f K\n"), (float)alpm_pkg_get_size(pkg) / 1024.0);
- printf(_("Packager : %s\n"), (char *)alpm_pkg_get_packager(pkg));
- printf(_("Architecture : %s\n"), (char *)alpm_pkg_get_arch(pkg));
- printf(_("Build Date : %s %s\n"), bdate, strlen(bdate) ? "UTC" : "");
- printf(_("Build Type : %s\n"), strlen(type) ? type : _("Unknown"));
+ list_display(_("Replaces :"), alpm_pkg_get_replaces(pkg));
+ if(level < 0) {
+ printf(_("Download Size : %6.2f K\n"),
+ (float)alpm_pkg_get_size(pkg) / 1024.0);
+ }
+ if(level == 0) {
+ printf(_("Compressed Size: %6.2f K\n"),
+ (float)alpm_pkg_get_size(pkg) / 1024.0);
+ }
+
+ printf(_("Installed Size : %6.2f K\n"),
+ (float)alpm_pkg_get_isize(pkg) / 1024.0);
+ string_display(_("Packager :"), alpm_pkg_get_packager(pkg));
+ string_display(_("Architecture :"), alpm_pkg_get_arch(pkg));
+ string_display(_("Build Date :"), bdatestr);
if(level > 0) {
- printf(_("Install Date : %s %s\n"), idate, strlen(idate) ? "UTC" : "");
- printf(_("Install Reason : %s\n"), reason);
+ string_display(_("Install Date :"), idatestr);
+ string_display(_("Install Reason :"), reason);
+ }
+ if(level >= 0) {
+ string_display(_("Install Script :"),
+ alpm_pkg_has_scriptlet(pkg) ? _("Yes") : _("No"));
+ }
+
+ /* MD5 Sum for sync package */
+ if(level < 0) {
+ string_display(_("MD5 Sum :"), alpm_pkg_get_md5sum(pkg));
}
- printf(_("Install Script : %s\n"),
- alpm_pkg_has_scriptlet(pkg) ? _("Yes") : _("No"));
/* printed using a variable to make i18n safe */
printf("%s", descheader);
indentprint(alpm_pkg_get_desc(pkg), mbstowcs(NULL, descheader, 0));
- printf("\n");
+ printf("\n\n");
/* Print additional package info if info flag passed more than once */
if(level > 1) {
- /* call new backup function */
- printf("\n");
dump_pkg_backups(pkg);
+ printf("\n");
}
- printf("\n");
+
+ FREELIST(depstrings);
}
/* Display the content of a sync package
*/
void dump_pkg_sync(pmpkg_t *pkg, const char *treename)
{
- char *descheader, *md5sum, *sha1sum;
if(pkg == NULL) {
return;
}
-
- descheader = _("Description : ");
-
- md5sum = (char *)alpm_pkg_get_md5sum(pkg);
- sha1sum = (char *)alpm_pkg_get_sha1sum(pkg);
-
- printf(_("Repository : %s\n"), treename);
- printf(_("Name : %s\n"), (char *)alpm_pkg_get_name(pkg));
- printf(_("Version : %s\n"), (char *)alpm_pkg_get_version(pkg));
- list_display(_("Groups :"), alpm_pkg_get_groups(pkg));
- list_display(_("Provides :"), alpm_pkg_get_provides(pkg));
- list_display(_("Depends On :"), alpm_pkg_get_depends(pkg));
- list_display(_("Removes :"), alpm_pkg_get_removes(pkg));
- list_display(_("Conflicts With :"), alpm_pkg_get_conflicts(pkg));
- list_display(_("Replaces :"), alpm_pkg_get_replaces(pkg));
- printf(_("Download Size : %6.2f K\n"), (float)alpm_pkg_get_size(pkg) / 1024.0);
- printf(_("Installed Size : %6.2f K\n"), (float)alpm_pkg_get_isize(pkg) / 1024.0);
-
- /* printed using a variable to make i18n safe */
- printf("%s", descheader);
- indentprint(alpm_pkg_get_desc(pkg), mbstowcs(NULL, descheader, 0));
- printf("\n");
-
- if (md5sum != NULL && md5sum[0] != '\0') {
- printf(_("MD5 Sum : %s"), md5sum);
- }
- if (sha1sum != NULL && sha1sum[0] != '\0') {
- printf(_("SHA1 Sum : %s"), sha1sum);
- }
- printf("\n");
+ string_display(_("Repository :"), treename);
+ dump_pkg_full(pkg, -1);
}
/* Display list of backup files and their modification states
@@ -164,7 +175,7 @@ void dump_pkg_backups(pmpkg_t *pkg)
char *str = strdup(alpm_list_getdata(i));
char *ptr = index(str, '\t');
if(ptr == NULL) {
- FREE(str);
+ free(str);
continue;
}
*ptr = '\0';
@@ -172,48 +183,39 @@ void dump_pkg_backups(pmpkg_t *pkg)
snprintf(path, PATH_MAX-1, "%s%s", root, str);
/* if we find the file, calculate checksums, otherwise it is missing */
if(!stat(path, &buf)) {
- char *sum;
char *md5sum = alpm_get_md5sum(path);
- char *sha1sum = alpm_get_sha1sum(path);
- if(md5sum == NULL || sha1sum == NULL) {
- ERR(NL, _("error calculating checksums for %s\n"), path);
- FREE(str);
+ if(md5sum == NULL) {
+ fprintf(stderr, _("error: could not calculate checksums for %s\n"),
+ path);
+ free(str);
continue;
}
- /* TODO Is this a good way to check type of backup stored?
- * We aren't storing it anywhere in the database. */
- if (strlen(ptr) == 32) {
- sum = md5sum;
- } else { /*if (strlen(ptr) == 40) */
- sum = sha1sum;
- }
+
/* if checksums don't match, file has been modified */
- if (strcmp(sum, ptr)) {
+ if (strcmp(md5sum, ptr)) {
printf(_("MODIFIED\t%s\n"), path);
} else {
printf(_("Not Modified\t%s\n"), path);
}
- FREE(md5sum);
- FREE(sha1sum);
+ free(md5sum);
} else {
printf(_("MISSING\t\t%s\n"), path);
}
- FREE(str);
+ free(str);
}
} else {
/* package had no backup files */
printf(_("(none)\n"));
}
}
-
+
/* List all files contained in a package
*/
void dump_pkg_files(pmpkg_t *pkg)
{
const char *pkgname, *root, *filestr;
alpm_list_t *i, *pkgfiles;
- struct stat buf;
char path[PATH_MAX];
pkgname = alpm_pkg_get_name(pkg);
@@ -224,11 +226,7 @@ void dump_pkg_files(pmpkg_t *pkg)
filestr = (char*)alpm_list_getdata(i);
/* build a path so we can stat the filename */
snprintf(path, PATH_MAX-1, "%s%s", root, filestr);
- if(!stat(path, &buf) && S_ISDIR(buf.st_mode)) {
- /* if we stat it and it is a dir, don't print */
- } else {
- fprintf(stdout, "%s %s\n", pkgname, path);
- }
+ fprintf(stdout, "%s %s\n", pkgname, path);
}
fflush(stdout);
@@ -243,7 +241,7 @@ void dump_pkg_changelog(char *clfile, const char *pkgname)
if((fp = fopen(clfile, "r")) == NULL)
{
- ERR(NL, _("No changelog available for '%s'.\n"), pkgname);
+ fprintf(stderr, _("error: no changelog available for '%s'.\n"), pkgname);
return;
}
else
diff --git a/src/pacman/package.h b/src/pacman/package.h
index 965ecee5..0e4bb0fa 100644
--- a/src/pacman/package.h
+++ b/src/pacman/package.h
@@ -1,8 +1,8 @@
/*
* package.h
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _PM_PACKAGE_H
@@ -30,8 +30,6 @@ void dump_pkg_backups(pmpkg_t *pkg);
void dump_pkg_files(pmpkg_t *pkg);
void dump_pkg_changelog(char *clfile, const char *pkgname);
-#define FREEPKG(p) { alpm_pkg_free(p); p = NULL; }
-
#endif /* _PM_PACKAGE_H */
/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 5adafb14..77527531 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -1,8 +1,8 @@
/*
* pacman.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
+ * Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,127 +15,108 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#include "config.h"
-#include <stdlib.h>
+#include <stdlib.h> /* atoi */
#include <stdio.h>
#include <limits.h>
#include <getopt.h>
#include <string.h>
#include <signal.h>
-#include <sys/types.h>
-#include <sys/stat.h>
#include <unistd.h>
-#include <libintl.h>
-#include <locale.h>
-#if defined(__APPLE__)
-#include <malloc/malloc.h>
-#elif defined(__OpenBSD__) || defined(__APPLE__)
-#include <sys/malloc.h>
-#elif defined(CYGWIN)
-#include <libgen.h> /* basename */
-#else
-#include <mcheck.h> /* debug */
+#include <sys/types.h>
+#include <sys/utsname.h> /* uname */
+#include <locale.h> /* setlocale */
+#include <time.h> /* time_t */
+#if defined(PACMAN_DEBUG) && defined(HAVE_MCHECK_H)
+#include <mcheck.h> /* debug tracing (mtrace) */
#endif
-#include <time.h>
+/* alpm */
#include <alpm.h>
#include <alpm_list.h>
/* pacman */
+#include "pacman.h"
#include "util.h"
-#include "log.h"
-#include "downloadprog.h"
+#include "callback.h"
#include "conf.h"
#include "package.h"
-#include "add.h"
-#include "remove.h"
-#include "upgrade.h"
-#include "query.h"
-#include "sync.h"
-#include "deptest.h"
-
-#if defined(__OpenBSD__) || defined(__APPLE__)
-#define BSD
-#endif
-
-/* Operations */
-enum {
- PM_OP_MAIN = 1,
- PM_OP_ADD,
- PM_OP_REMOVE,
- PM_OP_UPGRADE,
- PM_OP_QUERY,
- PM_OP_SYNC,
- PM_OP_DEPTEST
-};
-
-config_t *config;
pmdb_t *db_local;
/* list of targets specified on command line */
static alpm_list_t *pm_targets;
-/* Display usage/syntax for the specified operation.
- * op: the operation code requested
- * myname: basename(argv[0])
+/** Display usage/syntax for the specified operation.
+ * @param op the operation code requested
+ * @param myname basename(argv[0])
*/
-static void usage(int op, char *myname)
+static void usage(int op, const char * const myname)
{
+ /* prefetch some strings for usage below, which moves a lot of calls
+ * out of gettext. */
+ char const * const str_opt = _("options");
+ char const * const str_file = _("file");
+ char const * const str_pkg = _("package");
+ char const * const str_usg = _("usage");
+ char const * const str_opr = _("operation");
+
if(op == PM_OP_MAIN) {
- printf(_("usage: %s {-h --help}\n"), myname);
- printf(_(" %s {-V --version}\n"), myname);
- printf(_(" %s {-A --add} [options] <file>\n"), myname);
- printf(_(" %s {-F --freshen} [options] <file>\n"), myname);
- printf(_(" %s {-Q --query} [options] [package]\n"), myname);
- printf(_(" %s {-R --remove} [options] <package>\n"), myname);
- printf(_(" %s {-S --sync} [options] [package]\n"), myname);
- printf(_(" %s {-U --upgrade} [options] <file>\n"), myname);
+ printf("%s: %s <%s> [...]\n", str_usg, myname, str_opr);
+ printf("%s:\n", str_opt);
+ printf(" %s {-h --help}\n", myname);
+ printf(" %s {-V --version}\n", myname);
+ printf(" %s {-A --add} [%s] <%s>\n", myname, str_opt, str_file);
+ printf(" %s {-Q --query} [%s] [%s]\n", myname, str_opt, str_pkg);
+ printf(" %s {-R --remove} [%s] <%s>\n", myname, str_opt, str_pkg);
+ printf(" %s {-S --sync} [%s] [%s]\n", myname, str_opt, str_pkg);
+ printf(" %s {-U --upgrade} [%s] <%s>\n", myname, str_opt, str_file);
printf(_("\nuse '%s --help' with other options for more syntax\n"), myname);
} else {
if(op == PM_OP_ADD) {
- printf(_("usage: %s {-A --add} [options] <file>\n"), myname);
- printf(_("options:\n"));
+ printf("%s: %s {-A --add} [%s] <%s>\n", str_usg, myname, str_opt, str_file);
+ printf("%s:\n", str_opt);
+ printf(_(" --asdeps install packages as non-explicitly installed\n"));
printf(_(" -d, --nodeps skip dependency checks\n"));
printf(_(" -f, --force force install, overwrite conflicting files\n"));
} else if(op == PM_OP_REMOVE) {
- printf(_("usage: %s {-R --remove} [options] <package>\n"), myname);
- printf(_("options:\n"));
+ printf("%s: %s {-R --remove} [%s] <%s>\n", str_usg, myname, str_opt, str_pkg);
+ printf("%s:\n", str_opt);
printf(_(" -c, --cascade remove packages and all packages that depend on them\n"));
printf(_(" -d, --nodeps skip dependency checks\n"));
printf(_(" -k, --dbonly only remove database entry, do not remove files\n"));
printf(_(" -n, --nosave remove configuration files as well\n"));
printf(_(" -s, --recursive remove dependencies also (that won't break packages)\n"));
} else if(op == PM_OP_UPGRADE) {
- if(config->flags & PM_TRANS_FLAG_FRESHEN) {
- printf(_("usage: %s {-F --freshen} [options] <file>\n"), myname);
- } else {
- printf(_("usage: %s {-U --upgrade} [options] <file>\n"), myname);
- }
- printf(_("options:\n"));
+ printf("%s: %s {-U --upgrade} [%s] <%s>\n", str_usg, myname, str_opt, str_file);
+ printf("%s:\n", str_opt);
+ printf(_(" --asdeps install packages as non-explicitly installed\n"));
printf(_(" -d, --nodeps skip dependency checks\n"));
printf(_(" -f, --force force install, overwrite conflicting files\n"));
} else if(op == PM_OP_QUERY) {
- printf(_("usage: %s {-Q --query} [options] [package]\n"), myname);
- printf(_("options:\n"));
+ printf("%s: %s {-Q --query} [%s] [%s]\n", str_usg, myname, str_opt, str_pkg);
+ printf("%s:\n", str_opt);
printf(_(" -c, --changelog view the changelog of a package\n"));
- printf(_(" -e, --orphans list all packages installed as dependencies but no longer\n"));
- printf(_(" required by any package\n"));
+ printf(_(" -d, --deps list all packages installed as dependencies\n"));
+ printf(_(" -e, --explicit list all packages explicitly installed\n"));
printf(_(" -g, --groups view all members of a package group\n"));
- printf(_(" -i, --info view package information\n"));
+ printf(_(" -i, --info view package information (-ii for backup files)\n"));
printf(_(" -l, --list list the contents of the queried package\n"));
printf(_(" -m, --foreign list installed packages not found in sync db(s)\n"));
printf(_(" -o, --owns <file> query the package that owns <file>\n"));
printf(_(" -p, --file <package> query a package file instead of the database\n"));
printf(_(" -s, --search <regex> search locally-installed packages for matching strings\n"));
+ printf(_(" -t, --orphans list all packages not required by any package\n"));
printf(_(" -u, --upgrades list all packages that can be upgraded\n"));
+ printf(_(" -q --quiet show less information for query and search\n"));
} else if(op == PM_OP_SYNC) {
- printf(_("usage: %s {-S --sync} [options] [package]\n"), myname);
- printf(_("options:\n"));
+ printf("%s: %s {-S --sync} [%s] [%s]\n", str_usg, myname, str_opt, str_pkg);
+ printf("%s:\n", str_opt);
+ printf(_(" --asdeps install packages as non-explicitly installed\n"));
printf(_(" -c, --clean remove old packages from cache directory (-cc for all)\n"));
printf(_(" -d, --nodeps skip dependency checks\n"));
printf(_(" -e, --dependsonly install dependencies only\n"));
@@ -148,13 +129,17 @@ static void usage(int op, char *myname)
printf(_(" -u, --sysupgrade upgrade all packages that are out of date\n"));
printf(_(" -w, --downloadonly download packages but do not install/upgrade anything\n"));
printf(_(" -y, --refresh download fresh package databases from the server\n"));
+ printf(_(" --needed only install outdated or not yet installed packages\n"));
printf(_(" --ignore <pkg> ignore a package upgrade (can be used more than once)\n"));
+ printf(_(" --ignoregroup <grp>\n"
+ " ignore a group upgrade (can be used more than once)\n"));
+ printf(_(" -q --quiet show less information for query and search\n"));
}
printf(_(" --config <path> set an alternate configuration file\n"));
+ printf(_(" --logfile <path> set an alternate log file\n"));
printf(_(" --noconfirm do not ask for any confirmation\n"));
- printf(_(" --ask <number> pre-specify answers for questions (see manpage)\n"));
printf(_(" --noprogressbar do not show a progress bar when downloading files\n"));
- printf(_(" --noscriptlet do not execute the install scriptlet if there is any\n"));
+ printf(_(" --noscriptlet do not execute the install scriptlet if one exists\n"));
printf(_(" -v, --verbose be verbose\n"));
printf(_(" -r, --root <path> set an alternate installation root\n"));
printf(_(" -b, --dbpath <path> set an alternate database location\n"));
@@ -162,56 +147,148 @@ static void usage(int op, char *myname)
}
}
-/* Version
+/** Output pacman version and copyright.
*/
-static void version()
+static void version(void)
{
printf("\n");
printf(" .--. Pacman v%s - libalpm v%s\n", PACKAGE_VERSION, LIB_VERSION);
printf("/ _.-' .-. .-. .-. Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>\n");
printf("\\ '-. '-' '-' '-'\n");
- printf(" '--' \n");
- printf(_(" This program may be freely redistributed under\n"));
- printf(_(" the terms of the GNU General Public License\n"));
+ printf(" '--'\n");
+ printf(_(" This program may be freely redistributed under\n"
+ " the terms of the GNU General Public License\n"));
printf("\n");
}
+/** Sets up gettext localization. Safe to call multiple times.
+ */
+/* Inspired by the monotone function localize_monotone. */
+#if defined(ENABLE_NLS)
+static void localize(void)
+{
+ static int init = 0;
+ if (!init) {
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+ init = 1;
+ }
+}
+#endif
+
+/** Set user agent environment variable.
+ */
+static void setuseragent(void)
+{
+ const char *pacman = "Pacman/" PACKAGE_VERSION;
+ const char *libalpm = "libalpm/" LIB_VERSION;
+ char agent[101];
+ struct utsname un;
+
+ uname(&un);
+ snprintf(agent, 100, "%s (%s %s %s; %s) %s", pacman, un.sysname,
+ un.machine, un.release, setlocale(LC_MESSAGES, NULL), libalpm);
+ setenv("HTTP_USER_AGENT", agent, 0);
+}
+
+/** Catches thrown signals. Performs necessary cleanup to ensure database is
+ * in a consistant state.
+ * @param signum the thrown signal
+ */
static void cleanup(int signum)
{
if(signum==SIGSEGV)
{
- fprintf(stderr, "Internal pacman error: Segmentation fault\n"
- "Please submit a full bug report, with the given package if appropriate.\n");
+ /* write a log message and write to stderr */
+ pm_printf(PM_LOG_ERROR, "segmentation fault\n");
+ pm_fprintf(stderr, PM_LOG_ERROR, "Internal pacman error: Segmentation fault.\n"
+ "Please submit a full bug report with --debug if appropriate.\n");
exit(signum);
- } else if((signum == SIGINT) && (alpm_trans_release() == -1)
- && (pm_errno == PM_ERR_TRANS_COMMITING)) {
- return;
- }
- if(signum != 0) {
- /* TODO why is this here? */
- fprintf(stderr, "\n");
+ } else if((signum == SIGINT)) {
+ if(alpm_trans_interrupt() == 0) {
+ /* a transaction is being interrupted, don't exit pacman yet. */
+ return;
+ } else {
+ /* no commiting transaction, we can release it now and then exit pacman */
+ alpm_trans_release();
+ }
}
/* free alpm library resources */
if(alpm_release() == -1) {
- ERR(NL, "%s\n", alpm_strerror(pm_errno));
+ pm_printf(PM_LOG_ERROR, alpm_strerrorlast());
}
/* free memory */
FREELIST(pm_targets);
- FREECONF(config);
-
- /* This fixes up any missing newlines (neednl) */
- MSG(NL, "");
+ if(config) {
+ config_free(config);
+ config = NULL;
+ }
exit(signum);
}
-/* Parse command-line arguments for each operation
- * argc: argc
- * argv: argv
- *
- * Returns: 0 on success, 1 on error
+/** Sets all libalpm required paths in one go. Called after the command line and
+ * inital config file parsing. Once this is complete, we can see if any paths were
+ * defined. If a rootdir was defined and nothing else, we want all of our paths to
+ * live under the rootdir that was specified. Safe to call multiple times (will only
+ * do anything the first time).
+ */
+static void setlibpaths(void)
+{
+ static int init = 0;
+ if (!init) {
+ int ret = 0;
+
+ pm_printf(PM_LOG_DEBUG, "setlibpaths() called\n");
+ if(config->rootdir) {
+ char path[PATH_MAX];
+ ret = alpm_option_set_root(config->rootdir);
+ if(ret != 0) {
+ pm_printf(PM_LOG_ERROR, _("problem setting rootdir '%s' (%s)\n"),
+ config->rootdir, alpm_strerrorlast());
+ cleanup(ret);
+ }
+ if(!config->dbpath) {
+ snprintf(path, PATH_MAX, "%s%s", alpm_option_get_root(), DBPATH);
+ config->dbpath = strdup(path);
+ }
+ if(!config->logfile) {
+ snprintf(path, PATH_MAX, "%s%s", alpm_option_get_root(), LOGFILE);
+ ret = alpm_option_set_dbpath(path);
+ config->logfile = strdup(path);
+ }
+ }
+ if(config->dbpath) {
+ ret = alpm_option_set_dbpath(config->dbpath);
+ if(ret != 0) {
+ pm_printf(PM_LOG_ERROR, _("problem setting dbpath '%s' (%s)\n"),
+ config->dbpath, alpm_strerrorlast());
+ cleanup(ret);
+ }
+ }
+ if(config->logfile) {
+ ret = alpm_option_set_logfile(config->logfile);
+ if(ret != 0) {
+ pm_printf(PM_LOG_ERROR, _("problem setting logfile '%s' (%s)\n"),
+ config->logfile, alpm_strerrorlast());
+ cleanup(ret);
+ }
+ }
+
+ /* add a default cachedir if one wasn't specified */
+ if(alpm_option_get_cachedirs() == NULL) {
+ alpm_option_add_cachedir(CACHEDIR);
+ }
+ }
+}
+
+/** Parse command-line arguments for each operation.
+ * @param argc argc
+ * @param argv argv
+ * @return 0 on success, 1 on error
*/
static int parseargs(int argc, char *argv[])
{
@@ -220,7 +297,6 @@ static int parseargs(int argc, char *argv[])
static struct option opts[] =
{
{"add", no_argument, 0, 'A'},
- {"freshen", no_argument, 0, 'F'},
{"query", no_argument, 0, 'Q'},
{"remove", no_argument, 0, 'R'},
{"sync", no_argument, 0, 'S'},
@@ -232,22 +308,25 @@ static int parseargs(int argc, char *argv[])
{"changelog", no_argument, 0, 'c'},
{"clean", no_argument, 0, 'c'},
{"nodeps", no_argument, 0, 'd'},
+ {"deps", no_argument, 0, 'd'},
{"dependsonly",no_argument, 0, 'e'},
- {"orphans", no_argument, 0, 'e'},
+ {"explicit", no_argument, 0, 'e'},
{"force", no_argument, 0, 'f'},
{"groups", no_argument, 0, 'g'},
{"help", no_argument, 0, 'h'},
{"info", no_argument, 0, 'i'},
{"dbonly", no_argument, 0, 'k'},
{"list", no_argument, 0, 'l'},
- {"nosave", no_argument, 0, 'n'},
{"foreign", no_argument, 0, 'm'},
+ {"nosave", no_argument, 0, 'n'},
{"owns", no_argument, 0, 'o'},
{"file", no_argument, 0, 'p'},
{"print-uris", no_argument, 0, 'p'},
+ {"quiet", no_argument, 0, 'q'},
{"root", required_argument, 0, 'r'},
{"recursive", no_argument, 0, 's'},
{"search", no_argument, 0, 's'},
+ {"orphans", no_argument, 0, 't'},
{"upgrades", no_argument, 0, 'u'},
{"sysupgrade", no_argument, 0, 'u'},
{"verbose", no_argument, 0, 'v'},
@@ -257,16 +336,19 @@ static int parseargs(int argc, char *argv[])
{"config", required_argument, 0, 1001},
{"ignore", required_argument, 0, 1002},
{"debug", optional_argument, 0, 1003},
- {"noprogressbar", no_argument, 0, 1004},
+ {"noprogressbar", no_argument, 0, 1004},
{"noscriptlet", no_argument, 0, 1005},
- {"ask", required_argument, 0, 1006},
{"cachedir", required_argument, 0, 1007},
+ {"asdeps", no_argument, 0, 1008},
+ {"logfile", required_argument, 0, 1009},
+ {"ignoregroup", required_argument, 0, 1010},
+ {"needed", no_argument, 0, 1011},
{0, 0, 0, 0}
};
- struct stat st;
- unsigned short logmask;
- while((opt = getopt_long(argc, argv, "ARUFQSTr:b:vkhscVfmnoldepiuwyg", opts, &option_index))) {
+ while((opt = getopt_long(argc, argv, "ARUFQSTr:b:vkhscVfmnoldepqituwygz", opts, &option_index))) {
+ alpm_list_t *list = NULL, *item = NULL; /* lists for splitting strings */
+
if(opt < 0) {
break;
}
@@ -277,51 +359,62 @@ static int parseargs(int argc, char *argv[])
if(config->configfile) {
free(config->configfile);
}
- #if defined(__OpenBSD__) || defined(__APPLE__)
- config->configfile = strdup(optarg);
- #else
config->configfile = strndup(optarg, PATH_MAX);
- #endif
break;
- case 1002: alpm_option_add_ignorepkg(strdup(optarg)); break;
+ case 1002:
+ list = strsplit(optarg, ',');
+ for(item = list; item; item = alpm_list_next(item)) {
+ alpm_option_add_ignorepkg((char *)alpm_list_getdata(item));
+ }
+ FREELIST(list);
+ break;
case 1003:
/* debug levels are made more 'human readable' than using a raw logmask
- * here, we will ALWAYS set error and warning for now, though perhaps a
+ * here, error and warning are set in config_new, though perhaps a
* --quiet option will remove these later */
- logmask = PM_LOG_ERROR | PM_LOG_WARNING;
-
if(optarg) {
unsigned short debug = atoi(optarg);
switch(debug) {
- case 3: logmask |= PM_LOG_FUNCTION; /* fall through */
- case 2: logmask |= PM_LOG_DOWNLOAD; /*fall through */
- case 1: logmask |= PM_LOG_DEBUG; break;
+ case 2:
+ config->logmask |= PM_LOG_FUNCTION; /* fall through */
+ case 1:
+ config->logmask |= PM_LOG_DEBUG;
+ break;
default:
- ERR(NL, _("'%s' is not a valid debug level"), optarg);
+ pm_printf(PM_LOG_ERROR, _("'%s' is not a valid debug level\n"),
+ optarg);
return(1);
}
} else {
- logmask |= PM_LOG_DEBUG;
+ config->logmask |= PM_LOG_DEBUG;
}
/* progress bars get wonky with debug on, shut them off */
config->noprogressbar = 1;
- alpm_option_set_logmask(logmask);
break;
case 1004: config->noprogressbar = 1; break;
case 1005: config->flags |= PM_TRANS_FLAG_NOSCRIPTLET; break;
- case 1006: config->noask = 1; config->ask = atoi(optarg); break;
case 1007:
- if(stat(optarg, &st) == -1 || !S_ISDIR(st.st_mode)) {
- ERR(NL, _("'%s' is not a valid cache directory\n"), optarg);
+ if(alpm_option_add_cachedir(optarg) != 0) {
+ pm_printf(PM_LOG_ERROR, _("problem adding cachedir '%s' (%s)\n"),
+ optarg, alpm_strerrorlast());
return(1);
}
- alpm_option_set_cachedir(optarg);
break;
- case 'A': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_ADD); break;
- case 'F':
- config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_UPGRADE);
- config->flags |= PM_TRANS_FLAG_FRESHEN;
+ case 1008:
+ config->flags |= PM_TRANS_FLAG_ALLDEPS;
+ break;
+ case 1009:
+ config->logfile = strdup(optarg);
break;
+ case 1010:
+ list = strsplit(optarg, ',');
+ for(item = list; item; item = alpm_list_next(item)) {
+ alpm_option_add_ignoregrp((char *)alpm_list_getdata(item));
+ }
+ FREELIST(list);
+ break;
+ case 1011: config->flags |= PM_TRANS_FLAG_NEEDED; break;
+ case 'A': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_ADD); break;
case 'Q': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_QUERY); break;
case 'R': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_REMOVE); break;
case 'S': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_SYNC); break;
@@ -329,20 +422,19 @@ static int parseargs(int argc, char *argv[])
case 'U': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_UPGRADE); break;
case 'V': config->version = 1; break;
case 'b':
- if(stat(optarg, &st) == -1 || !S_ISDIR(st.st_mode)) {
- ERR(NL, _("'%s' is not a valid db path\n"), optarg);
- return(1);
- }
- alpm_option_set_dbpath(optarg);
+ config->dbpath = strdup(optarg);
break;
case 'c':
(config->op_s_clean)++;
config->flags |= PM_TRANS_FLAG_CASCADE;
config->op_q_changelog = 1;
break;
- case 'd': config->flags |= PM_TRANS_FLAG_NODEPS; break;
+ case 'd':
+ config->op_q_deps = 1;
+ config->flags |= PM_TRANS_FLAG_NODEPS;
+ break;
case 'e':
- config->op_q_orphans = 1;
+ config->op_q_explicit = 1;
config->flags |= PM_TRANS_FLAG_DEPENDSONLY;
break;
case 'f': config->flags |= PM_TRANS_FLAG_FORCE; break;
@@ -358,18 +450,20 @@ static int parseargs(int argc, char *argv[])
config->op_q_isfile = 1;
config->flags |= PM_TRANS_FLAG_PRINTURIS;
break;
+ case 'q':
+ config->quiet = 1;
+ break;
case 'r':
- if(stat(optarg, &st) == -1 || !S_ISDIR(st.st_mode)) {
- ERR(NL, _("'%s' is not a valid root path\n"), optarg);
- return(1);
- }
- alpm_option_set_root(optarg);
+ config->rootdir = strdup(optarg);
break;
case 's':
config->op_s_search = 1;
config->op_q_search = 1;
config->flags |= PM_TRANS_FLAG_RECURSE;
break;
+ case 't':
+ config->op_q_orphans = 1;
+ break;
case 'u':
config->op_s_upgrade = 1;
config->op_q_upgrade = 1;
@@ -387,12 +481,12 @@ static int parseargs(int argc, char *argv[])
}
if(config->op == 0) {
- ERR(NL, _("only one operation may be used at a time\n"));
+ pm_printf(PM_LOG_ERROR, _("only one operation may be used at a time\n"));
return(1);
}
if(config->help) {
- usage(config->op, basename(argv[0]));
+ usage(config->op, mbasename(argv[0]));
return(2);
}
if(config->version) {
@@ -409,143 +503,380 @@ static int parseargs(int argc, char *argv[])
return(0);
}
+/** Add repeating options such as NoExtract, NoUpgrade, etc to libalpm
+ * settings. Refactored out of the parseconfig code since all of them did
+ * the exact same thing and duplicated code.
+ * @param ptr a pointer to the start of the multiple options
+ * @param option the string (friendly) name of the option, used for messages
+ * @param optionfunc a function pointer to an alpm_option_add_* function
+ */
+static void setrepeatingoption(const char *ptr, const char *option,
+ void (*optionfunc)(const char*))
+{
+ char *p = (char*)ptr;
+ char *q;
+
+ while((q = strchr(p, ' '))) {
+ *q = '\0';
+ (*optionfunc)(p);
+ pm_printf(PM_LOG_DEBUG, "config: %s: %s\n", option, p);
+ p = q;
+ p++;
+ }
+ (*optionfunc)(p);
+ pm_printf(PM_LOG_DEBUG, "config: %s: %s\n", option, p);
+}
+
+/* The real parseconfig. Called with a null section argument by the publicly
+ * visible parseconfig so we can recall from within ourself on an include */
+static int _parseconfig(const char *file, const char *givensection,
+ pmdb_t * const givendb)
+{
+ FILE *fp = NULL;
+ char line[PATH_MAX+1];
+ int linenum = 0;
+ char *ptr, *section = NULL;
+ pmdb_t *db = NULL;
+
+ pm_printf(PM_LOG_DEBUG, "config: attempting to read file %s\n", file);
+ fp = fopen(file, "r");
+ if(fp == NULL) {
+ pm_printf(PM_LOG_ERROR, _("config file %s could not be read.\n"), file);
+ return(1);
+ }
+
+ /* if we are passed a section, use it as our starting point */
+ if(givensection != NULL) {
+ section = strdup(givensection);
+ }
+ /* if we are passed a db, use it as our starting point */
+ if(givendb != NULL) {
+ db = givendb;
+ }
+
+ while(fgets(line, PATH_MAX, fp)) {
+ linenum++;
+ strtrim(line);
+
+ /* ignore whole line and end of line comments */
+ if(strlen(line) == 0 || line[0] == '#') {
+ continue;
+ }
+ if((ptr = strchr(line, '#'))) {
+ *ptr = '\0';
+ }
+
+ if(line[0] == '[' && line[strlen(line)-1] == ']') {
+ /* new config section, skip the '[' */
+ ptr = line;
+ ptr++;
+ if(section) {
+ free(section);
+ }
+ section = strdup(ptr);
+ section[strlen(section)-1] = '\0';
+ pm_printf(PM_LOG_DEBUG, "config: new section '%s'\n", section);
+ if(!strlen(section)) {
+ pm_printf(PM_LOG_ERROR, _("config file %s, line %d: bad section name.\n"),
+ file, linenum);
+ return(1);
+ }
+ /* if we are not looking at the options section, register a db and also
+ * ensure we have set all of our library paths as the library is too stupid
+ * at the moment to do lazy opening of the databases */
+ if(strcmp(section, "options") != 0) {
+ setlibpaths();
+ db = alpm_db_register_sync(section);
+ }
+ } else {
+ /* directive */
+ char *key, *upperkey;
+ /* strsep modifies the 'line' string: 'key \0 ptr' */
+ key = line;
+ ptr = line;
+ strsep(&ptr, "=");
+ strtrim(key);
+ strtrim(ptr);
+
+ if(key == NULL) {
+ pm_printf(PM_LOG_ERROR, _("config file %s, line %d: syntax error in config file- missing key.\n"),
+ file, linenum);
+ return(1);
+ }
+ /* For each directive, compare to the uppercase and camelcase string.
+ * This prevents issues with certain locales where characters don't
+ * follow the toupper() rules we may expect, e.g. tr_TR where i != I.
+ */
+ upperkey = strtoupper(strdup(key));
+ if(section == NULL && (strcmp(key, "Include") == 0 || strcmp(upperkey, "INCLUDE") == 0)) {
+ pm_printf(PM_LOG_ERROR, _("config file %s, line %d: 'Include' directive must belong to a section.\n"),
+ file, linenum);
+ return(1);
+ }
+ if(ptr == NULL && strcmp(section, "options") == 0) {
+ /* directives without settings, all in [options] */
+ if(strcmp(key, "NoPassiveFTP") == 0 || strcmp(upperkey, "NOPASSIVEFTP") == 0) {
+ alpm_option_set_nopassiveftp(1);
+ pm_printf(PM_LOG_DEBUG, "config: nopassiveftp\n");
+ } else if(strcmp(key, "UseSyslog") == 0 || strcmp(upperkey, "USESYSLOG") == 0) {
+ alpm_option_set_usesyslog(1);
+ pm_printf(PM_LOG_DEBUG, "config: usesyslog\n");
+ } else if(strcmp(key, "ILoveCandy") == 0 || strcmp(upperkey, "ILOVECANDY") == 0) {
+ config->chomp = 1;
+ pm_printf(PM_LOG_DEBUG, "config: chomp\n");
+ } else if(strcmp(key, "UseColor") == 0 || strcmp(upperkey, "USECOLOR") == 0) {
+ config->usecolor = 1;
+ pm_printf(PM_LOG_DEBUG, "config: usecolor\n");
+ } else if(strcmp(key, "ShowSize") == 0 || strcmp(upperkey, "SHOWSIZE") == 0) {
+ config->showsize = 1;
+ pm_printf(PM_LOG_DEBUG, "config: showsize\n");
+ } else if(strcmp(key, "UseDelta") == 0 || strcmp(upperkey, "USEDELTA") == 0) {
+ alpm_option_set_usedelta(1);
+ pm_printf(PM_LOG_DEBUG, "config: usedelta\n");
+ } else if(strcmp(key, "TotalDownload") == 0 || strcmp(upperkey, "TOTALDOWNLOAD") == 0) {
+ config->totaldownload = 1;
+ pm_printf(PM_LOG_DEBUG, "config: totaldownload\n");
+ } else {
+ pm_printf(PM_LOG_ERROR, _("config file %s, line %d: directive '%s' not recognized.\n"),
+ file, linenum, key);
+ return(1);
+ }
+ } else {
+ /* directives with settings */
+ if(strcmp(key, "Include") == 0 || strcmp(upperkey, "INCLUDE") == 0) {
+ int ret;
+ pm_printf(PM_LOG_DEBUG, "config: including %s\n", ptr);
+ ret = _parseconfig(ptr, section, db);
+ if(ret != 0) {
+ return(ret);
+ }
+ } else if(strcmp(section, "options") == 0) {
+ if(strcmp(key, "NoUpgrade") == 0
+ || strcmp(upperkey, "NOUPGRADE") == 0) {
+ setrepeatingoption(ptr, "NoUpgrade", alpm_option_add_noupgrade);
+ } else if(strcmp(key, "NoExtract") == 0
+ || strcmp(upperkey, "NOEXTRACT") == 0) {
+ setrepeatingoption(ptr, "NoExtract", alpm_option_add_noextract);
+ } else if(strcmp(key, "IgnorePkg") == 0
+ || strcmp(upperkey, "IGNOREPKG") == 0) {
+ setrepeatingoption(ptr, "IgnorePkg", alpm_option_add_ignorepkg);
+ } else if(strcmp(key, "IgnoreGroup") == 0
+ || strcmp(upperkey, "IGNOREGROUP") == 0) {
+ setrepeatingoption(ptr, "IgnoreGroup", alpm_option_add_ignoregrp);
+ } else if(strcmp(key, "HoldPkg") == 0
+ || strcmp(upperkey, "HOLDPKG") == 0) {
+ setrepeatingoption(ptr, "HoldPkg", alpm_option_add_holdpkg);
+ } else if(strcmp(key, "DBPath") == 0 || strcmp(upperkey, "DBPATH") == 0) {
+ /* don't overwrite a path specified on the command line */
+ if(!config->dbpath) {
+ config->dbpath = strdup(ptr);
+ pm_printf(PM_LOG_DEBUG, "config: dbpath: %s\n", ptr);
+ }
+ } else if(strcmp(key, "CacheDir") == 0 || strcmp(upperkey, "CACHEDIR") == 0) {
+ if(alpm_option_add_cachedir(ptr) != 0) {
+ pm_printf(PM_LOG_ERROR, _("problem adding cachedir '%s' (%s)\n"),
+ ptr, alpm_strerrorlast());
+ return(1);
+ }
+ pm_printf(PM_LOG_DEBUG, "config: cachedir: %s\n", ptr);
+ } else if(strcmp(key, "RootDir") == 0 || strcmp(upperkey, "ROOTDIR") == 0) {
+ /* don't overwrite a path specified on the command line */
+ if(!config->rootdir) {
+ config->rootdir = strdup(ptr);
+ pm_printf(PM_LOG_DEBUG, "config: rootdir: %s\n", ptr);
+ }
+ } else if (strcmp(key, "LogFile") == 0 || strcmp(upperkey, "LOGFILE") == 0) {
+ if(!config->logfile) {
+ config->logfile = strdup(ptr);
+ pm_printf(PM_LOG_DEBUG, "config: logfile: %s\n", ptr);
+ }
+ } else if (strcmp(key, "XferCommand") == 0 || strcmp(upperkey, "XFERCOMMAND") == 0) {
+ alpm_option_set_xfercommand(ptr);
+ pm_printf(PM_LOG_DEBUG, "config: xfercommand: %s\n", ptr);
+ } else if (strcmp(key, "UpgradeDelay") == 0 || strcmp(upperkey, "UPGRADEDELAY") == 0) {
+ /* The config value is in days, we use seconds */
+ time_t ud = atol(ptr) * 60 * 60 *24;
+ alpm_option_set_upgradedelay(ud);
+ pm_printf(PM_LOG_DEBUG, "config: upgradedelay: %d\n", (int)ud);
+ } else {
+ pm_printf(PM_LOG_ERROR, _("config file %s, line %d: directive '%s' not recognized.\n"),
+ file, linenum, key);
+ return(1);
+ }
+ } else if(strcmp(key, "Server") == 0 || strcmp(upperkey, "SERVER") == 0) {
+ /* let's attempt a replacement for the current repo */
+ char *server = strreplace(ptr, "$repo", section);
+
+ if(alpm_db_setserver(db, server) != 0) {
+ /* pm_errno is set by alpm_db_setserver */
+ return(1);
+ }
+
+ free(server);
+ } else {
+ pm_printf(PM_LOG_ERROR, _("config file %s, line %d: directive '%s' not recognized.\n"),
+ file, linenum, key);
+ return(1);
+ }
+ }
+ free(upperkey);
+ }
+ }
+ fclose(fp);
+ if(section){
+ free(section);
+ }
+
+ /* call setlibpaths here to ensure we have called it at least once */
+ setlibpaths();
+ pm_printf(PM_LOG_DEBUG, "config: finished parsing %s\n", file);
+ return(0);
+}
+
+/** Parse a configuration file.
+ * @param file path to the config file.
+ * @return 0 on success, non-zero on error
+ */
+int parseconfig(const char *file)
+{
+ /* call the real parseconfig function with a null section & db argument */
+ return(_parseconfig(file, NULL, NULL));
+}
+
+/** Main function.
+ * @param argc argc
+ * @param argv argv
+ * @return A return code indicating success, failure, etc.
+ */
int main(int argc, char *argv[])
{
int ret = 0;
- char *lang = NULL;
-#ifndef CYGWIN
- uid_t myuid;
+#if defined(HAVE_GETEUID)
+ /* geteuid undefined in CYGWIN */
+ uid_t myuid = geteuid();
#endif
-#if defined(PACMAN_DEBUG) && !defined(CYGWIN) && !defined(BSD)
+#if defined(PACMAN_DEBUG) && defined(HAVE_MCHECK_H)
/*setenv("MALLOC_TRACE","pacman.mtrace", 0);*/
mtrace();
#endif
+
/* set signal handlers */
signal(SIGINT, cleanup);
signal(SIGTERM, cleanup);
signal(SIGSEGV, cleanup);
/* i18n init */
- lang = setlocale(LC_ALL, "");
- /* if setlocale returns null, the locale was invalid- override it */
- if (lang == NULL) {
- lang = "C";
- setlocale(LC_ALL, "C");
- setenv("LC_ALL", lang, 1);
- MSG(NL, _("warning: current locale is invalid; using default \"C\" locale"));
- }
+#if defined(ENABLE_NLS)
+ localize();
+#endif
- /* workaround for tr_TR */
- if(lang && !strcmp(lang, "tr_TR")) {
- setlocale(LC_CTYPE, "C");
- }
- bindtextdomain("pacman", "/usr/share/locale");
- textdomain("pacman");
+ /* set user agent for downloading */
+ setuseragent();
/* init config data */
config = config_new();
- config->op = PM_OP_MAIN;
+
/* disable progressbar if the output is redirected */
if(!isatty(1)) {
config->noprogressbar = 1;
}
- /* initialize pm library */
+ /* initialize library */
if(alpm_initialize() == -1) {
- ERR(NL, _("failed to initialize alpm library (%s)\n"), alpm_strerror(pm_errno));
- cleanup(1);
+ pm_printf(PM_LOG_ERROR, _("failed to initialize alpm library (%s)\n"),
+ alpm_strerrorlast());
+ cleanup(EXIT_FAILURE);
}
+ /* Setup logging as soon as possible, to print out maximum debugging info */
+ alpm_option_set_logcb(cb_log);
+ alpm_option_set_dlcb(cb_dl_progress);
+ /* define paths to reasonable defaults */
+ alpm_option_set_root(ROOTDIR);
+ alpm_option_set_dbpath(DBPATH);
+ alpm_option_set_logfile(LOGFILE);
+
+ /* Priority of options:
+ * 1. command line
+ * 2. config file
+ * 3. compiled-in defaults
+ * However, we have to parse the command line first because a config file
+ * location can be specified here, so we need to make sure we prefer these
+ * options over the config file coming second.
+ */
+
/* parse the command line */
ret = parseargs(argc, argv);
if(ret != 0) {
- config_free(config);
- exit(ret);
+ cleanup(ret);
}
-#ifndef CYGWIN
- /* see if we're root or not */
- myuid = geteuid();
-#ifndef FAKEROOT
- if(!myuid && getenv("FAKEROOTKEY")) {
- /* fakeroot doesn't count, we're non-root */
- myuid = 99;
+ /* parse the config file */
+ ret = parseconfig(config->configfile);
+ if(ret != 0) {
+ cleanup(ret);
}
-#endif
+#if defined(HAVE_GETEUID)
/* check if we have sufficient permission for the requested operation */
- if(myuid > 0) {
- if(config->op != PM_OP_MAIN && config->op != PM_OP_QUERY && config->op != PM_OP_DEPTEST) {
- if((config->op == PM_OP_SYNC && !config->op_s_sync &&
- (config->op_s_search || config->group || config->op_q_list || config->op_q_info
- || config->flags & PM_TRANS_FLAG_PRINTURIS))
- || (config->op == PM_OP_DEPTEST && config->op_d_resolve)
- || (strcmp(alpm_option_get_root(), PM_ROOT) != 0)) {
- /* special case: PM_OP_SYNC can be used w/ config->op_s_search by any user */
- /* special case: ignore root user check if -r is specified, fall back on
- * normal FS checking */
- } else {
- ERR(NL, _("you cannot perform this operation unless you are root.\n"));
- config_free(config);
- exit(EXIT_FAILURE);
- }
- }
+ if(myuid > 0 && needs_transaction()) {
+ pm_printf(PM_LOG_ERROR, _("you cannot perform this operation unless you are root.\n"));
+ cleanup(EXIT_FAILURE);
}
#endif
- /* Setup logging as soon as possible, to print out maximum debugging info */
- alpm_option_set_logcb(cb_log);
-
- if(config->configfile == NULL) {
- config->configfile = strdup(PACCONF);
- }
-
- if(alpm_parse_config(config->configfile, NULL, "") != 0) {
- ERR(NL, _("failed to parse config (%s)\n"), alpm_strerror(pm_errno));
- cleanup(1);
- }
-
- /* set library parameters */
- alpm_option_set_dlcb(log_progress);
-
if(config->verbose > 0) {
- printf("Root : %s\n", alpm_option_get_root());
- printf("DBPath : %s\n", alpm_option_get_dbpath());
- printf("CacheDir : %s\n", alpm_option_get_cachedir());
- list_display(_("Targets :"), pm_targets);
+ alpm_list_t *i;
+ printf("Root : %s\n", alpm_option_get_root());
+ printf("Conf File : %s\n", config->configfile);
+ printf("DB Path : %s\n", alpm_option_get_dbpath());
+ printf("Cache Dirs: ");
+ for(i = alpm_option_get_cachedirs(); i; i = alpm_list_next(i)) {
+ printf("%s ", (char*)alpm_list_getdata(i));
+ }
+ printf("\n");
+ printf("Lock File : %s\n", alpm_option_get_lockfile());
+ printf("Log File : %s\n", alpm_option_get_logfile());
+ list_display("Targets :", pm_targets);
}
/* Opening local database */
- db_local = alpm_db_register("local");
+ db_local = alpm_db_register_local();
if(db_local == NULL) {
- ERR(NL, _("could not register 'local' database (%s)\n"), alpm_strerror(pm_errno));
- cleanup(1);
- }
-
- if(alpm_list_count(pm_targets) == 0 && !(config->op == PM_OP_QUERY || (config->op == PM_OP_SYNC
- && (config->op_s_sync || config->op_s_upgrade || config->op_s_clean || config->group
- || config->op_q_list)))) {
- ERR(NL, _("no targets specified (use -h for help)\n"));
- cleanup(1);
+ pm_printf(PM_LOG_ERROR, _("could not register 'local' database (%s)\n"),
+ alpm_strerrorlast());
+ cleanup(EXIT_FAILURE);
}
/* start the requested operation */
switch(config->op) {
- case PM_OP_ADD: ret = pacman_add(pm_targets); break;
- case PM_OP_REMOVE: ret = pacman_remove(pm_targets); break;
- case PM_OP_UPGRADE: ret = pacman_upgrade(pm_targets); break;
- case PM_OP_QUERY: ret = pacman_query(pm_targets); break;
- case PM_OP_SYNC: ret = pacman_sync(pm_targets); break;
- case PM_OP_DEPTEST: ret = pacman_deptest(pm_targets); break;
+ case PM_OP_ADD:
+ ret = pacman_add(pm_targets);
+ break;
+ case PM_OP_REMOVE:
+ ret = pacman_remove(pm_targets);
+ break;
+ case PM_OP_UPGRADE:
+ ret = pacman_upgrade(pm_targets);
+ break;
+ case PM_OP_QUERY:
+ ret = pacman_query(pm_targets);
+ break;
+ case PM_OP_SYNC:
+ ret = pacman_sync(pm_targets);
+ break;
+ case PM_OP_DEPTEST:
+ ret = pacman_deptest(pm_targets);
+ break;
default:
- ERR(NL, _("no operation specified (use -h for help)\n"));
- ret = 1;
+ pm_printf(PM_LOG_ERROR, _("no operation specified (use -h for help)\n"));
+ ret = EXIT_FAILURE;
}
cleanup(ret);
/* not reached */
- return(0);
+ return(EXIT_SUCCESS);
}
/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/upgrade.h b/src/pacman/pacman.h
index d26930f0..fbd419d7 100644
--- a/src/pacman/upgrade.h
+++ b/src/pacman/pacman.h
@@ -1,8 +1,8 @@
/*
- * upgrade.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ * pacman.h
+ *
+ * Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,16 +15,27 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
-#ifndef _PM_UPGRADE_H
-#define _PM_UPGRADE_H
+#ifndef _PM_PACMAN_H
+#define _PM_PACMAN_H
#include <alpm_list.h>
+/* add.c, this should merge with upgrade.c */
+int pacman_add(alpm_list_t *targets);
int pacman_upgrade(alpm_list_t *targets);
+/* sync.c */
+int pacman_sync(alpm_list_t *targets);
+/* query.c */
+int pacman_query(alpm_list_t *targets);
+/* remove.c */
+int pacman_remove(alpm_list_t *targets);
+
+/* deptest.c */
+int pacman_deptest(alpm_list_t *targets);
-#endif /* _PM_UPGRADE_H */
+#endif /* _PM_PACMAN_H */
/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/po/POTFILES.in b/src/pacman/po/POTFILES.in
deleted file mode 100644
index fb86a51e..00000000
--- a/src/pacman/po/POTFILES.in
+++ /dev/null
@@ -1,16 +0,0 @@
-# List of source files with translatable strings
-
-src/pacman/add.c
-src/pacman/conf.c
-src/pacman/deptest.c
-src/pacman/downloadprog.c
-src/pacman/log.c
-src/pacman/log.h
-src/pacman/package.c
-src/pacman/pacman.c
-src/pacman/query.c
-src/pacman/remove.c
-src/pacman/sync.c
-src/pacman/trans.c
-src/pacman/upgrade.c
-src/pacman/util.c
diff --git a/src/pacman/po/de.po b/src/pacman/po/de.po
deleted file mode 100644
index 1ac7f934..00000000
--- a/src/pacman/po/de.po
+++ /dev/null
@@ -1,1084 +0,0 @@
-# translation of de.po to German
-# German translations for pacman package.
-# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
-# This file is distributed under the same license as the Pacman package manager package.
-#
-# Marcus Habermehl <bmh1980@frugalware.org>, 2006.
-# Pierre Schmitz <pierre@archlinux.de>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: de\n"
-"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-04-28 04:02-0400\n"
-"PO-Revision-Date: 2007-05-09 17:38+0200\n"
-"Last-Translator: Pierre Schmitz <pierre@archlinux.de>\n"
-"Language-Team: German <archlinux.de>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);X-Generator: KBabel 1.11.4\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: src/pacman/add.c:72 src/pacman/remove.c:82 src/pacman/sync.c:482
-#: src/pacman/sync.c:531
-#, c-format
-msgid ""
-" if you're sure a package manager is not already running,\n"
-" you can remove %s%s\n"
-msgstr ""
-" Wenn Sie sicher sind, dass nicht bereits ein Paketmanager\n"
-" gestartet ist, können Sie %s%s entfernen\n"
-
-#: src/pacman/add.c:79
-msgid "loading package data... "
-msgstr "Lade Paketdaten ... "
-
-#: src/pacman/add.c:83
-#, c-format
-msgid "failed to add target '%s' (%s)"
-msgstr "Konnte Paket '%s' nicht hinzufügen (%s)"
-
-#: src/pacman/add.c:88 src/pacman/sync.c:196 src/pacman/trans.c:73
-#: src/pacman/trans.c:80 src/pacman/trans.c:91 src/pacman/trans.c:105
-#: src/pacman/trans.c:119 src/pacman/trans.c:131 src/pacman/trans.c:142
-msgid "done.\n"
-msgstr "Fertig.\n"
-
-#: src/pacman/add.c:95 src/pacman/remove.c:101 src/pacman/sync.c:616
-#, c-format
-msgid "failed to prepare transaction (%s)\n"
-msgstr "Konnte Vorgang nicht vorbereiten (%s)\n"
-
-#: src/pacman/add.c:104
-#, c-format
-msgid ":: %s: requires %s"
-msgstr ":: %s: Benötigt %s"
-
-#: src/pacman/add.c:125 src/pacman/sync.c:643
-#, c-format
-msgid ":: %s: conflicts with %s"
-msgstr ":: %s: Steht im Konflikt mit %s"
-
-#: src/pacman/add.c:134 src/pacman/sync.c:707
-#, c-format
-msgid "%s exists in both '%s' and '%s'\n"
-msgstr "%s existiert in '%s' und '%s'\n"
-
-#: src/pacman/add.c:140 src/pacman/sync.c:713
-#, c-format
-msgid "%s: %s exists in filesystem\n"
-msgstr "%s: %s existiert im Dateisystem\n"
-
-#: src/pacman/add.c:146 src/pacman/sync.c:719 src/pacman/sync.c:725
-msgid ""
-"\n"
-"errors occurred, no packages were upgraded.\n"
-msgstr ""
-"\n"
-"Fehler aufgetreten, keine Pakete wurden aktualisiert.\n"
-
-#: src/pacman/add.c:156 src/pacman/sync.c:650
-#, c-format
-msgid ":: %.1f MB required, have %.1f MB"
-msgstr ":: %.1f MB werden benötigt, %.1f MB stehen zur Verfügung"
-
-#: src/pacman/add.c:169 src/pacman/remove.c:141 src/pacman/sync.c:700
-#, c-format
-msgid "failed to commit transaction (%s)\n"
-msgstr "Konnte den Vorgang (%s) nicht durchführen\n"
-
-#: src/pacman/add.c:179 src/pacman/remove.c:151 src/pacman/sync.c:524
-#: src/pacman/sync.c:741
-#, c-format
-msgid "failed to release transaction (%s)\n"
-msgstr "Konnte den Vorgang (%s) nicht freigeben\n"
-
-#: src/pacman/log.c:63
-#, c-format
-msgid "debug"
-msgstr "Fehlersuche"
-
-#: src/pacman/log.c:66
-#, c-format
-msgid "error"
-msgstr "Fehler"
-
-#: src/pacman/log.c:69
-#, c-format
-msgid "warning"
-msgstr "Warnung"
-
-#: src/pacman/log.c:75
-#, c-format
-msgid "function"
-msgstr "Funktion"
-
-#: src/pacman/log.c:194
-msgid "Y"
-msgstr "J"
-
-#: src/pacman/log.c:194
-msgid "YES"
-msgstr "JA"
-
-#: src/pacman/log.h:30
-msgid "error: "
-msgstr "Fehler: "
-
-#: src/pacman/log.h:34
-msgid "warning: "
-msgstr "Warnung: "
-
-#: src/pacman/package.c:60
-msgid "Explicitly installed"
-msgstr "Ausdrücklich installiert"
-
-#: src/pacman/package.c:63
-msgid "Installed as a dependency for another package"
-msgstr "Installiert als Abhängigkeit für ein anderes Paket"
-
-#: src/pacman/package.c:66 src/pacman/package.c:90
-msgid "Unknown"
-msgstr "Unbekannt"
-
-#: src/pacman/package.c:70 src/pacman/package.c:121
-msgid "Description : "
-msgstr "Beschreibung : "
-
-#: src/pacman/package.c:73 src/pacman/package.c:127
-#, c-format
-msgid "Name : %s\n"
-msgstr "Name : %s\n"
-
-#: src/pacman/package.c:74 src/pacman/package.c:128
-#, c-format
-msgid "Version : %s\n"
-msgstr "Version : %s\n"
-
-#: src/pacman/package.c:75
-#, c-format
-msgid "URL : %s\n"
-msgstr "URL : %s\n"
-
-#: src/pacman/package.c:76
-msgid "License :"
-msgstr "Lizenz :"
-
-#: src/pacman/package.c:77 src/pacman/package.c:129
-msgid "Groups :"
-msgstr "Gruppen :"
-
-#: src/pacman/package.c:78 src/pacman/package.c:130
-msgid "Provides :"
-msgstr "Stellt bereit :"
-
-#: src/pacman/package.c:79 src/pacman/package.c:131
-msgid "Depends On :"
-msgstr "Hängt ab von :"
-
-#: src/pacman/package.c:80 src/pacman/package.c:132
-msgid "Removes :"
-msgstr "Entfernt :"
-
-#: src/pacman/package.c:83
-msgid "Required By :"
-msgstr "Benötigt von :"
-
-#: src/pacman/package.c:85 src/pacman/package.c:133
-msgid "Conflicts With :"
-msgstr "Konflikt mit :"
-
-#: src/pacman/package.c:86 src/pacman/package.c:136
-#, c-format
-msgid "Installed Size : %6.2f K\n"
-msgstr "Installationsgröße : %6.2f K\n"
-
-#: src/pacman/package.c:87
-#, c-format
-msgid "Packager : %s\n"
-msgstr "Packer : %s\n"
-
-#: src/pacman/package.c:88
-#, c-format
-msgid "Architecture : %s\n"
-msgstr "Architektur : %s\n"
-
-#: src/pacman/package.c:89
-#, c-format
-msgid "Build Date : %s %s\n"
-msgstr "Erstellt am : %s %s\n"
-
-#: src/pacman/package.c:90
-#, c-format
-msgid "Build Type : %s\n"
-msgstr "Bauart : %s\n"
-
-#: src/pacman/package.c:92
-#, c-format
-msgid "Install Date : %s %s\n"
-msgstr "Installiert am : %s %s\n"
-
-#: src/pacman/package.c:93
-#, c-format
-msgid "Install Reason : %s\n"
-msgstr "Installationsgrund : %s\n"
-
-#: src/pacman/package.c:95
-#, c-format
-msgid "Install Script : %s\n"
-msgstr "Installations-Skript : %s\n"
-
-#: src/pacman/package.c:96
-msgid "Yes"
-msgstr "Ja"
-
-#: src/pacman/package.c:96
-msgid "No"
-msgstr "Nein"
-
-#: src/pacman/package.c:126
-#, c-format
-msgid "Repository : %s\n"
-msgstr "Repositorium : %s\n"
-
-#: src/pacman/package.c:134
-msgid "Replaces :"
-msgstr "Ersetzt :"
-
-#: src/pacman/package.c:135
-#, c-format
-msgid "Download Size : %6.2f K\n"
-msgstr "Download-Größe : %6.2f K\n"
-
-#: src/pacman/package.c:144
-#, c-format
-msgid "MD5 Sum : %s"
-msgstr "MD5-Summe : %s"
-
-#: src/pacman/package.c:147
-#, c-format
-msgid "SHA1 Sum : %s"
-msgstr "SHA1-Summe : %s"
-
-#: src/pacman/package.c:158
-#, c-format
-msgid "Backup Files:\n"
-msgstr "Sicherungs-Dateien:\n"
-
-#: src/pacman/package.c:180
-#, c-format
-msgid "error calculating checksums for %s\n"
-msgstr "Fehler beim Berechnen der Prüfsummen für %s\n"
-
-#: src/pacman/package.c:193
-#, c-format
-msgid "MODIFIED\t%s\n"
-msgstr "MODIFIZIERT\t%s\n"
-
-#: src/pacman/package.c:195
-#, c-format
-msgid "Not Modified\t%s\n"
-msgstr "Nicht modifiziert\t%s\n"
-
-#: src/pacman/package.c:200
-#, c-format
-msgid "MISSING\t\t%s\n"
-msgstr "FEHLEND\t\t%s\n"
-
-#: src/pacman/package.c:206
-#, c-format
-msgid "(none)\n"
-msgstr "(Nichts)\n"
-
-#: src/pacman/package.c:246
-#, c-format
-msgid "No changelog available for '%s'.\n"
-msgstr "Kein Änderungsprotokoll für '%s' verfügbar.\n"
-
-#: src/pacman/pacman.c:90
-#, c-format
-msgid "usage: %s {-h --help}\n"
-msgstr "Verwendung: %s {-h --help}\n"
-
-#: src/pacman/pacman.c:91
-#, c-format
-msgid " %s {-V --version}\n"
-msgstr " %s {-V --version}\n"
-
-#: src/pacman/pacman.c:92
-#, c-format
-msgid " %s {-A --add} [options] <file>\n"
-msgstr " %s {-A --add} [Optionen] <Datei>\n"
-
-#: src/pacman/pacman.c:93
-#, c-format
-msgid " %s {-F --freshen} [options] <file>\n"
-msgstr " %s {-F --freshen} [Optionen] <Datei>\n"
-
-#: src/pacman/pacman.c:94
-#, c-format
-msgid " %s {-Q --query} [options] [package]\n"
-msgstr " %s {-Q --query} [Optionen] [Paket]\n"
-
-#: src/pacman/pacman.c:95
-#, c-format
-msgid " %s {-R --remove} [options] <package>\n"
-msgstr " %s {-R --remove} [Optionen] <Paket>\n"
-
-#: src/pacman/pacman.c:96
-#, c-format
-msgid " %s {-S --sync} [options] [package]\n"
-msgstr " %s {-S --sync} [Optionen] [Paket]\n"
-
-#: src/pacman/pacman.c:97
-#, c-format
-msgid " %s {-U --upgrade} [options] <file>\n"
-msgstr " %s {-U --upgrade} [Optionen] <Datei>\n"
-
-#: src/pacman/pacman.c:98
-#, c-format
-msgid ""
-"\n"
-"use '%s --help' with other options for more syntax\n"
-msgstr ""
-"\n"
-"Benutzen Sie '%s --help' mit anderen Optionen für mehr Informationen\n"
-
-#: src/pacman/pacman.c:101
-#, c-format
-msgid "usage: %s {-A --add} [options] <file>\n"
-msgstr "Verwendung: %s {-A -add} [Optionen] <Datei>\n"
-
-#: src/pacman/pacman.c:102 src/pacman/pacman.c:107 src/pacman/pacman.c:119
-#: src/pacman/pacman.c:124 src/pacman/pacman.c:138
-#, c-format
-msgid "options:\n"
-msgstr "Optionen:\n"
-
-#: src/pacman/pacman.c:103 src/pacman/pacman.c:109 src/pacman/pacman.c:120
-#: src/pacman/pacman.c:140
-#, c-format
-msgid " -d, --nodeps skip dependency checks\n"
-msgstr " -d, --nodeps Überspringt die Abhängigkeitsprüfung\n"
-
-#: src/pacman/pacman.c:104 src/pacman/pacman.c:121 src/pacman/pacman.c:142
-#, c-format
-msgid " -f, --force force install, overwrite conflicting files\n"
-msgstr ""
-" -f, --force Installation erzwingen, Dateikonflikte überschreiben\n"
-
-#: src/pacman/pacman.c:106
-#, c-format
-msgid "usage: %s {-R --remove} [options] <package>\n"
-msgstr "Verwendung: %s {-R --remove} [Optionen] <Paket>\n"
-
-#: src/pacman/pacman.c:108
-#, c-format
-msgid ""
-" -c, --cascade remove packages and all packages that depend on them\n"
-msgstr ""
-" -c, --cascade Entfernt Pakete und alle, die von ihnen abhängen\n"
-
-#: src/pacman/pacman.c:110
-#, c-format
-msgid ""
-" -k, --dbonly only remove database entry, do not remove files\n"
-msgstr ""
-" -k, --dbonly Nur Datenbankeintrag entfernen, keine Dateien "
-"entfernen\n"
-
-#: src/pacman/pacman.c:111
-#, c-format
-msgid " -n, --nosave remove configuration files as well\n"
-msgstr " -n, --nosave Auch Konfigurationsdateien entfernen\n"
-
-#: src/pacman/pacman.c:112
-#, c-format
-msgid ""
-" -s, --recursive remove dependencies also (that won't break packages)\n"
-msgstr ""
-" -s, --recursive Auch Abhängigkeiten entfernen (beschädigt keine "
-"Pakete)\n"
-
-#: src/pacman/pacman.c:115
-#, c-format
-msgid "usage: %s {-F --freshen} [options] <file>\n"
-msgstr "Verwendung: %s {-F --freshen} [Optionen] <Datei>\n"
-
-#: src/pacman/pacman.c:117
-#, c-format
-msgid "usage: %s {-U --upgrade} [options] <file>\n"
-msgstr "Verwendung: %s {-U --upgrade} [Optionen] <Datei>\n"
-
-#: src/pacman/pacman.c:123
-#, c-format
-msgid "usage: %s {-Q --query} [options] [package]\n"
-msgstr "Verwendung: %s {-Q --query} [Optionen] [Pakete]\n"
-
-#: src/pacman/pacman.c:125
-#, c-format
-msgid " -c, --changelog view the changelog of a package\n"
-msgstr " -c, --changelog Das Änderungsprotokoll des Paketes anzeigen\n"
-
-#: src/pacman/pacman.c:126
-#, c-format
-msgid ""
-" -e, --orphans list all packages installed as dependencies but no "
-"longer\n"
-msgstr ""
-" -e, --orphans Zeigt alle Pakete, die als Abhängigkeiten "
-"installiert\n"
-
-#: src/pacman/pacman.c:127
-#, c-format
-msgid " required by any package\n"
-msgstr " wurden, aber nicht mehr benötigt werden\n"
-
-#: src/pacman/pacman.c:128 src/pacman/pacman.c:143
-#, c-format
-msgid " -g, --groups view all members of a package group\n"
-msgstr " -g, --groups Zeigt alle Mitglieder einer Paket-Gruppe an\n"
-
-#: src/pacman/pacman.c:129 src/pacman/pacman.c:144
-#, c-format
-msgid " -i, --info view package information\n"
-msgstr " -i, --info Zeigt Paketinformationen an\n"
-
-#: src/pacman/pacman.c:130
-#, c-format
-msgid " -l, --list list the contents of the queried package\n"
-msgstr " -l, --list Zeigt den Inhalt des abgefragten Paketes an\n"
-
-#: src/pacman/pacman.c:131
-#, c-format
-msgid ""
-" -m, --foreign list installed packages not found in sync db(s)\n"
-msgstr ""
-" -m, --foreign Zeigt alle Pakete an, die nicht in den Sync-db(s)\n"
-" gefunden wurden\n"
-
-#: src/pacman/pacman.c:132
-#, c-format
-msgid " -o, --owns <file> query the package that owns <file>\n"
-msgstr " -o, --owns <Datei> Fragt das Paket ab, dass <Datei> enthält\n"
-
-#: src/pacman/pacman.c:133
-#, c-format
-msgid " -p, --file <package> query a package file instead of the database\n"
-msgstr ""
-" -p, --file <Paket> Fragt die Paketdatei <Paket> anstatt der Datenbank "
-"ab\n"
-
-#: src/pacman/pacman.c:134
-#, c-format
-msgid ""
-" -s, --search <regex> search locally-installed packages for matching "
-"strings\n"
-msgstr ""
-" -s, --search <regex> Durchsucht lokal installierte Pakete nach einem Wort\n"
-
-#: src/pacman/pacman.c:135
-#, c-format
-msgid " -u, --upgrades list all packages that can be upgraded\n"
-msgstr " -u, --upgrades Zeigt alle aktualisierbaren Pakete an\n"
-
-#: src/pacman/pacman.c:137
-#, c-format
-msgid "usage: %s {-S --sync} [options] [package]\n"
-msgstr "Benutzung: %s {-S --sync} [Optionen] [Paket]\n"
-
-#: src/pacman/pacman.c:139
-#, c-format
-msgid ""
-" -c, --clean remove old packages from cache directory (-cc for "
-"all)\n"
-msgstr ""
-" -c, --clean Entfernt alte Pakete aus dem Paketpuffer(-cc für "
-"alle)\n"
-
-#: src/pacman/pacman.c:141
-#, c-format
-msgid " -e, --dependsonly install dependencies only\n"
-msgstr " -e, --dependsonly Nur Abhängigkeiten installieren\n"
-
-#: src/pacman/pacman.c:145
-#, c-format
-msgid " -l, --list <repo> view a list of packages in a repo\n"
-msgstr ""
-" -l, --list <repo> Zeigt eine Liste aller Pakete eines Repositoriums an\n"
-
-#: src/pacman/pacman.c:146
-#, c-format
-msgid ""
-" -p, --print-uris print out URIs for given packages and their "
-"dependencies\n"
-msgstr ""
-" -p, --print-uris URIs der angegebenen Pakete und deren Abhängigkeiten\n"
-" ausgeben\n"
-
-#: src/pacman/pacman.c:147
-#, c-format
-msgid ""
-" -s, --search <regex> search remote repositories for matching strings\n"
-msgstr ""
-" -s, --search <regex> Durchsucht entfernte Repositorien nach einem Wort\n"
-
-#: src/pacman/pacman.c:148
-#, c-format
-msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
-msgstr " -u, --sysupgrade Aktualisiert alle veralteten Pakete\n"
-
-#: src/pacman/pacman.c:149
-#, c-format
-msgid ""
-" -w, --downloadonly download packages but do not install/upgrade "
-"anything\n"
-msgstr ""
-" -w, --downloadonly Lädt Pakete herunter, ohne etwas zu installieren "
-"oder\n"
-" aktualisieren\n"
-
-#: src/pacman/pacman.c:150
-#, c-format
-msgid ""
-" -y, --refresh download fresh package databases from the server\n"
-msgstr " -y, --refresh Lädt frische Paketdatenbank vom Server\n"
-
-#: src/pacman/pacman.c:151
-#, c-format
-msgid ""
-" --ignore <pkg> ignore a package upgrade (can be used more than "
-"once)\n"
-msgstr ""
-" --ignore <pkg> Ignoriert ein neues Paket (kann mehrfach genutzt\n"
-" werden)\n"
-
-#: src/pacman/pacman.c:153
-#, c-format
-msgid " --config <path> set an alternate configuration file\n"
-msgstr " --config <Pfad> Setzt eine alternative Konfigurationsdatei\n"
-
-#: src/pacman/pacman.c:154
-#, c-format
-msgid " --noconfirm do not ask for any confirmation\n"
-msgstr " --noconfirm Niemals nach einer Bestätigung fragen\n"
-
-#: src/pacman/pacman.c:155
-#, c-format
-msgid ""
-" --ask <number> pre-specify answers for questions (see manpage)\n"
-msgstr ""
-" --ask <Nummer> Antworten für Fragen vorherbestimmen (Siehe manpage)\n"
-
-#: src/pacman/pacman.c:156
-#, c-format
-msgid ""
-" --noprogressbar do not show a progress bar when downloading files\n"
-msgstr ""
-" --noprogressbar Keine Fortschrittsanzeige anzeigen, wenn Dateien\n"
-" heruntergeladen werden\n"
-
-#: src/pacman/pacman.c:157
-#, c-format
-msgid ""
-" --noscriptlet do not execute the install scriptlet if there is any\n"
-msgstr ""
-" --noscriptlet Installationskript nicht ausführen, falls vorhanden\n"
-
-#: src/pacman/pacman.c:158
-#, c-format
-msgid " -v, --verbose be verbose\n"
-msgstr " -v, --verbose Sei gesprächig\n"
-
-#: src/pacman/pacman.c:159
-#, c-format
-msgid " -r, --root <path> set an alternate installation root\n"
-msgstr ""
-" -r, --root <Pfad> Setzt ein alternatives Wurzelverzeichnis zur\n"
-" Installation\n"
-
-#: src/pacman/pacman.c:160
-#, c-format
-msgid " -b, --dbpath <path> set an alternate database location\n"
-msgstr " -b, --dbpath <Pfad> Setzt einen anderen Ort für die Datenbank\n"
-
-#: src/pacman/pacman.c:161
-#, c-format
-msgid " --cachedir <dir> set an alternate package cache location\n"
-msgstr " -b, --dbpath <Pfad> Setzt einen anderen Ort für den Paketpuffer\n"
-
-#: src/pacman/pacman.c:174
-#, c-format
-msgid " This program may be freely redistributed under\n"
-msgstr " Dieses Programm ist frei verfügbar unter\n"
-
-#: src/pacman/pacman.c:175
-#, c-format
-msgid " the terms of the GNU General Public License\n"
-msgstr " den Bedingungen der GNU General Public License\n"
-
-#: src/pacman/pacman.c:300
-#, c-format
-msgid "'%s' is not a valid debug level"
-msgstr "'%s' ist kein gültiger Debug-Level"
-
-#: src/pacman/pacman.c:315
-#, c-format
-msgid "'%s' is not a valid cache directory\n"
-msgstr "'%s' ist kein gültiges Paketpuffer-Verzeichnis\n"
-
-#: src/pacman/pacman.c:333
-#, c-format
-msgid "'%s' is not a valid db path\n"
-msgstr "'%s' ist kein gültiger db-Pfad\n"
-
-#: src/pacman/pacman.c:363
-#, c-format
-msgid "'%s' is not a valid root path\n"
-msgstr "'%s' ist kein gültiger root-Pfad\n"
-
-#: src/pacman/pacman.c:390
-msgid "only one operation may be used at a time\n"
-msgstr "Es ist nur eine Operation zur selben Zeit erlaubt\n"
-
-#: src/pacman/pacman.c:436
-msgid "warning: current locale is invalid; using default \"C\" locale"
-msgstr ""
-"Warnung: Die Standard-Ortseinstellung ist ungültig; verwende Standard-\"C\"-"
-"Ortseinstellung"
-
-#: src/pacman/pacman.c:456
-#, c-format
-msgid "failed to initialize alpm library (%s)\n"
-msgstr "Konnte alpm-Bibliothek nicht initialisieren (%s)\n"
-
-#: src/pacman/pacman.c:489
-msgid "you cannot perform this operation unless you are root.\n"
-msgstr "Sie benötigen root-Rechte, um diese Operation ausführen zu können\n"
-
-#: src/pacman/pacman.c:505
-#, c-format
-msgid "failed to parse config (%s)\n"
-msgstr "Konnte Konfiguration (%s) nicht lesen\n"
-
-#: src/pacman/pacman.c:516
-msgid "Targets :"
-msgstr "Pakete :"
-
-#: src/pacman/pacman.c:522
-#, c-format
-msgid "could not register 'local' database (%s)\n"
-msgstr "Kein Zugriff auf die lokale Datenbank (%s)\n"
-
-#: src/pacman/pacman.c:529
-msgid "no targets specified (use -h for help)\n"
-msgstr "Keine Pakete angegeben (benutzen Sie -h für Hilfe)\n"
-
-#: src/pacman/pacman.c:542
-msgid "no operation specified (use -h for help)\n"
-msgstr "Keine Operation angegeben (benutzen Sie -h für Hilfe)\n"
-
-#: src/pacman/query.c:90
-msgid "no file was specified for --owns\n"
-msgstr "Es wurde keine Datei für --owns angegeben\n"
-
-#: src/pacman/query.c:95
-#, c-format
-msgid "failed to read file '%s': %s"
-msgstr "Fehler beim Lesen der Datei '%s': %s"
-
-#: src/pacman/query.c:100
-msgid "cannot determine ownership of a directory"
-msgstr "Konnte den Besitzer eines Verzeichnisses nicht ermitteln"
-
-#: src/pacman/query.c:105
-#, c-format
-msgid "cannot determine real path for '%s': %s"
-msgstr "Konnte den wahren Pfad für '%s' nicht ermitteln: %s"
-
-#: src/pacman/query.c:119
-#, c-format
-msgid "%s is owned by %s %s\n"
-msgstr "%s ist in %s %s enthalten\n"
-
-#: src/pacman/query.c:127
-#, c-format
-msgid "No package owns %s\n"
-msgstr "Kein Paket enthält %s\n"
-
-#: src/pacman/query.c:170 src/pacman/sync.c:453
-msgid "no usable package repositories configured.\n"
-msgstr "Keine brauchbaren Paket-Repositorien konfiguriert.\n"
-
-#: src/pacman/query.c:176
-msgid "Checking for package upgrades..."
-msgstr "Suche nach aktualisierbaren Paketen..."
-
-#: src/pacman/query.c:183
-msgid "no upgrades found"
-msgstr "Keine Aktualisierungen gefunden"
-
-#: src/pacman/query.c:221
-#, c-format
-msgid "group \"%s\" was not found\n"
-msgstr "Gruppe \"%s\" wurde nicht gefunden\n"
-
-#: src/pacman/query.c:232
-msgid "no package file was specified for --file\n"
-msgstr "Es wurde kein Paket für --file angegeben\n"
-
-#: src/pacman/query.c:236
-#, c-format
-msgid "failed to load package '%s' (%s)\n"
-msgstr "Konnte Paket '%s' nicht laden (%s)\n"
-
-#: src/pacman/query.c:273 src/pacman/query.c:305
-#, c-format
-msgid "package \"%s\" not found\n"
-msgstr "Paket \"%s\" nicht gefunden\n"
-
-#: src/pacman/remove.c:61 src/pacman/sync.c:568
-#, c-format
-msgid ":: group %s:\n"
-msgstr ":: Gruppe %s:\n"
-
-#: src/pacman/remove.c:63
-msgid " Remove whole content? [Y/n] "
-msgstr " Gesamten Inhalt entfernen? [J/n] "
-
-#: src/pacman/remove.c:67
-#, c-format
-msgid ":: Remove %s from group %s? [Y/n] "
-msgstr ":: %s aus Gruppe %s entfernen? [J/n] "
-
-#: src/pacman/remove.c:80 src/pacman/sync.c:480 src/pacman/sync.c:529
-#, c-format
-msgid "failed to init transaction (%s)\n"
-msgstr "Konnte den Vorgang (%s) nicht starten\n"
-
-#: src/pacman/remove.c:92
-#, c-format
-msgid "failed to add target '%s' (%s)\n"
-msgstr "Konnte Paket '%s' nicht hinzufügen (%s)\n"
-
-#: src/pacman/remove.c:106
-#, c-format
-msgid ":: %s is required by %s\n"
-msgstr ":: %s wird benötigt von %s\n"
-
-#: src/pacman/remove.c:128 src/pacman/util.c:324
-msgid "Targets:"
-msgstr "Pakete:"
-
-#: src/pacman/remove.c:131
-msgid ""
-"\n"
-"Do you want to remove these packages? [Y/n] "
-msgstr ""
-"\n"
-"Möchten Sie all diese Pakete entfernen? [J/n] "
-
-#: src/pacman/sync.c:115
-msgid "Do you want to remove old packages from cache? [Y/n] "
-msgstr "Möchten Sie alte Pakete aus dem Puffer entfernen? [J/n] "
-
-#: src/pacman/sync.c:117
-msgid "removing old packages from cache... "
-msgstr "Entferne alte Pakete aus dem Puffer... "
-
-#: src/pacman/sync.c:120
-msgid "could not access cache directory\n"
-msgstr "Konnte nicht auf Puffer-Verzeichnis zugreifen\n"
-
-#: src/pacman/sync.c:181
-msgid "Do you want to remove all packages from cache? [Y/n] "
-msgstr "Wollen Sie alle Pakete aus dem Puffer entfernen? [J/n] "
-
-#: src/pacman/sync.c:183
-msgid "removing all packages from cache... "
-msgstr "Entferne alle Pakete aus dem Puffer... "
-
-#: src/pacman/sync.c:186
-msgid "could not remove cache directory\n"
-msgstr "Konnte Puffer-Verzeichnis nicht entfernen\n"
-
-#: src/pacman/sync.c:191
-msgid "could not create new cache directory\n"
-msgstr "Konnte neues Puffer-Verzeichnis nicht erstellen\n"
-
-#: src/pacman/sync.c:218
-#, c-format
-msgid "failed to synchronize %s: %s\n"
-msgstr "Konnte %s nicht synchronisieren: %s\n"
-
-#: src/pacman/sync.c:220
-#, c-format
-msgid "failed to update %s (%s)\n"
-msgstr "Konnte %s nicht aktualisieren (%s)\n"
-
-#: src/pacman/sync.c:223
-#, c-format
-msgid " %s is up to date\n"
-msgstr " %s ist aktuell\n"
-
-#: src/pacman/sync.c:345
-#, c-format
-msgid "repository '%s' does not exist\n"
-msgstr "Repositorium '%s' wurde nicht gefunden.\n"
-
-#: src/pacman/sync.c:361
-#, c-format
-msgid "package '%s' was not found in repository '%s'\n"
-msgstr "Paket '%s' wurde nicht in Repositorium '%s' gefunden.\n"
-
-#: src/pacman/sync.c:381
-#, c-format
-msgid "package '%s' was not found\n"
-msgstr "Paket '%s' wurde nicht gefunden.\n"
-
-#: src/pacman/sync.c:418
-#, c-format
-msgid "repository \"%s\" was not found.\n"
-msgstr "Repositorium \"%s\" wurde nicht gefunden.\n"
-
-#: src/pacman/sync.c:490
-msgid ":: Synchronizing package databases...\n"
-msgstr ":: Synchronisiere Paketdatenbanken...\n"
-
-#: src/pacman/sync.c:491
-msgid "synchronizing package lists"
-msgstr "Synchronisiere Paketlisten"
-
-#: src/pacman/sync.c:493
-msgid "failed to synchronize any databases"
-msgstr "Konnte keine Datenbank synchronisieren"
-
-#: src/pacman/sync.c:499
-msgid ":: Starting full system upgrade...\n"
-msgstr ":: Starte komplette Systemaktualisierung...\n"
-
-#: src/pacman/sync.c:500
-msgid "starting full system upgrade"
-msgstr "Starte komplette Systemaktualisierung"
-
-#: src/pacman/sync.c:518
-msgid ""
-"\n"
-":: pacman has detected a newer version of the \"pacman\" package.\n"
-msgstr ""
-"\n"
-":: pacman hat eine neuere Version von \"pacman\" gefunden.\n"
-
-#: src/pacman/sync.c:519
-msgid ":: It is recommended that you allow pacman to upgrade itself\n"
-msgstr ":: Es wird empfohlen, zuerst pacman zu aktualisieren und\n"
-
-#: src/pacman/sync.c:520
-msgid ":: first, then you can re-run the operation with the newer version.\n"
-msgstr ":: danach Ihre Eingabe mit der neueren Version zu wiederholen.\n"
-
-#: src/pacman/sync.c:522
-msgid ":: Upgrade pacman first? [Y/n] "
-msgstr ":: Zuerst pacman aktualisieren? [J/n] "
-
-#: src/pacman/sync.c:537
-#, c-format
-msgid "pacman: %s\n"
-msgstr "pacman: %s\n"
-
-#: src/pacman/sync.c:572
-msgid ":: Install whole content? [Y/n] "
-msgstr ":: Gesamten Inhalt installieren? [J/n] "
-
-#: src/pacman/sync.c:579
-#, c-format
-msgid ":: Install %s from group %s? [Y/n] "
-msgstr ":: %s aus Gruppe %s installieren? [J/n] "
-
-#: src/pacman/sync.c:603
-#, c-format
-msgid "'%s': not found in sync db\n"
-msgstr "'%s': nicht in Synchronisations-Datenbank gefunden\n"
-
-#: src/pacman/sync.c:621
-msgid "requires"
-msgstr "Benötigt"
-
-#: src/pacman/sync.c:663
-msgid " local database is up to date\n"
-msgstr " Lokale Datenbank ist aktuell\n"
-
-#: src/pacman/sync.c:672
-msgid ""
-"\n"
-"Beginning download...\n"
-msgstr ""
-"\n"
-"Beginne Download ...\n"
-
-#: src/pacman/sync.c:676
-msgid "Proceed with download? [Y/n] "
-msgstr "Download fortsetzen? [J/n] "
-
-#: src/pacman/sync.c:684
-msgid ""
-"\n"
-"Beginning upgrade process...\n"
-msgstr ""
-"\n"
-"Beginne Aktualisierungsprozess...\n"
-
-#: src/pacman/sync.c:688
-msgid "Proceed with installation? [Y/n] "
-msgstr "Installation fortsetzen? [J/n] "
-
-#: src/pacman/trans.c:55
-msgid "checking dependencies... "
-msgstr "Prüfe Abhängigkeiten... "
-
-#: src/pacman/trans.c:59
-msgid "checking for file conflicts... "
-msgstr "Prüfe auf Dateikonflikte... "
-
-#: src/pacman/trans.c:63
-msgid "cleaning up... "
-msgstr "Räume auf... "
-
-#: src/pacman/trans.c:66
-msgid "resolving dependencies... "
-msgstr "Löse Abhängigkeiten auf... "
-
-#: src/pacman/trans.c:69
-msgid "looking for inter-conflicts... "
-msgstr "Suche nach Zwischen-Konflikten... "
-
-#: src/pacman/trans.c:86
-#, c-format
-msgid "installing %s... "
-msgstr "Installiere %s... "
-
-#: src/pacman/trans.c:93
-#, c-format
-msgid "installed %s (%s)"
-msgstr "%s (%s) installiert"
-
-#: src/pacman/trans.c:100
-#, c-format
-msgid "removing %s... "
-msgstr "Entferne %s... "
-
-#: src/pacman/trans.c:107
-#, c-format
-msgid "removed %s (%s)"
-msgstr "%s (%s) entfernt"
-
-#: src/pacman/trans.c:114
-#, c-format
-msgid "upgrading %s... "
-msgstr "Aktualisiere %s... "
-
-#: src/pacman/trans.c:121
-#, c-format
-msgid "upgraded %s (%s -> %s)"
-msgstr "%s (%s -> %s) aktualisiert"
-
-#: src/pacman/trans.c:128
-msgid "checking package integrity... "
-msgstr "Prüfe Paketintegrität... "
-
-#: src/pacman/trans.c:144
-msgid "failed.\n"
-msgstr "fehlgeschlagen.\n"
-
-#: src/pacman/trans.c:151
-#, c-format
-msgid ":: Retrieving packages from %s...\n"
-msgstr ":: Empfange Pakete von %s...\n"
-
-#: src/pacman/trans.c:172
-#, c-format
-msgid ":: %1$s requires %2$s from IgnorePkg. Install %2$s? [Y/n] "
-msgstr ":: %1$s benötigt %2$s aus IgnorePkg. %2$s installieren? [J/n] "
-
-#: src/pacman/trans.c:177
-#, c-format
-msgid ":: %s is in IgnorePkg. Install anyway? [Y/n] "
-msgstr ":: %s ist in IgnorePkg. Trotzdem installieren? [J/n] "
-
-#: src/pacman/trans.c:190
-#, c-format
-msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
-msgstr ":: %s ist als ein HoldPkg gekennzeichnet. Trotzdem entfernen? [J/n] "
-
-#: src/pacman/trans.c:203
-#, c-format
-msgid ":: Replace %s with %s/%s? [Y/n] "
-msgstr ":: %s durch %s/%s ersetzen? [J/n] "
-
-#: src/pacman/trans.c:218
-#, c-format
-msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
-msgstr ":: %s steht im Konflikt mit %s. %s entfernen? [J/n] "
-
-#: src/pacman/trans.c:234
-#, c-format
-msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
-msgstr ":: %s-%s: Lokale Version ist neuer. Trotzdem aktualisieren? [J/n] "
-
-#: src/pacman/trans.c:252
-#, c-format
-msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
-msgstr ":: %s-%s: Lokale Version ist aktuell. Trotzdem aktualisieren? [J/n] "
-
-#: src/pacman/trans.c:270
-#, c-format
-msgid ":: Archive %s is corrupted. Do you want to delete it? [Y/n] "
-msgstr ":: Archiv %s ist beschädigt. Möchten Sie es löschen? [J/n] "
-
-#: src/pacman/trans.c:326
-msgid "installing"
-msgstr "Installiere"
-
-#: src/pacman/trans.c:329
-msgid "upgrading"
-msgstr "Aktualisiere"
-
-#: src/pacman/trans.c:332
-msgid "removing"
-msgstr "Entferne"
-
-#: src/pacman/trans.c:335
-msgid "checking for file conflicts"
-msgstr "Pruefe auf Dateikonflikte"
-
-#: src/pacman/util.c:259
-#, c-format
-msgid "None\n"
-msgstr "Nichts\n"
-
-#: src/pacman/util.c:311
-msgid "Remove:"
-msgstr "Entfernen:"
-
-#: src/pacman/util.c:319
-#, c-format
-msgid ""
-"\n"
-"Total Removed Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Gesamtgröße der zu entfernenden Pakete : %.2f MB\n"
-
-#: src/pacman/util.c:330
-#, c-format
-msgid ""
-"\n"
-"Total Package Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Gesamte Paketgröße: %.2f MB\n"
-
-#: src/pacman/util.c:337
-#, c-format
-msgid "Total Installed Size: %.2f MB\n"
-msgstr "Gesamtgröße der installierten Pakete : %.2f MB\n"
diff --git a/src/pacman/po/en_GB.po b/src/pacman/po/en_GB.po
deleted file mode 100644
index 153fed83..00000000
--- a/src/pacman/po/en_GB.po
+++ /dev/null
@@ -1,1084 +0,0 @@
-# English (British) translations for Pacman package manager package.
-# Copyright (C) 2007 Judd Vinet <jvinet@zeroflux.org>
-# This file is distributed under the same license as the Pacman package manager package.
-# Jeff Bailes <thepizzaking@gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Pacman package manager 3.0.0\n"
-"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-04-28 04:02-0400\n"
-"PO-Revision-Date: 2007-03-07 21:16+1100\n"
-"Last-Translator: Jeff Bailes <thepizzaking@gmail.com>\n"
-"Language-Team: English <en_gb@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: src/pacman/add.c:72 src/pacman/remove.c:82 src/pacman/sync.c:482
-#: src/pacman/sync.c:531
-#, c-format
-msgid ""
-" if you're sure a package manager is not already running,\n"
-" you can remove %s%s\n"
-msgstr ""
-" if you're sure a package manager is not already running,\n"
-" you can remove %s%s\n"
-
-#: src/pacman/add.c:79
-msgid "loading package data... "
-msgstr "loading package data... "
-
-#: src/pacman/add.c:83
-#, c-format
-msgid "failed to add target '%s' (%s)"
-msgstr "failed to add target '%s' (%s)"
-
-#: src/pacman/add.c:88 src/pacman/sync.c:196 src/pacman/trans.c:73
-#: src/pacman/trans.c:80 src/pacman/trans.c:91 src/pacman/trans.c:105
-#: src/pacman/trans.c:119 src/pacman/trans.c:131 src/pacman/trans.c:142
-msgid "done.\n"
-msgstr "done.\n"
-
-#: src/pacman/add.c:95 src/pacman/remove.c:101 src/pacman/sync.c:616
-#, c-format
-msgid "failed to prepare transaction (%s)\n"
-msgstr "failed to prepare transaction (%s)\n"
-
-#: src/pacman/add.c:104
-#, c-format
-msgid ":: %s: requires %s"
-msgstr ":: %s: requires %s"
-
-#: src/pacman/add.c:125 src/pacman/sync.c:643
-#, c-format
-msgid ":: %s: conflicts with %s"
-msgstr ":: %s: conflicts with %s"
-
-#: src/pacman/add.c:134 src/pacman/sync.c:707
-#, c-format
-msgid "%s exists in both '%s' and '%s'\n"
-msgstr "%s exists in both '%s' and '%s'\n"
-
-#: src/pacman/add.c:140 src/pacman/sync.c:713
-#, c-format
-msgid "%s: %s exists in filesystem\n"
-msgstr "%s: %s exists in filesystem\n"
-
-#: src/pacman/add.c:146 src/pacman/sync.c:719 src/pacman/sync.c:725
-msgid ""
-"\n"
-"errors occurred, no packages were upgraded.\n"
-msgstr ""
-"\n"
-"errors occurred, no packages were upgraded.\n"
-
-#: src/pacman/add.c:156 src/pacman/sync.c:650
-#, c-format
-msgid ":: %.1f MB required, have %.1f MB"
-msgstr ":: %.1f MB required, have %.1f MB"
-
-#: src/pacman/add.c:169 src/pacman/remove.c:141 src/pacman/sync.c:700
-#, c-format
-msgid "failed to commit transaction (%s)\n"
-msgstr "failed to commit transaction (%s)\n"
-
-#: src/pacman/add.c:179 src/pacman/remove.c:151 src/pacman/sync.c:524
-#: src/pacman/sync.c:741
-#, c-format
-msgid "failed to release transaction (%s)\n"
-msgstr "failed to release transaction (%s)\n"
-
-#: src/pacman/log.c:63
-#, c-format
-msgid "debug"
-msgstr "debug"
-
-#: src/pacman/log.c:66
-#, c-format
-msgid "error"
-msgstr "error"
-
-#: src/pacman/log.c:69
-#, c-format
-msgid "warning"
-msgstr "warning"
-
-#: src/pacman/log.c:75
-#, c-format
-msgid "function"
-msgstr "function"
-
-#: src/pacman/log.c:194
-msgid "Y"
-msgstr "Y"
-
-#: src/pacman/log.c:194
-msgid "YES"
-msgstr "YES"
-
-#: src/pacman/log.h:30
-msgid "error: "
-msgstr "error: "
-
-#: src/pacman/log.h:34
-msgid "warning: "
-msgstr "warning: "
-
-#: src/pacman/package.c:60
-msgid "Explicitly installed"
-msgstr "Explicitly installed"
-
-#: src/pacman/package.c:63
-msgid "Installed as a dependency for another package"
-msgstr "Installed as a dependency for another package"
-
-#: src/pacman/package.c:66 src/pacman/package.c:90
-msgid "Unknown"
-msgstr "Unknown"
-
-#: src/pacman/package.c:70 src/pacman/package.c:121
-msgid "Description : "
-msgstr "Description : "
-
-#: src/pacman/package.c:73 src/pacman/package.c:127
-#, c-format
-msgid "Name : %s\n"
-msgstr "Name : %s\n"
-
-#: src/pacman/package.c:74 src/pacman/package.c:128
-#, c-format
-msgid "Version : %s\n"
-msgstr "Version : %s\n"
-
-#: src/pacman/package.c:75
-#, c-format
-msgid "URL : %s\n"
-msgstr "URL : %s\n"
-
-#: src/pacman/package.c:76
-msgid "License :"
-msgstr "Licence :"
-
-#: src/pacman/package.c:77 src/pacman/package.c:129
-msgid "Groups :"
-msgstr "Groups :"
-
-#: src/pacman/package.c:78 src/pacman/package.c:130
-msgid "Provides :"
-msgstr "Provides :"
-
-#: src/pacman/package.c:79 src/pacman/package.c:131
-msgid "Depends On :"
-msgstr "Depends On :"
-
-#: src/pacman/package.c:80 src/pacman/package.c:132
-msgid "Removes :"
-msgstr "Removes :"
-
-#: src/pacman/package.c:83
-msgid "Required By :"
-msgstr "Required By :"
-
-#: src/pacman/package.c:85 src/pacman/package.c:133
-msgid "Conflicts With :"
-msgstr "Conflicts With :"
-
-#: src/pacman/package.c:86 src/pacman/package.c:136
-#, c-format
-msgid "Installed Size : %6.2f K\n"
-msgstr "Installed Size : %6.2f K\n"
-
-#: src/pacman/package.c:87
-#, c-format
-msgid "Packager : %s\n"
-msgstr "Packager : %s\n"
-
-#: src/pacman/package.c:88
-#, c-format
-msgid "Architecture : %s\n"
-msgstr "Architecture : %s\n"
-
-#: src/pacman/package.c:89
-#, c-format
-msgid "Build Date : %s %s\n"
-msgstr "Build Date : %s %s\n"
-
-#: src/pacman/package.c:90
-#, c-format
-msgid "Build Type : %s\n"
-msgstr "Build Type : %s\n"
-
-#: src/pacman/package.c:92
-#, c-format
-msgid "Install Date : %s %s\n"
-msgstr "Install Date : %s %s\n"
-
-#: src/pacman/package.c:93
-#, c-format
-msgid "Install Reason : %s\n"
-msgstr "Install Reason : %s\n"
-
-#: src/pacman/package.c:95
-#, c-format
-msgid "Install Script : %s\n"
-msgstr "Install Script : %s\n"
-
-#: src/pacman/package.c:96
-msgid "Yes"
-msgstr "Yes"
-
-#: src/pacman/package.c:96
-msgid "No"
-msgstr "No"
-
-#: src/pacman/package.c:126
-#, c-format
-msgid "Repository : %s\n"
-msgstr "Repository : %s\n"
-
-#: src/pacman/package.c:134
-msgid "Replaces :"
-msgstr "Replaces :"
-
-#: src/pacman/package.c:135
-#, c-format
-msgid "Download Size : %6.2f K\n"
-msgstr "Download Size : %6.2f K\n"
-
-#: src/pacman/package.c:144
-#, c-format
-msgid "MD5 Sum : %s"
-msgstr "MD5 Sum : %s"
-
-#: src/pacman/package.c:147
-#, c-format
-msgid "SHA1 Sum : %s"
-msgstr "SHA1 Sum : %s"
-
-#: src/pacman/package.c:158
-#, c-format
-msgid "Backup Files:\n"
-msgstr "Backup Files:\n"
-
-#: src/pacman/package.c:180
-#, c-format
-msgid "error calculating checksums for %s\n"
-msgstr "error calculating checksums for %s\n"
-
-#: src/pacman/package.c:193
-#, c-format
-msgid "MODIFIED\t%s\n"
-msgstr "MODIFIED\t%s\n"
-
-#: src/pacman/package.c:195
-#, c-format
-msgid "Not Modified\t%s\n"
-msgstr "Not Modified\t%s\n"
-
-#: src/pacman/package.c:200
-#, c-format
-msgid "MISSING\t\t%s\n"
-msgstr "MISSING\t\t%s\n"
-
-#: src/pacman/package.c:206
-#, c-format
-msgid "(none)\n"
-msgstr "(none)\n"
-
-#: src/pacman/package.c:246
-#, c-format
-msgid "No changelog available for '%s'.\n"
-msgstr "No changelog available for '%s'.\n"
-
-#: src/pacman/pacman.c:90
-#, c-format
-msgid "usage: %s {-h --help}\n"
-msgstr "usage: %s {-h --help}\n"
-
-#: src/pacman/pacman.c:91
-#, c-format
-msgid " %s {-V --version}\n"
-msgstr " %s {-V --version}\n"
-
-#: src/pacman/pacman.c:92
-#, c-format
-msgid " %s {-A --add} [options] <file>\n"
-msgstr " %s {-A --add} [options] <file>\n"
-
-#: src/pacman/pacman.c:93
-#, c-format
-msgid " %s {-F --freshen} [options] <file>\n"
-msgstr " %s {-F --freshen} [options] <file>\n"
-
-#: src/pacman/pacman.c:94
-#, c-format
-msgid " %s {-Q --query} [options] [package]\n"
-msgstr " %s {-Q --query} [options] [package]\n"
-
-#: src/pacman/pacman.c:95
-#, c-format
-msgid " %s {-R --remove} [options] <package>\n"
-msgstr " %s {-R --remove} [options] <package>\n"
-
-#: src/pacman/pacman.c:96
-#, c-format
-msgid " %s {-S --sync} [options] [package]\n"
-msgstr " %s {-S --sync} [options] [package]\n"
-
-#: src/pacman/pacman.c:97
-#, c-format
-msgid " %s {-U --upgrade} [options] <file>\n"
-msgstr " %s {-U --upgrade} [options] <file>\n"
-
-#: src/pacman/pacman.c:98
-#, c-format
-msgid ""
-"\n"
-"use '%s --help' with other options for more syntax\n"
-msgstr ""
-"\n"
-"use '%s --help' with other options for more syntax\n"
-
-#: src/pacman/pacman.c:101
-#, c-format
-msgid "usage: %s {-A --add} [options] <file>\n"
-msgstr "usage: %s {-A --add} [options] <file>\n"
-
-#: src/pacman/pacman.c:102 src/pacman/pacman.c:107 src/pacman/pacman.c:119
-#: src/pacman/pacman.c:124 src/pacman/pacman.c:138
-#, c-format
-msgid "options:\n"
-msgstr "options:\n"
-
-#: src/pacman/pacman.c:103 src/pacman/pacman.c:109 src/pacman/pacman.c:120
-#: src/pacman/pacman.c:140
-#, c-format
-msgid " -d, --nodeps skip dependency checks\n"
-msgstr " -d, --nodeps skip dependency checks\n"
-
-#: src/pacman/pacman.c:104 src/pacman/pacman.c:121 src/pacman/pacman.c:142
-#, c-format
-msgid " -f, --force force install, overwrite conflicting files\n"
-msgstr " -f, --force force install, overwrite conflicting files\n"
-
-#: src/pacman/pacman.c:106
-#, c-format
-msgid "usage: %s {-R --remove} [options] <package>\n"
-msgstr "usage: %s {-R --remove} [options] <package>\n"
-
-#: src/pacman/pacman.c:108
-#, c-format
-msgid ""
-" -c, --cascade remove packages and all packages that depend on them\n"
-msgstr ""
-" -c, --cascade remove packages and all packages that depend on them\n"
-
-#: src/pacman/pacman.c:110
-#, c-format
-msgid ""
-" -k, --dbonly only remove database entry, do not remove files\n"
-msgstr ""
-" -k, --dbonly only remove database entry, do not remove files\n"
-
-#: src/pacman/pacman.c:111
-#, c-format
-msgid " -n, --nosave remove configuration files as well\n"
-msgstr " -n, --nosave remove configuration files as well\n"
-
-#: src/pacman/pacman.c:112
-#, c-format
-msgid ""
-" -s, --recursive remove dependencies also (that won't break packages)\n"
-msgstr ""
-" -s, --recursive remove dependencies also (that won't break packages)\n"
-
-#: src/pacman/pacman.c:115
-#, c-format
-msgid "usage: %s {-F --freshen} [options] <file>\n"
-msgstr "usage: %s {-F --freshen} [options] <file>\n"
-
-#: src/pacman/pacman.c:117
-#, c-format
-msgid "usage: %s {-U --upgrade} [options] <file>\n"
-msgstr "usage: %s {-U --upgrade} [options] <file>\n"
-
-#: src/pacman/pacman.c:123
-#, c-format
-msgid "usage: %s {-Q --query} [options] [package]\n"
-msgstr "usage: %s {-Q --query} [options] [package]\n"
-
-#: src/pacman/pacman.c:125
-#, c-format
-msgid " -c, --changelog view the changelog of a package\n"
-msgstr " -c, --changelog view the changelog of a package\n"
-
-#: src/pacman/pacman.c:126
-#, c-format
-msgid ""
-" -e, --orphans list all packages installed as dependencies but no "
-"longer\n"
-msgstr ""
-" -e, --orphans list all packages installed as dependencies but no "
-"longer\n"
-
-#: src/pacman/pacman.c:127
-#, c-format
-msgid " required by any package\n"
-msgstr " required by any package\n"
-
-#: src/pacman/pacman.c:128 src/pacman/pacman.c:143
-#, c-format
-msgid " -g, --groups view all members of a package group\n"
-msgstr " -g, --groups view all members of a package group\n"
-
-#: src/pacman/pacman.c:129 src/pacman/pacman.c:144
-#, c-format
-msgid " -i, --info view package information\n"
-msgstr " -i, --info view package information\n"
-
-#: src/pacman/pacman.c:130
-#, c-format
-msgid " -l, --list list the contents of the queried package\n"
-msgstr " -l, --list list the contents of the queried package\n"
-
-#: src/pacman/pacman.c:131
-#, c-format
-msgid ""
-" -m, --foreign list installed packages not found in sync db(s)\n"
-msgstr ""
-" -m, --foreign list installed packages not found in sync db(s)\n"
-"(s)\n"
-
-#: src/pacman/pacman.c:132
-#, c-format
-msgid " -o, --owns <file> query the package that owns <file>\n"
-msgstr " -o, --owns <file> query the package that owns <file>\n"
-
-#: src/pacman/pacman.c:133
-#, c-format
-msgid " -p, --file <package> query a package file instead of the database\n"
-msgstr " -p, --file <package> query a package file instead of the database\n"
-
-#: src/pacman/pacman.c:134
-#, c-format
-msgid ""
-" -s, --search <regex> search locally-installed packages for matching "
-"strings\n"
-msgstr ""
-" -s, --search <regex> search locally-installed packages for matching "
-"strings\n"
-
-#: src/pacman/pacman.c:135
-#, c-format
-msgid " -u, --upgrades list all packages that can be upgraded\n"
-msgstr " -u, --upgrades list all packages that can be upgraded\n"
-
-#: src/pacman/pacman.c:137
-#, c-format
-msgid "usage: %s {-S --sync} [options] [package]\n"
-msgstr "usage: %s {-S --sync} [options] [package]\n"
-
-#: src/pacman/pacman.c:139
-#, c-format
-msgid ""
-" -c, --clean remove old packages from cache directory (-cc for "
-"all)\n"
-msgstr ""
-" -c, --clean remove old packages from cache directory (-cc for "
-"all)\n"
-
-#: src/pacman/pacman.c:141
-#, c-format
-msgid " -e, --dependsonly install dependencies only\n"
-msgstr " -e, --dependsonly install dependencies only\n"
-
-#: src/pacman/pacman.c:145
-#, c-format
-msgid " -l, --list <repo> view a list of packages in a repo\n"
-msgstr ""
-
-#: src/pacman/pacman.c:146
-#, c-format
-msgid ""
-" -p, --print-uris print out URIs for given packages and their "
-"dependencies\n"
-msgstr ""
-" -p, --print-uris print out URIs for given packages and their "
-"dependencies\n"
-
-#: src/pacman/pacman.c:147
-#, c-format
-msgid ""
-" -s, --search <regex> search remote repositories for matching strings\n"
-msgstr ""
-" -s, --search <regex> search remote repositories for matching strings\n"
-
-#: src/pacman/pacman.c:148
-#, c-format
-msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
-msgstr " -u, --sysupgrade upgrade all packages that are out of date\n"
-
-#: src/pacman/pacman.c:149
-#, c-format
-msgid ""
-" -w, --downloadonly download packages but do not install/upgrade "
-"anything\n"
-msgstr ""
-" -w, --downloadonly download packages but do not install/upgrade "
-"anything\n"
-
-#: src/pacman/pacman.c:150
-#, c-format
-msgid ""
-" -y, --refresh download fresh package databases from the server\n"
-msgstr ""
-" -y, --refresh download fresh package databases from the server\n"
-
-#: src/pacman/pacman.c:151
-#, c-format
-msgid ""
-" --ignore <pkg> ignore a package upgrade (can be used more than "
-"once)\n"
-msgstr ""
-" --ignore <pkg> ignore a package upgrade (can be used more than "
-"once)\n"
-
-#: src/pacman/pacman.c:153
-#, c-format
-msgid " --config <path> set an alternate configuration file\n"
-msgstr " --config <path> set an alternate configuration file\n"
-
-#: src/pacman/pacman.c:154
-#, c-format
-msgid " --noconfirm do not ask for any confirmation\n"
-msgstr " --noconfirm do not ask for any confirmation\n"
-
-#: src/pacman/pacman.c:155
-#, c-format
-msgid ""
-" --ask <number> pre-specify answers for questions (see manpage)\n"
-msgstr ""
-" --ask <number> pre-specify answers for questions (see manpage)\n"
-
-#: src/pacman/pacman.c:156
-#, c-format
-msgid ""
-" --noprogressbar do not show a progress bar when downloading files\n"
-msgstr ""
-" --noprogressbar do not show a progress bar when downloading files\n"
-
-#: src/pacman/pacman.c:157
-#, c-format
-msgid ""
-" --noscriptlet do not execute the install scriptlet if there is any\n"
-msgstr ""
-" --noscriptlet do not execute the install scriptlet if there is any\n"
-
-#: src/pacman/pacman.c:158
-#, c-format
-msgid " -v, --verbose be verbose\n"
-msgstr " -v, --verbose be verbose\n"
-
-#: src/pacman/pacman.c:159
-#, c-format
-msgid " -r, --root <path> set an alternate installation root\n"
-msgstr " -r, --root <path> set an alternate installation root\n"
-
-#: src/pacman/pacman.c:160
-#, c-format
-msgid " -b, --dbpath <path> set an alternate database location\n"
-msgstr " -b, --dbpath <path> set an alternate database location\n"
-
-#: src/pacman/pacman.c:161
-#, c-format
-msgid " --cachedir <dir> set an alternate package cache location\n"
-msgstr " --cachedir <dir> set an alternate package cache location\n"
-
-#: src/pacman/pacman.c:174
-#, c-format
-msgid " This program may be freely redistributed under\n"
-msgstr ""
-" This program may be freely redistributed under\n"
-
-#: src/pacman/pacman.c:175
-#, c-format
-msgid " the terms of the GNU General Public License\n"
-msgstr " the terms of the GNU General Public License\n"
-
-#: src/pacman/pacman.c:300
-#, c-format
-msgid "'%s' is not a valid debug level"
-msgstr "'%s' is not a valid debug level"
-
-#: src/pacman/pacman.c:315
-#, c-format
-msgid "'%s' is not a valid cache directory\n"
-msgstr "'%s' is not a valid cache directory\n"
-
-#: src/pacman/pacman.c:333
-#, c-format
-msgid "'%s' is not a valid db path\n"
-msgstr "'%s' is not a valid db path\n"
-
-#: src/pacman/pacman.c:363
-#, c-format
-msgid "'%s' is not a valid root path\n"
-msgstr "'%s' is not a valid root path\n"
-
-#: src/pacman/pacman.c:390
-msgid "only one operation may be used at a time\n"
-msgstr "only one operation may be used at a time\n"
-
-#: src/pacman/pacman.c:436
-msgid "warning: current locale is invalid; using default \"C\" locale"
-msgstr "warning: current locale is invalid; using default \"C\" locale"
-
-#: src/pacman/pacman.c:456
-#, c-format
-msgid "failed to initialize alpm library (%s)\n"
-msgstr "failed to initialise alpm library (%s)\n"
-
-#: src/pacman/pacman.c:489
-msgid "you cannot perform this operation unless you are root.\n"
-msgstr "you cannot perform this operation unless you are root.\n"
-
-#: src/pacman/pacman.c:505
-#, c-format
-msgid "failed to parse config (%s)\n"
-msgstr "failed to parse config (%s)\n"
-
-#: src/pacman/pacman.c:516
-msgid "Targets :"
-msgstr "Targets :"
-
-#: src/pacman/pacman.c:522
-#, c-format
-msgid "could not register 'local' database (%s)\n"
-msgstr "could not register 'local' database (%s)\n"
-
-#: src/pacman/pacman.c:529
-msgid "no targets specified (use -h for help)\n"
-msgstr "no targets specified (use -h for help)\n"
-
-#: src/pacman/pacman.c:542
-msgid "no operation specified (use -h for help)\n"
-msgstr "no operation specified (use -h for help)\n"
-
-#: src/pacman/query.c:90
-msgid "no file was specified for --owns\n"
-msgstr "no file was specified for --owns\n"
-
-#: src/pacman/query.c:95
-#, c-format
-msgid "failed to read file '%s': %s"
-msgstr "failed to read file '%s': %s"
-
-#: src/pacman/query.c:100
-msgid "cannot determine ownership of a directory"
-msgstr ""
-
-#: src/pacman/query.c:105
-#, c-format
-msgid "cannot determine real path for '%s': %s"
-msgstr ""
-
-#: src/pacman/query.c:119
-#, c-format
-msgid "%s is owned by %s %s\n"
-msgstr "%s is owned by %s %s\n"
-
-#: src/pacman/query.c:127
-#, c-format
-msgid "No package owns %s\n"
-msgstr "No package owns %s\n"
-
-#: src/pacman/query.c:170 src/pacman/sync.c:453
-msgid "no usable package repositories configured.\n"
-msgstr "no usable package repositories configured.\n"
-
-#: src/pacman/query.c:176
-msgid "Checking for package upgrades..."
-msgstr "Checking for package upgrades..."
-
-#: src/pacman/query.c:183
-msgid "no upgrades found"
-msgstr "no upgrades found"
-
-#: src/pacman/query.c:221
-#, c-format
-msgid "group \"%s\" was not found\n"
-msgstr "group \"%s\" was not found\n"
-
-#: src/pacman/query.c:232
-msgid "no package file was specified for --file\n"
-msgstr "no package file was specified for --file\n"
-
-#: src/pacman/query.c:236
-#, c-format
-msgid "failed to load package '%s' (%s)\n"
-msgstr "failed to load package '%s' (%s)\n"
-
-#: src/pacman/query.c:273 src/pacman/query.c:305
-#, c-format
-msgid "package \"%s\" not found\n"
-msgstr "package \"%s\" not found\n"
-
-#: src/pacman/remove.c:61 src/pacman/sync.c:568
-#, c-format
-msgid ":: group %s:\n"
-msgstr ":: group %s:\n"
-
-#: src/pacman/remove.c:63
-msgid " Remove whole content? [Y/n] "
-msgstr " Remove whole content? [Y/n] "
-
-#: src/pacman/remove.c:67
-#, c-format
-msgid ":: Remove %s from group %s? [Y/n] "
-msgstr ":: Remove %s from group %s? [Y/n] "
-
-#: src/pacman/remove.c:80 src/pacman/sync.c:480 src/pacman/sync.c:529
-#, c-format
-msgid "failed to init transaction (%s)\n"
-msgstr "failed to init transaction (%s)\n"
-
-#: src/pacman/remove.c:92
-#, c-format
-msgid "failed to add target '%s' (%s)\n"
-msgstr "failed to add target '%s' (%s)\n"
-
-#: src/pacman/remove.c:106
-#, c-format
-msgid ":: %s is required by %s\n"
-msgstr ":: %s is required by %s\n"
-
-#: src/pacman/remove.c:128 src/pacman/util.c:324
-msgid "Targets:"
-msgstr "Targets:"
-
-#: src/pacman/remove.c:131
-msgid ""
-"\n"
-"Do you want to remove these packages? [Y/n] "
-msgstr ""
-"\n"
-"Do you want to remove these packages? [Y/n] "
-
-#: src/pacman/sync.c:115
-msgid "Do you want to remove old packages from cache? [Y/n] "
-msgstr "Do you want to remove old packages from cache? [Y/n] "
-
-#: src/pacman/sync.c:117
-msgid "removing old packages from cache... "
-msgstr "removing old packages from cache... "
-
-#: src/pacman/sync.c:120
-msgid "could not access cache directory\n"
-msgstr "could not access cache directory\n"
-
-#: src/pacman/sync.c:181
-msgid "Do you want to remove all packages from cache? [Y/n] "
-msgstr "Do you want to remove all packages from cache? [Y/n] "
-
-#: src/pacman/sync.c:183
-msgid "removing all packages from cache... "
-msgstr "removing all packages from cache... "
-
-#: src/pacman/sync.c:186
-msgid "could not remove cache directory\n"
-msgstr "could not remove cache directory\n"
-
-#: src/pacman/sync.c:191
-msgid "could not create new cache directory\n"
-msgstr "could not create new cache directory\n"
-
-#: src/pacman/sync.c:218
-#, c-format
-msgid "failed to synchronize %s: %s\n"
-msgstr "failed to synchronise %s: %s\n"
-
-#: src/pacman/sync.c:220
-#, c-format
-msgid "failed to update %s (%s)\n"
-msgstr "failed to update %s (%s)\n"
-
-#: src/pacman/sync.c:223
-#, c-format
-msgid " %s is up to date\n"
-msgstr " %s is up to date\n"
-
-#: src/pacman/sync.c:345
-#, c-format
-msgid "repository '%s' does not exist\n"
-msgstr "repository '%s' does not exist\n"
-
-#: src/pacman/sync.c:361
-#, c-format
-msgid "package '%s' was not found in repository '%s'\n"
-msgstr "package '%s' was not found in repository '%s'\n"
-
-#: src/pacman/sync.c:381
-#, c-format
-msgid "package '%s' was not found\n"
-msgstr "package '%s' was not found\n"
-
-#: src/pacman/sync.c:418
-#, c-format
-msgid "repository \"%s\" was not found.\n"
-msgstr "repository \"%s\" was not found.\n"
-
-#: src/pacman/sync.c:490
-msgid ":: Synchronizing package databases...\n"
-msgstr ":: Synchronising package databases...\n"
-
-#: src/pacman/sync.c:491
-msgid "synchronizing package lists"
-msgstr "synchronising package lists"
-
-#: src/pacman/sync.c:493
-msgid "failed to synchronize any databases"
-msgstr "failed to synchronise any databases"
-
-#: src/pacman/sync.c:499
-msgid ":: Starting full system upgrade...\n"
-msgstr ":: Starting full system upgrade...\n"
-
-#: src/pacman/sync.c:500
-msgid "starting full system upgrade"
-msgstr "starting full system upgrade"
-
-#: src/pacman/sync.c:518
-msgid ""
-"\n"
-":: pacman has detected a newer version of the \"pacman\" package.\n"
-msgstr ""
-"\n"
-":: pacman has detected a newer version of the \"pacman\" package.\n"
-
-#: src/pacman/sync.c:519
-msgid ":: It is recommended that you allow pacman to upgrade itself\n"
-msgstr ":: It is recommended that you allow pacman to upgrade itself\n"
-
-#: src/pacman/sync.c:520
-msgid ":: first, then you can re-run the operation with the newer version.\n"
-msgstr ":: first, then you can re-run the operation with the newer version.\n"
-
-#: src/pacman/sync.c:522
-msgid ":: Upgrade pacman first? [Y/n] "
-msgstr ":: Upgrade pacman first? [Y/n] "
-
-#: src/pacman/sync.c:537
-#, c-format
-msgid "pacman: %s\n"
-msgstr "pacman: %s\n"
-
-#: src/pacman/sync.c:572
-msgid ":: Install whole content? [Y/n] "
-msgstr ":: Install whole content? [Y/n] "
-
-#: src/pacman/sync.c:579
-#, c-format
-msgid ":: Install %s from group %s? [Y/n] "
-msgstr ":: Install %s from group %s? [Y/n] "
-
-#: src/pacman/sync.c:603
-#, c-format
-msgid "'%s': not found in sync db\n"
-msgstr "'%s': not found in sync db\n"
-
-#: src/pacman/sync.c:621
-msgid "requires"
-msgstr "requires"
-
-#: src/pacman/sync.c:663
-msgid " local database is up to date\n"
-msgstr " local database is up to date\n"
-
-#: src/pacman/sync.c:672
-msgid ""
-"\n"
-"Beginning download...\n"
-msgstr ""
-"\n"
-"Beginning download...\n"
-
-#: src/pacman/sync.c:676
-msgid "Proceed with download? [Y/n] "
-msgstr "Proceed with download? [Y/n] "
-
-#: src/pacman/sync.c:684
-msgid ""
-"\n"
-"Beginning upgrade process...\n"
-msgstr ""
-"\n"
-"Beginning upgrade process...\n"
-
-#: src/pacman/sync.c:688
-msgid "Proceed with installation? [Y/n] "
-msgstr "Proceed with installation? [Y/n] "
-
-#: src/pacman/trans.c:55
-msgid "checking dependencies... "
-msgstr "checking dependencies... "
-
-#: src/pacman/trans.c:59
-msgid "checking for file conflicts... "
-msgstr "checking for file conflicts... "
-
-#: src/pacman/trans.c:63
-msgid "cleaning up... "
-msgstr "cleaning up... "
-
-#: src/pacman/trans.c:66
-msgid "resolving dependencies... "
-msgstr "resolving dependencies... "
-
-#: src/pacman/trans.c:69
-msgid "looking for inter-conflicts... "
-msgstr "looking for inter-conflicts... "
-
-#: src/pacman/trans.c:86
-#, c-format
-msgid "installing %s... "
-msgstr "installing %s... "
-
-#: src/pacman/trans.c:93
-#, c-format
-msgid "installed %s (%s)"
-msgstr "installed %s (%s)"
-
-#: src/pacman/trans.c:100
-#, c-format
-msgid "removing %s... "
-msgstr "removing %s... "
-
-#: src/pacman/trans.c:107
-#, c-format
-msgid "removed %s (%s)"
-msgstr "removed %s (%s)"
-
-#: src/pacman/trans.c:114
-#, c-format
-msgid "upgrading %s... "
-msgstr "upgrading %s... "
-
-#: src/pacman/trans.c:121
-#, c-format
-msgid "upgraded %s (%s -> %s)"
-msgstr "upgraded %s (%s -> %s)"
-
-#: src/pacman/trans.c:128
-msgid "checking package integrity... "
-msgstr "checking package integrity... "
-
-#: src/pacman/trans.c:144
-msgid "failed.\n"
-msgstr "failed.\n"
-
-#: src/pacman/trans.c:151
-#, c-format
-msgid ":: Retrieving packages from %s...\n"
-msgstr ":: Retrieving packages from %s...\n"
-
-#: src/pacman/trans.c:172
-#, c-format
-msgid ":: %1$s requires %2$s from IgnorePkg. Install %2$s? [Y/n] "
-msgstr ":: %1$s requires %2$s from IgnorePkg. Install %2$s? [Y/n] "
-
-#: src/pacman/trans.c:177
-#, c-format
-msgid ":: %s is in IgnorePkg. Install anyway? [Y/n] "
-msgstr ":: %s is in IgnorePkg. Install anyway? [Y/n] "
-
-#: src/pacman/trans.c:190
-#, c-format
-msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
-msgstr ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
-
-#: src/pacman/trans.c:203
-#, c-format
-msgid ":: Replace %s with %s/%s? [Y/n] "
-msgstr ":: Replace %s with %s/%s? [Y/n] "
-
-#: src/pacman/trans.c:218
-#, c-format
-msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
-msgstr ":: %s conflicts with %s. Remove %s? [Y/n] "
-
-#: src/pacman/trans.c:234
-#, c-format
-msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
-msgstr ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
-
-#: src/pacman/trans.c:252
-#, c-format
-msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
-msgstr ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
-
-#: src/pacman/trans.c:270
-#, c-format
-msgid ":: Archive %s is corrupted. Do you want to delete it? [Y/n] "
-msgstr ":: Archive %s is corrupted. Do you want to delete it? [Y/n] "
-
-#: src/pacman/trans.c:326
-msgid "installing"
-msgstr "installing"
-
-#: src/pacman/trans.c:329
-msgid "upgrading"
-msgstr "upgrading"
-
-#: src/pacman/trans.c:332
-msgid "removing"
-msgstr "removing"
-
-#: src/pacman/trans.c:335
-msgid "checking for file conflicts"
-msgstr "checking for file conflicts"
-
-#: src/pacman/util.c:259
-#, c-format
-msgid "None\n"
-msgstr "None\n"
-
-#: src/pacman/util.c:311
-msgid "Remove:"
-msgstr "Remove:"
-
-#: src/pacman/util.c:319
-#, c-format
-msgid ""
-"\n"
-"Total Removed Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Total Removed Size: %.2f MB\n"
-
-#: src/pacman/util.c:330
-#, c-format
-msgid ""
-"\n"
-"Total Package Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Total Package Size: %.2f MB\n"
-
-#: src/pacman/util.c:337
-#, c-format
-msgid "Total Installed Size: %.2f MB\n"
-msgstr "Total Installed Size: %.2f MB\n"
-
-#~ msgid "requires: %s"
-#~ msgstr "requires: %s"
-
-#~ msgid "'%s': %s\n"
-#~ msgstr "'%s': %s\n"
-
-#~ msgid "Installed Size : %ld K\n"
-#~ msgstr "Installed Size : %ld K\n"
-
-#~ msgid "is required by"
-#~ msgstr "is required by"
diff --git a/src/pacman/po/es.po b/src/pacman/po/es.po
deleted file mode 100644
index 3ee3f6e3..00000000
--- a/src/pacman/po/es.po
+++ /dev/null
@@ -1,1124 +0,0 @@
-# translation of es.fix.po to
-# Spanish translation for pacman package.
-# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
-# This file is distributed under the same license as the Pacman package manager package.
-#
-# Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar>, 2007.
-# Juan Pablo González Tognarelli <jotapesan@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: es.fix\n"
-"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-04-28 04:02-0400\n"
-"PO-Revision-Date: 2007-04-29 11:20-0400\n"
-"Last-Translator: Juan Pablo González Tognarelli <jotapesan@gmail.com>\n"
-"Language-Team: <es@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Spanish\n"
-"X-Poedit-Country: CHILE\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: src/pacman/add.c:72 src/pacman/remove.c:82 src/pacman/sync.c:482
-#: src/pacman/sync.c:531
-#, c-format
-msgid ""
-" if you're sure a package manager is not already running,\n"
-" you can remove %s%s\n"
-msgstr ""
-" Si está seguro que no se está ejecutando pacman,\n"
-" puede eliminar %s%s\n"
-
-#: src/pacman/add.c:79
-msgid "loading package data... "
-msgstr "Cargando información del paquete..."
-
-#: src/pacman/add.c:83
-#, c-format
-msgid "failed to add target '%s' (%s)"
-msgstr "fallo al procesar '%s' (%s)"
-
-#: src/pacman/add.c:88 src/pacman/sync.c:196 src/pacman/trans.c:73
-#: src/pacman/trans.c:80 src/pacman/trans.c:91 src/pacman/trans.c:105
-#: src/pacman/trans.c:119 src/pacman/trans.c:131 src/pacman/trans.c:142
-msgid "done.\n"
-msgstr "Hecho.\n"
-
-#: src/pacman/add.c:95 src/pacman/remove.c:101 src/pacman/sync.c:616
-#, c-format
-msgid "failed to prepare transaction (%s)\n"
-msgstr "fallo al preparar operación (%s)\n"
-
-#: src/pacman/add.c:104
-#, c-format
-msgid ":: %s: requires %s"
-msgstr ":: %s: necesita %s"
-
-#: src/pacman/add.c:125 src/pacman/sync.c:643
-#, c-format
-msgid ":: %s: conflicts with %s"
-msgstr ":: %s: tiene conflictos con %s"
-
-#: src/pacman/add.c:134 src/pacman/sync.c:707
-#, c-format
-msgid "%s exists in both '%s' and '%s'\n"
-msgstr "%s existe en '%s' y '%s'\n"
-
-#: src/pacman/add.c:140 src/pacman/sync.c:713
-#, c-format
-msgid "%s: %s exists in filesystem\n"
-msgstr "%s: %s existe en el sistema de archivos\n"
-
-#: src/pacman/add.c:146 src/pacman/sync.c:719 src/pacman/sync.c:725
-#, fuzzy
-msgid ""
-"\n"
-"errors occurred, no packages were upgraded.\n"
-msgstr "ocurrieron errores, los paquetes no fueron actualizados\n"
-
-#: src/pacman/add.c:156 src/pacman/sync.c:650
-#, c-format
-msgid ":: %.1f MB required, have %.1f MB"
-msgstr ""
-
-#: src/pacman/add.c:169 src/pacman/remove.c:141 src/pacman/sync.c:700
-#, fuzzy, c-format
-msgid "failed to commit transaction (%s)\n"
-msgstr "no se pudo iniciar la operación (%s)\n"
-
-#: src/pacman/add.c:179 src/pacman/remove.c:151 src/pacman/sync.c:524
-#: src/pacman/sync.c:741
-#, fuzzy, c-format
-msgid "failed to release transaction (%s)\n"
-msgstr "fallo al preparar operación (%s)\n"
-
-#: src/pacman/log.c:63
-#, c-format
-msgid "debug"
-msgstr ""
-
-#: src/pacman/log.c:66
-#, c-format
-msgid "error"
-msgstr ""
-
-#: src/pacman/log.c:69
-#, c-format
-msgid "warning"
-msgstr ""
-
-#: src/pacman/log.c:75
-#, c-format
-msgid "function"
-msgstr ""
-
-#: src/pacman/log.c:194
-msgid "Y"
-msgstr ""
-
-#: src/pacman/log.c:194
-msgid "YES"
-msgstr ""
-
-#: src/pacman/log.h:30
-msgid "error: "
-msgstr ""
-
-#: src/pacman/log.h:34
-msgid "warning: "
-msgstr ""
-
-#: src/pacman/package.c:60
-msgid "Explicitly installed"
-msgstr ""
-
-#: src/pacman/package.c:63
-msgid "Installed as a dependency for another package"
-msgstr ""
-
-#: src/pacman/package.c:66 src/pacman/package.c:90
-msgid "Unknown"
-msgstr ""
-
-#: src/pacman/package.c:70 src/pacman/package.c:121
-msgid "Description : "
-msgstr ""
-
-#: src/pacman/package.c:73 src/pacman/package.c:127
-#, fuzzy, c-format
-msgid "Name : %s\n"
-msgstr "Nombre : %s\n"
-
-#: src/pacman/package.c:74 src/pacman/package.c:128
-#, c-format
-msgid "Version : %s\n"
-msgstr "Versión : %s\n"
-
-#: src/pacman/package.c:75
-#, c-format
-msgid "URL : %s\n"
-msgstr "URL : %s\n"
-
-#: src/pacman/package.c:76
-msgid "License :"
-msgstr "Licencia :"
-
-#: src/pacman/package.c:77 src/pacman/package.c:129
-msgid "Groups :"
-msgstr "Grupos :"
-
-#: src/pacman/package.c:78 src/pacman/package.c:130
-msgid "Provides :"
-msgstr "Provee :"
-
-#: src/pacman/package.c:79 src/pacman/package.c:131
-msgid "Depends On :"
-msgstr "Depende De :"
-
-#: src/pacman/package.c:80 src/pacman/package.c:132
-msgid "Removes :"
-msgstr "Elimina :"
-
-#: src/pacman/package.c:83
-msgid "Required By :"
-msgstr "Requerido por :"
-
-#: src/pacman/package.c:85 src/pacman/package.c:133
-msgid "Conflicts With :"
-msgstr "Conflictos con :"
-
-#: src/pacman/package.c:86 src/pacman/package.c:136
-#, c-format
-msgid "Installed Size : %6.2f K\n"
-msgstr "Tamaño instalado : %6.2f K\n"
-
-#: src/pacman/package.c:87
-#, c-format
-msgid "Packager : %s\n"
-msgstr "Empaquetador : %s\n"
-
-#: src/pacman/package.c:88
-#, c-format
-msgid "Architecture : %s\n"
-msgstr "Arquitectura : %s\n"
-
-#: src/pacman/package.c:89
-#, c-format
-msgid "Build Date : %s %s\n"
-msgstr "Fecha de compilación : %s %s\n"
-
-#: src/pacman/package.c:90
-#, c-format
-msgid "Build Type : %s\n"
-msgstr "Tipo de compilación : %s\n"
-
-#: src/pacman/package.c:92
-#, c-format
-msgid "Install Date : %s %s\n"
-msgstr "Fecha de instalación : %s %s\n"
-
-#: src/pacman/package.c:93
-#, c-format
-msgid "Install Reason : %s\n"
-msgstr "Tipo de instalación : %s\n"
-
-#: src/pacman/package.c:95
-#, c-format
-msgid "Install Script : %s\n"
-msgstr "Script de instalación: %s\n"
-
-#: src/pacman/package.c:96
-msgid "Yes"
-msgstr "Si"
-
-#: src/pacman/package.c:96
-msgid "No"
-msgstr "No"
-
-#: src/pacman/package.c:126
-#, c-format
-msgid "Repository : %s\n"
-msgstr "Repositorio : %s\n"
-
-#: src/pacman/package.c:134
-msgid "Replaces :"
-msgstr "Reemplaza :"
-
-#: src/pacman/package.c:135
-#, c-format
-msgid "Download Size : %6.2f K\n"
-msgstr "Tamaño de la descarga : %6.2f K\n"
-
-#: src/pacman/package.c:144
-#, c-format
-msgid "MD5 Sum : %s"
-msgstr "Hash MD5 Sum : %s"
-
-#: src/pacman/package.c:147
-#, c-format
-msgid "SHA1 Sum : %s"
-msgstr "Hash SHA1 : %s"
-
-#: src/pacman/package.c:158
-#, c-format
-msgid "Backup Files:\n"
-msgstr "Archivos de respaldo:\n"
-
-#: src/pacman/package.c:180
-#, c-format
-msgid "error calculating checksums for %s\n"
-msgstr "error calculando la verificación para %s\n"
-
-#: src/pacman/package.c:193
-#, c-format
-msgid "MODIFIED\t%s\n"
-msgstr "MODIFICADOt%s\n"
-
-#: src/pacman/package.c:195
-#, c-format
-msgid "Not Modified\t%s\n"
-msgstr "No Modificado\t%s\n"
-
-#: src/pacman/package.c:200
-#, c-format
-msgid "MISSING\t\t%s\n"
-msgstr "FALTANTE\t\t%s\n"
-
-#: src/pacman/package.c:206
-#, c-format
-msgid "(none)\n"
-msgstr "(nada)\n"
-
-#: src/pacman/package.c:246
-#, c-format
-msgid "No changelog available for '%s'.\n"
-msgstr "No hay registro de cambios para '%s'.\n"
-
-#: src/pacman/pacman.c:90
-#, c-format
-msgid "usage: %s {-h --help}\n"
-msgstr ""
-
-#: src/pacman/pacman.c:91
-#, c-format
-msgid " %s {-V --version}\n"
-msgstr ""
-
-#: src/pacman/pacman.c:92
-#, c-format
-msgid " %s {-A --add} [options] <file>\n"
-msgstr ""
-
-#: src/pacman/pacman.c:93
-#, fuzzy, c-format
-msgid " %s {-F --freshen} [options] <file>\n"
-msgstr "uso: %s {-R --remove} [opciones] <paquete>\n"
-
-#: src/pacman/pacman.c:94
-#, fuzzy, c-format
-msgid " %s {-Q --query} [options] [package]\n"
-msgstr "uso: %s {-R --remove} [opciones] <paquete>\n"
-
-#: src/pacman/pacman.c:95
-#, fuzzy, c-format
-msgid " %s {-R --remove} [options] <package>\n"
-msgstr "uso: %s {-R --remove} [opciones] <paquete>\n"
-
-#: src/pacman/pacman.c:96
-#, fuzzy, c-format
-msgid " %s {-S --sync} [options] [package]\n"
-msgstr "uso: %s {-R --remove} [opciones] <paquete>\n"
-
-#: src/pacman/pacman.c:97
-#, fuzzy, c-format
-msgid " %s {-U --upgrade} [options] <file>\n"
-msgstr "uso: %s {-R --remove} [opciones] <paquete>\n"
-
-#: src/pacman/pacman.c:98
-#, c-format
-msgid ""
-"\n"
-"use '%s --help' with other options for more syntax\n"
-msgstr ""
-"\n"
-"digite '%s --help' con otra opción para ayuda más específica\n"
-
-#: src/pacman/pacman.c:101
-#, fuzzy, c-format
-msgid "usage: %s {-A --add} [options] <file>\n"
-msgstr "uso: %s {-R --remove} [opciones] <paquete>\n"
-
-#: src/pacman/pacman.c:102 src/pacman/pacman.c:107 src/pacman/pacman.c:119
-#: src/pacman/pacman.c:124 src/pacman/pacman.c:138
-#, fuzzy, c-format
-msgid "options:\n"
-msgstr "opciones"
-
-#: src/pacman/pacman.c:103 src/pacman/pacman.c:109 src/pacman/pacman.c:120
-#: src/pacman/pacman.c:140
-#, c-format
-msgid " -d, --nodeps skip dependency checks\n"
-msgstr " -d, --nodeps se salta la verificación de dependencias \n"
-
-#: src/pacman/pacman.c:104 src/pacman/pacman.c:121 src/pacman/pacman.c:142
-#, c-format
-msgid " -f, --force force install, overwrite conflicting files\n"
-msgstr ""
-" -f, --force fuerza la instalación, sobreescribiendo los archivos "
-"en conflicto\n"
-
-#: src/pacman/pacman.c:106
-#, c-format
-msgid "usage: %s {-R --remove} [options] <package>\n"
-msgstr "uso: %s {-R --remove} [opciones] <paquete>\n"
-
-#: src/pacman/pacman.c:108
-#, c-format
-msgid ""
-" -c, --cascade remove packages and all packages that depend on them\n"
-msgstr ""
-" -c, --cascade quita paquetes, junto a todos los que dependan de "
-"estos\n"
-
-#: src/pacman/pacman.c:110
-#, c-format
-msgid ""
-" -k, --dbonly only remove database entry, do not remove files\n"
-msgstr ""
-" -k, --dbonly sólo quita la referencia en la base de datos. No "
-"elimina archivos\n"
-
-#: src/pacman/pacman.c:111
-#, c-format
-msgid " -n, --nosave remove configuration files as well\n"
-msgstr " -n, --nosave quita también los archivos de configuración\n"
-
-#: src/pacman/pacman.c:112
-#, c-format
-msgid ""
-" -s, --recursive remove dependencies also (that won't break packages)\n"
-msgstr ""
-" -s, --recursive quita también las dependencias (que no quiebren a "
-"otros paquetes)\n"
-
-#: src/pacman/pacman.c:115
-#, fuzzy, c-format
-msgid "usage: %s {-F --freshen} [options] <file>\n"
-msgstr "uso: %s {-R --remove} [opciones] <paquete>\n"
-
-#: src/pacman/pacman.c:117
-#, fuzzy, c-format
-msgid "usage: %s {-U --upgrade} [options] <file>\n"
-msgstr "uso: %s {-R --remove} [opciones] <paquete>\n"
-
-#: src/pacman/pacman.c:123
-#, fuzzy, c-format
-msgid "usage: %s {-Q --query} [options] [package]\n"
-msgstr "uso: %s {-R --remove} [opciones] <paquete>\n"
-
-#: src/pacman/pacman.c:125
-#, c-format
-msgid " -c, --changelog view the changelog of a package\n"
-msgstr " -c, --changelog muestra el registro de cambios de un paquete\n"
-
-#: src/pacman/pacman.c:126
-#, fuzzy, c-format
-msgid ""
-" -e, --orphans list all packages installed as dependencies but no "
-"longer\n"
-msgstr ""
-" -e, --orphans lista todos los paquetes instalados como "
-"dependencias, que ya no lo son\n"
-" requerido por cualquier paquete\n"
-
-#: src/pacman/pacman.c:127
-#, c-format
-msgid " required by any package\n"
-msgstr ""
-
-#: src/pacman/pacman.c:128 src/pacman/pacman.c:143
-#, c-format
-msgid " -g, --groups view all members of a package group\n"
-msgstr ""
-" -g, --groups muestra todos los elementos del grupo de paquetes \n"
-
-#: src/pacman/pacman.c:129 src/pacman/pacman.c:144
-#, c-format
-msgid " -i, --info view package information\n"
-msgstr " -i, --info ver la información del paquete\n"
-
-#: src/pacman/pacman.c:130
-#, c-format
-msgid " -l, --list list the contents of the queried package\n"
-msgstr ""
-" -l, --list lista los archivos contenidos en los paquetes "
-"consultados\n"
-
-#: src/pacman/pacman.c:131
-#, c-format
-msgid ""
-" -m, --foreign list installed packages not found in sync db(s)\n"
-msgstr ""
-" -m, --foreign lista paquetes instalados no encontrados en las "
-"listas de paquetes\n"
-
-#: src/pacman/pacman.c:132
-#, c-format
-msgid " -o, --owns <file> query the package that owns <file>\n"
-msgstr ""
-" -o, --owns <file> consulta el paquete que contiene el archivo "
-"indicado\n"
-
-#: src/pacman/pacman.c:133
-#, c-format
-msgid " -p, --file <package> query a package file instead of the database\n"
-msgstr ""
-" -p, --file <paquete> consulta un archivo de paquetes en lugar de la base "
-"de datos\n"
-
-#: src/pacman/pacman.c:134
-#, c-format
-msgid ""
-" -s, --search <regex> search locally-installed packages for matching "
-"strings\n"
-msgstr ""
-" -s, --search <busca> busca paquetes instalados localmente que coincidan "
-"con la cadena\n"
-
-#: src/pacman/pacman.c:135
-#, c-format
-msgid " -u, --upgrades list all packages that can be upgraded\n"
-msgstr ""
-" -u, --upgrades muestra todos los paquetes que pueden ser "
-"actualizados\n"
-
-#: src/pacman/pacman.c:137
-#, fuzzy, c-format
-msgid "usage: %s {-S --sync} [options] [package]\n"
-msgstr "uso: %s {-R --remove} [opciones] <paquete>\n"
-
-#: src/pacman/pacman.c:139
-#, c-format
-msgid ""
-" -c, --clean remove old packages from cache directory (-cc for "
-"all)\n"
-msgstr ""
-" -c, --clean elimina paquetes antiguos del directorio de la cache "
-"(-cc para todos los paquetes)\n"
-
-#: src/pacman/pacman.c:141
-#, c-format
-msgid " -e, --dependsonly install dependencies only\n"
-msgstr " -e, --dependsonly instala sólo dependencias\n"
-
-#: src/pacman/pacman.c:145
-#, c-format
-msgid " -l, --list <repo> view a list of packages in a repo\n"
-msgstr " -l, --list <repo> ve una lista de paquetes en un repositorio\n"
-
-#: src/pacman/pacman.c:146
-#, c-format
-msgid ""
-" -p, --print-uris print out URIs for given packages and their "
-"dependencies\n"
-msgstr ""
-" -p, --print-uris muestra las URIs (nombres de paquetes) para los "
-"archivos indicados y sus dependencias\n"
-
-#: src/pacman/pacman.c:147
-#, c-format
-msgid ""
-" -s, --search <regex> search remote repositories for matching strings\n"
-msgstr ""
-" -s, --search <busca> busca en los repositorios remotos por coincidencias "
-"de la cadena especificada.\n"
-
-#: src/pacman/pacman.c:148
-#, c-format
-msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
-msgstr ""
-" -u, --sysupgrade actualiza todos los paquetes que no están al día\n"
-
-#: src/pacman/pacman.c:149
-#, c-format
-msgid ""
-" -w, --downloadonly download packages but do not install/upgrade "
-"anything\n"
-msgstr ""
-" -w, --downloadonly sólo descarga los paquetes, sin instalar/actualizar "
-"nada\n"
-
-#: src/pacman/pacman.c:150
-#, c-format
-msgid ""
-" -y, --refresh download fresh package databases from the server\n"
-msgstr ""
-" -y, --refresh descarga bases de datos actualizadas desde el "
-"servidor\n"
-
-#: src/pacman/pacman.c:151
-#, c-format
-msgid ""
-" --ignore <pkg> ignore a package upgrade (can be used more than "
-"once)\n"
-msgstr ""
-" --ignore <pkg> ignora una actualización de paquete (puede ser usado "
-"más de una vez)\n"
-
-#: src/pacman/pacman.c:153
-#, c-format
-msgid " --config <path> set an alternate configuration file\n"
-msgstr " --config <ruta> define un archivo de configuración alterno\n"
-
-#: src/pacman/pacman.c:154
-#, c-format
-msgid " --noconfirm do not ask for any confirmation\n"
-msgstr " --noconfirm no solicita confirmación alguna\n"
-
-#: src/pacman/pacman.c:155
-#, c-format
-msgid ""
-" --ask <number> pre-specify answers for questions (see manpage)\n"
-msgstr ""
-" --ask <número> pre-define respuestas para preguntas (ver el manual)\n"
-
-#: src/pacman/pacman.c:156
-#, c-format
-msgid ""
-" --noprogressbar do not show a progress bar when downloading files\n"
-msgstr ""
-" --noprogressbar no muestra la barra de progreso cuando descarga "
-"archivos\n"
-
-#: src/pacman/pacman.c:157
-#, fuzzy, c-format
-msgid ""
-" --noscriptlet do not execute the install scriptlet if there is any\n"
-msgstr ""
-" --noscriptlet no ejecuta el script de instalación si existe alguno\n"
-
-#: src/pacman/pacman.c:158
-#, c-format
-msgid " -v, --verbose be verbose\n"
-msgstr " -v, --verbose mostrar todo\n"
-
-#: src/pacman/pacman.c:159
-#, c-format
-msgid " -r, --root <path> set an alternate installation root\n"
-msgstr " -r, --root <path> define una raiz alterna para la instalación\n"
-
-#: src/pacman/pacman.c:160
-#, c-format
-msgid " -b, --dbpath <path> set an alternate database location\n"
-msgstr ""
-" -b, --dbpath <path> define una localización alternativa de la base de "
-"datos\n"
-
-#: src/pacman/pacman.c:161
-#, c-format
-msgid " --cachedir <dir> set an alternate package cache location\n"
-msgstr ""
-" --cachedir <dir> define una ruta alternativa para la localización de "
-"los archivos\n"
-
-#: src/pacman/pacman.c:174
-#, fuzzy, c-format
-msgid " This program may be freely redistributed under\n"
-msgstr ""
-" Este programa puede ser libremente distribuido bajo\n"
-" los términos de la licencia GNU General Public "
-"License\n"
-
-#: src/pacman/pacman.c:175
-#, fuzzy, c-format
-msgid " the terms of the GNU General Public License\n"
-msgstr ""
-" Este programa puede ser libremente distribuido bajo\n"
-" los términos de la licencia GNU General Public "
-"License\n"
-
-#: src/pacman/pacman.c:300
-#, c-format
-msgid "'%s' is not a valid debug level"
-msgstr "'%s' no es un nivel de depuración válido"
-
-#: src/pacman/pacman.c:315
-#, c-format
-msgid "'%s' is not a valid cache directory\n"
-msgstr "'%s' no es un directorio de cache válido\n"
-
-#: src/pacman/pacman.c:333
-#, c-format
-msgid "'%s' is not a valid db path\n"
-msgstr "%s' no es una ruta de base de datos válida\n"
-
-#: src/pacman/pacman.c:363
-#, c-format
-msgid "'%s' is not a valid root path\n"
-msgstr "'%s' no es una ruta de raíz válida\n"
-
-#: src/pacman/pacman.c:390
-msgid "only one operation may be used at a time\n"
-msgstr "sólo una operación puede utilizarse a la vez\n"
-
-#: src/pacman/pacman.c:436
-msgid "warning: current locale is invalid; using default \"C\" locale"
-msgstr ""
-
-#: src/pacman/pacman.c:456
-#, c-format
-msgid "failed to initialize alpm library (%s)\n"
-msgstr "falló al iniciar la libreria alpm (%s)\n"
-
-#: src/pacman/pacman.c:489
-msgid "you cannot perform this operation unless you are root.\n"
-msgstr "no puede realizar esta operación, a menos que sea root.\n"
-
-#: src/pacman/pacman.c:505
-#, c-format
-msgid "failed to parse config (%s)\n"
-msgstr "falló al analizar la configuración (%s)\n"
-
-#: src/pacman/pacman.c:516
-msgid "Targets :"
-msgstr "Objetivos : "
-
-#: src/pacman/pacman.c:522
-#, c-format
-msgid "could not register 'local' database (%s)\n"
-msgstr "no se pudo registrar la base de datos 'local' (%s)\n"
-
-#: src/pacman/pacman.c:529
-msgid "no targets specified (use -h for help)\n"
-msgstr "no se especificaron objetivos (use -h para ayuda)\n"
-
-#: src/pacman/pacman.c:542
-msgid "no operation specified (use -h for help)\n"
-msgstr "no se especificó una operación (utilice -h para ayuda)\n"
-
-#: src/pacman/query.c:90
-msgid "no file was specified for --owns\n"
-msgstr "no se indico un archivo para --owns\n"
-
-#: src/pacman/query.c:95
-#, c-format
-msgid "failed to read file '%s': %s"
-msgstr "no se pudo leer el archivo '%s': %s"
-
-#: src/pacman/query.c:100
-msgid "cannot determine ownership of a directory"
-msgstr "no se pudo determinar el propietario de un directorio"
-
-#: src/pacman/query.c:105
-#, c-format
-msgid "cannot determine real path for '%s': %s"
-msgstr "no se pudo determinar la ruta verdadera para '%s': %s"
-
-#: src/pacman/query.c:119
-#, c-format
-msgid "%s is owned by %s %s\n"
-msgstr "%s es propiedad de %s %s\n"
-
-#: src/pacman/query.c:127
-#, c-format
-msgid "No package owns %s\n"
-msgstr "Ningún paquete posee %s\n"
-
-#: src/pacman/query.c:170 src/pacman/sync.c:453
-msgid "no usable package repositories configured.\n"
-msgstr "no se encontraron repositorios útiles configurados.\n"
-
-#: src/pacman/query.c:176
-msgid "Checking for package upgrades..."
-msgstr "Verificando actualizaciones de paquetes..."
-
-#: src/pacman/query.c:183
-msgid "no upgrades found"
-msgstr "no se encontraron actualizaciones"
-
-#: src/pacman/query.c:221
-#, c-format
-msgid "group \"%s\" was not found\n"
-msgstr "el grupo \"%s\" no fue encontrado\n"
-
-#: src/pacman/query.c:232
-msgid "no package file was specified for --file\n"
-msgstr "no se especificó un archivo de paquetes para --file\n"
-
-#: src/pacman/query.c:236
-#, c-format
-msgid "failed to load package '%s' (%s)\n"
-msgstr "error al cargar el paquete '%s' (%s)\n"
-
-#: src/pacman/query.c:273 src/pacman/query.c:305
-#, c-format
-msgid "package \"%s\" not found\n"
-msgstr "el paquete \"%s\" no fue encontrado\n"
-
-#: src/pacman/remove.c:61 src/pacman/sync.c:568
-#, c-format
-msgid ":: group %s:\n"
-msgstr ":: grupo %s:\n"
-
-#: src/pacman/remove.c:63
-msgid " Remove whole content? [Y/n] "
-msgstr " ¿Quitar todo el contenido? [Y/n] "
-
-#: src/pacman/remove.c:67
-#, c-format
-msgid ":: Remove %s from group %s? [Y/n] "
-msgstr ":: ¿Quitar %s del grupo %s? [Y/n] "
-
-#: src/pacman/remove.c:80 src/pacman/sync.c:480 src/pacman/sync.c:529
-#, c-format
-msgid "failed to init transaction (%s)\n"
-msgstr "no se pudo iniciar la operación (%s)\n"
-
-#: src/pacman/remove.c:92
-#, c-format
-msgid "failed to add target '%s' (%s)\n"
-msgstr "fallo al procesar '%s' (%s)\n"
-
-#: src/pacman/remove.c:106
-#, c-format
-msgid ":: %s is required by %s\n"
-msgstr ":: %s es requerido por %s\n"
-
-#: src/pacman/remove.c:128 src/pacman/util.c:324
-msgid "Targets:"
-msgstr "A instalar:"
-
-#: src/pacman/remove.c:131
-msgid ""
-"\n"
-"Do you want to remove these packages? [Y/n] "
-msgstr ""
-"\n"
-"¿Quiere eliminar estos paquetes? [Y/n] "
-
-#: src/pacman/sync.c:115
-msgid "Do you want to remove old packages from cache? [Y/n] "
-msgstr "Desea quitar los paquetes antiguos de la cache? [Y/n] "
-
-#: src/pacman/sync.c:117
-msgid "removing old packages from cache... "
-msgstr "quitando paquetes antiguos de la cache..."
-
-#: src/pacman/sync.c:120
-msgid "could not access cache directory\n"
-msgstr "no se pudo acceder al directorio de la cache de paquetes\n"
-
-#: src/pacman/sync.c:181
-msgid "Do you want to remove all packages from cache? [Y/n] "
-msgstr "Desea borrar todos los paquetes de la cache? [Y/n] "
-
-#: src/pacman/sync.c:183
-msgid "removing all packages from cache... "
-msgstr "quitando todos los paquetes de la cache... "
-
-#: src/pacman/sync.c:186
-msgid "could not remove cache directory\n"
-msgstr "no se pudo eliminar el directorio de la cache\n"
-
-#: src/pacman/sync.c:191
-msgid "could not create new cache directory\n"
-msgstr "no se pudo crear el nuevo directorio de la cache\n"
-
-#: src/pacman/sync.c:218
-#, c-format
-msgid "failed to synchronize %s: %s\n"
-msgstr "falló al sincronizar %s: %s\n"
-
-#: src/pacman/sync.c:220
-#, c-format
-msgid "failed to update %s (%s)\n"
-msgstr "falló al actualizar %s (%s)\n"
-
-#: src/pacman/sync.c:223
-#, c-format
-msgid " %s is up to date\n"
-msgstr " %s esta actualizado\n"
-
-#: src/pacman/sync.c:345
-#, c-format
-msgid "repository '%s' does not exist\n"
-msgstr "el repositorio '%s' no existe\n"
-
-#: src/pacman/sync.c:361
-#, c-format
-msgid "package '%s' was not found in repository '%s'\n"
-msgstr "el paquete '%s' no fue encontrado en el repositorio '%s'\n"
-
-#: src/pacman/sync.c:381
-#, c-format
-msgid "package '%s' was not found\n"
-msgstr "El paquete '%s' no fue encontrado\n"
-
-#: src/pacman/sync.c:418
-#, c-format
-msgid "repository \"%s\" was not found.\n"
-msgstr "el repositorio \"%s\" no fue encontrado.\n"
-
-#: src/pacman/sync.c:490
-msgid ":: Synchronizing package databases...\n"
-msgstr ":: Sincronizando las bases de datos de paquetes...\n"
-
-#: src/pacman/sync.c:491
-msgid "synchronizing package lists"
-msgstr "sincronizando la lista de paquetes"
-
-#: src/pacman/sync.c:493
-msgid "failed to synchronize any databases"
-msgstr "falló al sincronizar cualquier base de datos."
-
-#: src/pacman/sync.c:499
-msgid ":: Starting full system upgrade...\n"
-msgstr ":: iniciando actualización completa del sistema...\n"
-
-#: src/pacman/sync.c:500
-msgid "starting full system upgrade"
-msgstr "iniciando la actualización completa del sistema"
-
-#: src/pacman/sync.c:518
-msgid ""
-"\n"
-":: pacman has detected a newer version of the \"pacman\" package.\n"
-msgstr ""
-"\n"
-":: pacman ha detectado una nueva versión del paquete \"pacman\".\n"
-
-#: src/pacman/sync.c:519
-msgid ":: It is recommended that you allow pacman to upgrade itself\n"
-msgstr ":: es recomendado que permita a pacman actualizarse a si mismo\n"
-
-#: src/pacman/sync.c:520
-msgid ":: first, then you can re-run the operation with the newer version.\n"
-msgstr ""
-":: primero, después puedes volver a ejecutar la operación con la nueva "
-"versión.\n"
-
-#: src/pacman/sync.c:522
-msgid ":: Upgrade pacman first? [Y/n] "
-msgstr ":: ¿Actualizar pacman primero? [Y/n] "
-
-#: src/pacman/sync.c:537
-#, c-format
-msgid "pacman: %s\n"
-msgstr "pacman: %s\n"
-
-#: src/pacman/sync.c:572
-msgid ":: Install whole content? [Y/n] "
-msgstr ":: ¿Instalar el todo el contenido? [Y/n] "
-
-#: src/pacman/sync.c:579
-#, c-format
-msgid ":: Install %s from group %s? [Y/n] "
-msgstr ":: ¿Instalar %s del grupo %s? [Y/n] "
-
-#: src/pacman/sync.c:603
-#, c-format
-msgid "'%s': not found in sync db\n"
-msgstr "'%s': no encontrado en la lista de paquetes\n"
-
-#: src/pacman/sync.c:621
-msgid "requires"
-msgstr "necesita"
-
-#: src/pacman/sync.c:663
-msgid " local database is up to date\n"
-msgstr " el sistema está actualizado\n"
-
-#: src/pacman/sync.c:672
-msgid ""
-"\n"
-"Beginning download...\n"
-msgstr ""
-"\n"
-"Empezando la descarga...\n"
-
-#: src/pacman/sync.c:676
-msgid "Proceed with download? [Y/n] "
-msgstr "¿Continuar con la descarga? [Y/n] "
-
-#: src/pacman/sync.c:684
-msgid ""
-"\n"
-"Beginning upgrade process...\n"
-msgstr ""
-"\n"
-"Empezando proceso de actualización...\n"
-
-#: src/pacman/sync.c:688
-msgid "Proceed with installation? [Y/n] "
-msgstr "¿Continuar con la instalación? [Y/n] "
-
-#: src/pacman/trans.c:55
-msgid "checking dependencies... "
-msgstr "comprobando dependencias... "
-
-#: src/pacman/trans.c:59
-msgid "checking for file conflicts... "
-msgstr "verificando si existen conflictos entre archivos... "
-
-#: src/pacman/trans.c:63
-msgid "cleaning up... "
-msgstr "limpiando..."
-
-#: src/pacman/trans.c:66
-msgid "resolving dependencies... "
-msgstr "resolviendo dependencias... "
-
-#: src/pacman/trans.c:69
-msgid "looking for inter-conflicts... "
-msgstr "verificando conflictos... "
-
-#: src/pacman/trans.c:86
-#, c-format
-msgid "installing %s... "
-msgstr "instalando %s..."
-
-#: src/pacman/trans.c:93
-#, c-format
-msgid "installed %s (%s)"
-msgstr "instalado %s (%s)"
-
-#: src/pacman/trans.c:100
-#, c-format
-msgid "removing %s... "
-msgstr "quitando %s..."
-
-#: src/pacman/trans.c:107
-#, c-format
-msgid "removed %s (%s)"
-msgstr "eliminado %s (%s)"
-
-#: src/pacman/trans.c:114
-#, c-format
-msgid "upgrading %s... "
-msgstr "actualizando %s... "
-
-#: src/pacman/trans.c:121
-#, c-format
-msgid "upgraded %s (%s -> %s)"
-msgstr "actualizado %s (%s -> %s)"
-
-#: src/pacman/trans.c:128
-msgid "checking package integrity... "
-msgstr "Verificando la integridad de los paquetes... "
-
-#: src/pacman/trans.c:144
-msgid "failed.\n"
-msgstr "falló.\n"
-
-#: src/pacman/trans.c:151
-#, c-format
-msgid ":: Retrieving packages from %s...\n"
-msgstr ":: Descargando paquetes desde %s...\n"
-
-#: src/pacman/trans.c:172
-#, c-format
-msgid ":: %1$s requires %2$s from IgnorePkg. Install %2$s? [Y/n] "
-msgstr ""
-":: %1$s requiere %2$s que en los paquetes a ignorar (IgnorePkg). ¿Instalar %2"
-"$s? [Y/n] "
-
-#: src/pacman/trans.c:177
-#, c-format
-msgid ":: %s is in IgnorePkg. Install anyway? [Y/n] "
-msgstr ":: %s esta en la lista a ignorar. ¿Instalar de todas formas? [Y/n] "
-
-#: src/pacman/trans.c:190
-#, c-format
-msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
-msgstr ""
-":: %s esta indicado como paquete a mantener. ¿Quitar de todas formas? [Y/n] "
-
-#: src/pacman/trans.c:203
-#, c-format
-msgid ":: Replace %s with %s/%s? [Y/n] "
-msgstr ":: ¿Reemplazar %s con %s/%s? [Y/n] "
-
-#: src/pacman/trans.c:218
-#, c-format
-msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
-msgstr ":: %s provoca conflictos con %s. ¿Quitar %s? [Y/n]"
-
-#: src/pacman/trans.c:234
-#, c-format
-msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
-msgstr ""
-":: %s-%s: la versión local es mas reciente. ¿Actualizar de todas formas? [Y/"
-"n] "
-
-#: src/pacman/trans.c:252
-#, c-format
-msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
-msgstr ""
-":: %s-%s: la versión local esta actualizada. ¿Actualizar de todas formas? [Y/"
-"n] "
-
-#: src/pacman/trans.c:270
-#, c-format
-msgid ":: Archive %s is corrupted. Do you want to delete it? [Y/n] "
-msgstr ":: El Archivo %s esta corrupto. Desea borrarlo? [Y/n] "
-
-#: src/pacman/trans.c:326
-msgid "installing"
-msgstr "instalando"
-
-#: src/pacman/trans.c:329
-msgid "upgrading"
-msgstr "actualizando"
-
-#: src/pacman/trans.c:332
-msgid "removing"
-msgstr "quitando"
-
-#: src/pacman/trans.c:335
-msgid "checking for file conflicts"
-msgstr "verificando conflictos entre archivos"
-
-#: src/pacman/util.c:259
-#, c-format
-msgid "None\n"
-msgstr "Nada\n"
-
-#: src/pacman/util.c:311
-msgid "Remove:"
-msgstr "Se quitará:"
-
-#: src/pacman/util.c:319
-#, c-format
-msgid ""
-"\n"
-"Total Removed Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Tamaño total eliminado: %.2f MB\n"
-
-#: src/pacman/util.c:330
-#, c-format
-msgid ""
-"\n"
-"Total Package Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Tamaño total de paquetes: %.2f MB\n"
-
-#: src/pacman/util.c:337
-#, c-format
-msgid "Total Installed Size: %.2f MB\n"
-msgstr "Tamaño total instalado: %.2f MB\n"
-
-#~ msgid "file"
-#~ msgstr "archivo"
-
-#~ msgid "package"
-#~ msgstr "paquete"
-
-#~ msgid "usage"
-#~ msgstr "uso"
-
-#~ msgid "operation"
-#~ msgstr "operación"
diff --git a/src/pacman/po/fr.po b/src/pacman/po/fr.po
deleted file mode 100644
index 85efa2a0..00000000
--- a/src/pacman/po/fr.po
+++ /dev/null
@@ -1,1459 +0,0 @@
-# French translations for Pacman package manager package.
-# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
-# This file is distributed under the same license as the Pacman package manager package.
-# Enda <enda@netou.com>, 2006
-#
-# This is a revision of pacman's French translation by nam <37ii11@altern.org>
-# on the basis of the work of solsTiCe d'hiver <solstice.dhiver@laposte.net>
-msgid ""
-msgstr ""
-"Project-Id-Version: pacman\n"
-"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-04-28 04:02-0400\n"
-"PO-Revision-Date: 2007-04-20 15:02+0100\n"
-"Last-Translator: nam <37ii11@altern.org>\n"
-"Language-Team: solsTiCe d'Hiver <solstice.dhiver@laposte.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: French\n"
-"X-Poedit-Country: FRANCE\n"
-
-#: src/pacman/add.c:72 src/pacman/remove.c:82 src/pacman/sync.c:482
-#: src/pacman/sync.c:531
-#, c-format
-msgid ""
-" if you're sure a package manager is not already running,\n"
-" you can remove %s%s\n"
-msgstr ""
-" Si vous êtes sûr que le gestionnaire de paquet n'est pas déjà\n"
-" en cours de fonctionnement, vous pouvez supprimer %s%s\n"
-
-#: src/pacman/add.c:79
-msgid "loading package data... "
-msgstr "Chargement des données du paquet... "
-
-#: src/pacman/add.c:83
-#, c-format
-msgid "failed to add target '%s' (%s)"
-msgstr "l'ajout de la cible '%s' (%s) a échoué"
-
-# "fait" est incompréhensible
-#: src/pacman/add.c:88 src/pacman/sync.c:196 src/pacman/trans.c:73
-#: src/pacman/trans.c:80 src/pacman/trans.c:91 src/pacman/trans.c:105
-#: src/pacman/trans.c:119 src/pacman/trans.c:131 src/pacman/trans.c:142
-msgid "done.\n"
-msgstr "terminé.\n"
-
-#: src/pacman/add.c:95 src/pacman/remove.c:101 src/pacman/sync.c:616
-#, c-format
-msgid "failed to prepare transaction (%s)\n"
-msgstr "la préparation de la transaction a échoué (%s)\n"
-
-#: src/pacman/add.c:104
-#, c-format
-msgid ":: %s: requires %s"
-msgstr ":: %s: requiert %s"
-
-#: src/pacman/add.c:125 src/pacman/sync.c:643
-#, c-format
-msgid ":: %s: conflicts with %s"
-msgstr ":: %s: est en conflit avec %s"
-
-#: src/pacman/add.c:134 src/pacman/sync.c:707
-#, c-format
-msgid "%s exists in both '%s' and '%s'\n"
-msgstr "%s est présent à la fois dans '%s' et '%s'\n"
-
-# id.
-#: src/pacman/add.c:140 src/pacman/sync.c:713
-#, c-format
-msgid "%s: %s exists in filesystem\n"
-msgstr "%s: %s est déjà présent dans le système de fichiers\n"
-
-#: src/pacman/add.c:146 src/pacman/sync.c:719 src/pacman/sync.c:725
-msgid ""
-"\n"
-"errors occurred, no packages were upgraded.\n"
-msgstr ""
-"\n"
-"Des erreurs se sont produites, aucun paquet n'a été mis à jour.\n"
-
-# improbable (mais pas impossible) que seul 1 Mo soit disponible; par défaut, le pluriel est meilleur. A disposition remplace disponible pour éviter le problème.
-#: src/pacman/add.c:156 src/pacman/sync.c:650
-#, c-format
-msgid ":: %.1f MB required, have %.1f MB"
-msgstr ":: %.1f Mo nécessaires, %.1f Mo à disposition"
-
-#: src/pacman/add.c:169 src/pacman/remove.c:141 src/pacman/sync.c:700
-#, c-format
-msgid "failed to commit transaction (%s)\n"
-msgstr "la validation de la transaction a échoué (%s)\n"
-
-#: src/pacman/add.c:179 src/pacman/remove.c:151 src/pacman/sync.c:524
-#: src/pacman/sync.c:741
-#, c-format
-msgid "failed to release transaction (%s)\n"
-msgstr "la libération de la transaction a échoué (%s)\n"
-
-#: src/pacman/log.c:63
-#, c-format
-msgid "debug"
-msgstr "Débogage"
-
-#: src/pacman/log.c:66
-#, c-format
-msgid "error"
-msgstr "Erreur"
-
-#: src/pacman/log.c:69
-#, c-format
-msgid "warning"
-msgstr "Avertissement"
-
-#: src/pacman/log.c:75
-#, c-format
-msgid "function"
-msgstr "Fonction"
-
-#: src/pacman/log.c:194
-msgid "Y"
-msgstr "O"
-
-#: src/pacman/log.c:194
-msgid "YES"
-msgstr "OUI"
-
-#: src/pacman/log.h:30
-msgid "error: "
-msgstr "Erreur: "
-
-#: src/pacman/log.h:34
-msgid "warning: "
-msgstr "Avertissement: "
-
-#: src/pacman/package.c:60
-msgid "Explicitly installed"
-msgstr "Explicitement installé"
-
-#: src/pacman/package.c:63
-msgid "Installed as a dependency for another package"
-msgstr "Installé comme dépendance d'un autre paquet"
-
-#: src/pacman/package.c:66 src/pacman/package.c:90
-msgid "Unknown"
-msgstr "Inconnu"
-
-#: src/pacman/package.c:70 src/pacman/package.c:121
-msgid "Description : "
-msgstr "Description : "
-
-#: src/pacman/package.c:73 src/pacman/package.c:127
-#, c-format
-msgid "Name : %s\n"
-msgstr "Nom : %s\n"
-
-#: src/pacman/package.c:74 src/pacman/package.c:128
-#, c-format
-msgid "Version : %s\n"
-msgstr "Version : %s\n"
-
-#: src/pacman/package.c:75
-#, c-format
-msgid "URL : %s\n"
-msgstr "URL : %s\n"
-
-#: src/pacman/package.c:76
-msgid "License :"
-msgstr "Licence :"
-
-#: src/pacman/package.c:77 src/pacman/package.c:129
-msgid "Groups :"
-msgstr "Groupes :"
-
-#: src/pacman/package.c:78 src/pacman/package.c:130
-msgid "Provides :"
-msgstr "Fournit :"
-
-#: src/pacman/package.c:79 src/pacman/package.c:131
-msgid "Depends On :"
-msgstr "Dépend de :"
-
-#: src/pacman/package.c:80 src/pacman/package.c:132
-msgid "Removes :"
-msgstr "Supprime :"
-
-#: src/pacman/package.c:83
-msgid "Required By :"
-msgstr "Requis par :"
-
-# Plus compréhensible...
-#: src/pacman/package.c:85 src/pacman/package.c:133
-msgid "Conflicts With :"
-msgstr "Incompatible avec :"
-
-#: src/pacman/package.c:86 src/pacman/package.c:136
-#, c-format
-msgid "Installed Size : %6.2f K\n"
-msgstr "Taille (installé) : %6.2f K\n"
-
-# qu'en dites-vous?
-#: src/pacman/package.c:87
-#, c-format
-msgid "Packager : %s\n"
-msgstr "Paqueteur : %s\n"
-
-#: src/pacman/package.c:88
-#, c-format
-msgid "Architecture : %s\n"
-msgstr "Architecture : %s\n"
-
-# En français, "construire" un programme n'a pas beaucoup de sens, on le compile
-#: src/pacman/package.c:89
-#, c-format
-msgid "Build Date : %s %s\n"
-msgstr "Compilé le : %s %s\n"
-
-# En français, "construire" un programme n'a pas beaucoup de sens, on le compile
-#: src/pacman/package.c:90
-#, c-format
-msgid "Build Type : %s\n"
-msgstr "Type de compilation : %s\n"
-
-#: src/pacman/package.c:92
-#, c-format
-msgid "Install Date : %s %s\n"
-msgstr "Installé le : %s %s\n"
-
-#: src/pacman/package.c:93
-#, c-format
-msgid "Install Reason : %s\n"
-msgstr "Motif d'installation : %s\n"
-
-#: src/pacman/package.c:95
-#, c-format
-msgid "Install Script : %s\n"
-msgstr "Script d'installation : %s\n"
-
-#: src/pacman/package.c:96
-msgid "Yes"
-msgstr "Oui"
-
-#: src/pacman/package.c:96
-msgid "No"
-msgstr "Non"
-
-#: src/pacman/package.c:126
-#, c-format
-msgid "Repository : %s\n"
-msgstr "Dépôt : %s\n"
-
-#: src/pacman/package.c:134
-msgid "Replaces :"
-msgstr "Remplace :"
-
-#: src/pacman/package.c:135
-#, c-format
-msgid "Download Size : %6.2f K\n"
-msgstr "A télécharger : %6.2f K\n"
-
-#: src/pacman/package.c:144
-#, c-format
-msgid "MD5 Sum : %s"
-msgstr "somme MD5 : %s"
-
-#: src/pacman/package.c:147
-#, c-format
-msgid "SHA1 Sum : %s"
-msgstr "somme SHA1 : %s"
-
-#: src/pacman/package.c:158
-#, c-format
-msgid "Backup Files:\n"
-msgstr "Fichiers de sauvegarde:\n"
-
-#: src/pacman/package.c:180
-#, c-format
-msgid "error calculating checksums for %s\n"
-msgstr "erreur lors du calcul des sommes de contrôle pour %s\n"
-
-#: src/pacman/package.c:193
-#, c-format
-msgid "MODIFIED\t%s\n"
-msgstr "MODIFIÉ\t%s\n"
-
-#: src/pacman/package.c:195
-#, c-format
-msgid "Not Modified\t%s\n"
-msgstr "Non modifié\t%s\n"
-
-#: src/pacman/package.c:200
-#, c-format
-msgid "MISSING\t\t%s\n"
-msgstr "MANQUANT:\t\t%s\n"
-
-#: src/pacman/package.c:206
-#, c-format
-msgid "(none)\n"
-msgstr "(Aucun)\n"
-
-#: src/pacman/package.c:246
-#, c-format
-msgid "No changelog available for '%s'.\n"
-msgstr "Changelog: non disponible pour '%s'.\n"
-
-# "Utilisation" pour "usage", suggéré par nano, excellement traduit
-#: src/pacman/pacman.c:90
-#, c-format
-msgid "usage: %s {-h --help}\n"
-msgstr "Utilisation: %s {-h --help}\n"
-
-#: src/pacman/pacman.c:91
-#, c-format
-msgid " %s {-V --version}\n"
-msgstr " %s {-V --version}\n"
-
-#: src/pacman/pacman.c:92
-#, c-format
-msgid " %s {-A --add} [options] <file>\n"
-msgstr " %s {-A --add} [options] <fichier>\n"
-
-#: src/pacman/pacman.c:93
-#, c-format
-msgid " %s {-F --freshen} [options] <file>\n"
-msgstr " %s {-F --freshen} [options] <fichier>\n"
-
-#: src/pacman/pacman.c:94
-#, c-format
-msgid " %s {-Q --query} [options] [package]\n"
-msgstr " %s {-Q --query} [options] [package]\n"
-
-#: src/pacman/pacman.c:95
-#, c-format
-msgid " %s {-R --remove} [options] <package>\n"
-msgstr " %s {-R --remove} [options] <package>\n"
-
-#: src/pacman/pacman.c:96
-#, c-format
-msgid " %s {-S --sync} [options] [package]\n"
-msgstr " %s {-S --sync} [options] [package]\n"
-
-#: src/pacman/pacman.c:97
-#, c-format
-msgid " %s {-U --upgrade} [options] <file>\n"
-msgstr " %s {-U --upgrade} [options] <fichier>\n"
-
-#: src/pacman/pacman.c:98
-#, c-format
-msgid ""
-"\n"
-"use '%s --help' with other options for more syntax\n"
-msgstr ""
-"\n"
-"Utilisez '%s --help' avec d'autres options pour une syntaxe plus détaillée.\n"
-
-#: src/pacman/pacman.c:101
-#, c-format
-msgid "usage: %s {-A --add} [options] <file>\n"
-msgstr "Utilisation: %s {-A --add} [options] <fichier>\n"
-
-#: src/pacman/pacman.c:102 src/pacman/pacman.c:107 src/pacman/pacman.c:119
-#: src/pacman/pacman.c:124 src/pacman/pacman.c:138
-#, c-format
-msgid "options:\n"
-msgstr "Options:\n"
-
-#: src/pacman/pacman.c:103 src/pacman/pacman.c:109 src/pacman/pacman.c:120
-#: src/pacman/pacman.c:140
-#, c-format
-msgid " -d, --nodeps skip dependency checks\n"
-msgstr " -d, --nodeps ne vérifie pas les dépendances\n"
-
-#: src/pacman/pacman.c:104 src/pacman/pacman.c:121 src/pacman/pacman.c:142
-#, c-format
-msgid " -f, --force force install, overwrite conflicting files\n"
-msgstr ""
-" -f, --force force l'installation, en écrasant les fichiers en "
-"conflit\n"
-
-#: src/pacman/pacman.c:106
-#, c-format
-msgid "usage: %s {-R --remove} [options] <package>\n"
-msgstr "Utilisation: %s {-R --remove} [options] <paquet>\n"
-
-# .
-#: src/pacman/pacman.c:108
-#, c-format
-msgid ""
-" -c, --cascade remove packages and all packages that depend on them\n"
-msgstr ""
-" -c, --cascade supprime les paquets ainsi que tous ceux qui en "
-"dépendent\n"
-
-#: src/pacman/pacman.c:110
-#, c-format
-msgid ""
-" -k, --dbonly only remove database entry, do not remove files\n"
-msgstr ""
-" -k, --dbonly supprime uniquement les entrées dans la base de "
-"données, et non les fichiers\n"
-
-#: src/pacman/pacman.c:111
-#, c-format
-msgid " -n, --nosave remove configuration files as well\n"
-msgstr ""
-" -n, --nosave supprime également les fichiers de configuration\n"
-
-# Formule modifiée, sens préservé!
-#: src/pacman/pacman.c:112
-#, c-format
-msgid ""
-" -s, --recursive remove dependencies also (that won't break packages)\n"
-msgstr ""
-" -s, --recursive supprime également les paquets qui ne dépendent "
-"que de celui-ci\n"
-
-#: src/pacman/pacman.c:115
-#, c-format
-msgid "usage: %s {-F --freshen} [options] <file>\n"
-msgstr "Utilisation: %s {-F --freshen} [options] <fichier>\n"
-
-#: src/pacman/pacman.c:117
-#, c-format
-msgid "usage: %s {-U --upgrade} [options] <file>\n"
-msgstr "Utilisation: %s {-U --upgrade} [options] <fichier>\n"
-
-#: src/pacman/pacman.c:123
-#, c-format
-msgid "usage: %s {-Q --query} [options] [package]\n"
-msgstr "Utilisation: %s {-Q --query} [options] [package]\n"
-
-# pour être cohérent
-#: src/pacman/pacman.c:125
-#, c-format
-msgid " -c, --changelog view the changelog of a package\n"
-msgstr " -c, --changelog affiche le Changelog du paquet\n"
-
-# id.
-#: src/pacman/pacman.c:126
-#, c-format
-msgid ""
-" -e, --orphans list all packages installed as dependencies but no "
-"longer\n"
-msgstr ""
-" -e, --orphans liste tous les paquets qui ont été installés "
-"comme des dépendances\n"
-
-#: src/pacman/pacman.c:127
-#, c-format
-msgid " required by any package\n"
-msgstr ""
-" et qui ne sont plus requis par aucun paquet\n"
-
-# id.
-#: src/pacman/pacman.c:128 src/pacman/pacman.c:143
-#, c-format
-msgid " -g, --groups view all members of a package group\n"
-msgstr ""
-" -g, --groups affiche tous les éléments d'un groupe de paquet\n"
-
-#: src/pacman/pacman.c:129 src/pacman/pacman.c:144
-#, c-format
-msgid " -i, --info view package information\n"
-msgstr ""
-" -i, --info affiche les informations concernant un paquet\n"
-
-#: src/pacman/pacman.c:130
-#, c-format
-msgid " -l, --list list the contents of the queried package\n"
-msgstr " -l, --list liste le contenu du paquet interrogé\n"
-
-#: src/pacman/pacman.c:131
-#, c-format
-msgid ""
-" -m, --foreign list installed packages not found in sync db(s)\n"
-msgstr ""
-" -m, --foreign liste les paquets non trouvés dans la ou les "
-"bases de données de synchronisation\n"
-
-# il ne peut y en avoir qu'un seul...
-#: src/pacman/pacman.c:132
-#, c-format
-msgid " -o, --owns <file> query the package that owns <file>\n"
-msgstr ""
-" -o, --owns <fichier> recherche le paquet contenant le fichier "
-"<fichier>\n"
-
-# pour être cohérent...
-#: src/pacman/pacman.c:133
-#, c-format
-msgid " -p, --file <package> query a package file instead of the database\n"
-msgstr ""
-" -p, --file <paquet> interroge le fichier <paquet> au lieu de la base "
-"de données\n"
-
-#: src/pacman/pacman.c:134
-#, c-format
-msgid ""
-" -s, --search <regex> search locally-installed packages for matching "
-"strings\n"
-msgstr ""
-" -s, --search <regex> recherche la chaîne correspondante dans les "
-"paquets installés localement\n"
-
-#: src/pacman/pacman.c:135
-#, c-format
-msgid " -u, --upgrades list all packages that can be upgraded\n"
-msgstr ""
-" -u, --sysupgrade liste tous les paquets pouvant être mis à jour\n"
-
-#: src/pacman/pacman.c:137
-#, c-format
-msgid "usage: %s {-S --sync} [options] [package]\n"
-msgstr "Utilisation: %s {-S --sync} [options] [paquet]\n"
-
-#: src/pacman/pacman.c:139
-#, c-format
-msgid ""
-" -c, --clean remove old packages from cache directory (-cc for "
-"all)\n"
-msgstr ""
-" -c, --clean supprime les paquets obsolètes du répertoire de "
-"cache (-cc pour tous)\n"
-
-#: src/pacman/pacman.c:141
-#, c-format
-msgid " -e, --dependsonly install dependencies only\n"
-msgstr " -e, --dependsonly n'installe que les dépendances\n"
-
-#: src/pacman/pacman.c:145
-#, c-format
-msgid " -l, --list <repo> view a list of packages in a repo\n"
-msgstr ""
-" -l, --list <repo> donne une liste de tous les paquets d'un dépôt\n"
-
-# plus clair
-#: src/pacman/pacman.c:146
-#, c-format
-msgid ""
-" -p, --print-uris print out URIs for given packages and their "
-"dependencies\n"
-msgstr ""
-" -p, --print-uris affiche les URIs pour les paquets donnés et pour "
-"leurs dépendances\n"
-
-#: src/pacman/pacman.c:147
-#, c-format
-msgid ""
-" -s, --search <regex> search remote repositories for matching strings\n"
-msgstr ""
-" -s, --search <regex> recherche la chaîne correspondante dans les "
-"dépôts distants\n"
-
-#: src/pacman/pacman.c:148
-#, c-format
-msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
-msgstr " -u, --sysupgrade met à jour tous les paquets obsolètes\n"
-
-#: src/pacman/pacman.c:149
-#, c-format
-msgid ""
-" -w, --downloadonly download packages but do not install/upgrade "
-"anything\n"
-msgstr ""
-" -w, --downloadonly ne fait que télécharger les paquets, sans rien "
-"installer ni mettre à jour\n"
-
-#: src/pacman/pacman.c:150
-#, c-format
-msgid ""
-" -y, --refresh download fresh package databases from the server\n"
-msgstr ""
-" -y, --refresh télécharge les dernières bases de données depuis "
-"le serveur\n"
-
-# moins fidèle, mais plus précis (je changerais l'anglais aussi ici)
-#: src/pacman/pacman.c:151
-#, c-format
-msgid ""
-" --ignore <pkg> ignore a package upgrade (can be used more than "
-"once)\n"
-msgstr ""
-" --ignore <paquet> ignore un paquet lors de la mise à jour (peut "
-"être utilisé plus d'une fois)\n"
-
-#: src/pacman/pacman.c:153
-#, c-format
-msgid " --config <path> set an alternate configuration file\n"
-msgstr ""
-" --config <chemin> impose un fichier de configuration alternatif\n"
-
-#: src/pacman/pacman.c:154
-#, c-format
-msgid " --noconfirm do not ask for any confirmation\n"
-msgstr " --noconfirm ne demande aucune confirmation\n"
-
-#: src/pacman/pacman.c:155
-#, c-format
-msgid ""
-" --ask <number> pre-specify answers for questions (see manpage)\n"
-msgstr ""
-" --ask <nombre> spécifie à l'avance la réponses à certaines "
-"questions (voir la page de manuel)\n"
-
-#: src/pacman/pacman.c:156
-#, c-format
-msgid ""
-" --noprogressbar do not show a progress bar when downloading files\n"
-msgstr ""
-" --noprogressbar n'affiche pas la barre de progression pendant le "
-"téléchargement\n"
-
-#: src/pacman/pacman.c:157
-#, c-format
-msgid ""
-" --noscriptlet do not execute the install scriptlet if there is any\n"
-msgstr ""
-" --noscriptlet n'exécute pas le script d'installation, si le "
-"paquet en contient\n"
-
-#: src/pacman/pacman.c:158
-#, c-format
-msgid " -v, --verbose be verbose\n"
-msgstr " -v, --verbose affiche plus de détails\n"
-
-#: src/pacman/pacman.c:159
-#, c-format
-msgid " -r, --root <path> set an alternate installation root\n"
-msgstr ""
-" -r, --root <chemin> impose un répertoire d'installation alternatif\n"
-
-#: src/pacman/pacman.c:160
-#, c-format
-msgid " -b, --dbpath <path> set an alternate database location\n"
-msgstr ""
-" -b, --dbpath <chemin> impose un emplacement alternatif pour les bases "
-"de données\n"
-
-#: src/pacman/pacman.c:161
-#, c-format
-msgid " --cachedir <dir> set an alternate package cache location\n"
-msgstr " --cachedir <dir> impose un répertoire cache alternatif\n"
-
-# traduction officielle de la GPL
-#: src/pacman/pacman.c:174
-#, c-format
-msgid " This program may be freely redistributed under\n"
-msgstr " Ce programme peut être librement diffusé sous\n"
-
-# id.
-#: src/pacman/pacman.c:175
-#, c-format
-msgid " the terms of the GNU General Public License\n"
-msgstr ""
-" les termes de la Licence publique générale GNU (GNU "
-"GPL)\n"
-
-#: src/pacman/pacman.c:300
-#, c-format
-msgid "'%s' is not a valid debug level"
-msgstr "'%s' n'est pas un niveau de débogage valide"
-
-#: src/pacman/pacman.c:315
-#, c-format
-msgid "'%s' is not a valid cache directory\n"
-msgstr "'%s' n'est pas un répertoire de cache valide\n"
-
-#: src/pacman/pacman.c:333
-#, c-format
-msgid "'%s' is not a valid db path\n"
-msgstr "'%s' n'est pas un chemin valide vers la base de données\n"
-
-#: src/pacman/pacman.c:363
-#, c-format
-msgid "'%s' is not a valid root path\n"
-msgstr "'%s' n'est pas un chemin racine valide\n"
-
-#: src/pacman/pacman.c:390
-msgid "only one operation may be used at a time\n"
-msgstr "une seule opération peut être effectuée à la fois\n"
-
-# localisation est la traduction officielle
-#: src/pacman/pacman.c:436
-msgid "warning: current locale is invalid; using default \"C\" locale"
-msgstr ""
-"Avertissement: la localisation courante n'est pas valide; la localisation "
-"par défaut \"C\" sera utilisée."
-
-#: src/pacman/pacman.c:456
-#, c-format
-msgid "failed to initialize alpm library (%s)\n"
-msgstr "l'initialisation de la librairie alpm a échoué (%s)\n"
-
-#: src/pacman/pacman.c:489
-msgid "you cannot perform this operation unless you are root.\n"
-msgstr "vous ne pouvez effectuer cette opération à moins d'être root.\n"
-
-#: src/pacman/pacman.c:505
-#, c-format
-msgid "failed to parse config (%s)\n"
-msgstr "la lecture de la configuration a échoué (%s)\n"
-
-#: src/pacman/pacman.c:516
-msgid "Targets :"
-msgstr "Cibles :"
-
-#: src/pacman/pacman.c:522
-#, c-format
-msgid "could not register 'local' database (%s)\n"
-msgstr "l'enregistrement de la base de données 'local' a échoué (%s)\n"
-
-#: src/pacman/pacman.c:529
-msgid "no targets specified (use -h for help)\n"
-msgstr "aucune cible spécifiée (utiliser -h pour obtenir de l'aide)\n"
-
-#: src/pacman/pacman.c:542
-msgid "no operation specified (use -h for help)\n"
-msgstr "aucune opération spécifiée (utiliser -h pour obtenir de l'aide)\n"
-
-#: src/pacman/query.c:90
-msgid "no file was specified for --owns\n"
-msgstr "aucun fichier spécifié pour --owns\n"
-
-#: src/pacman/query.c:95
-#, c-format
-msgid "failed to read file '%s': %s"
-msgstr "échec de lecture du fichier '%s': %s"
-
-#: src/pacman/query.c:100
-msgid "cannot determine ownership of a directory"
-msgstr "ne peut déterminer le propriétaire d'un répertoire"
-
-#: src/pacman/query.c:105
-#, c-format
-msgid "cannot determine real path for '%s': %s"
-msgstr "ne peut déterminer le vrai chemin pour '%s': %s"
-
-#: src/pacman/query.c:119
-#, c-format
-msgid "%s is owned by %s %s\n"
-msgstr "%s appartient à %s %s\n"
-
-#: src/pacman/query.c:127
-#, c-format
-msgid "No package owns %s\n"
-msgstr "Aucun paquet ne contient %s\n"
-
-#: src/pacman/query.c:170 src/pacman/sync.c:453
-msgid "no usable package repositories configured.\n"
-msgstr "aucun dépôt de paquets utilisable n'a été défini.\n"
-
-# le sens est plus clair
-#: src/pacman/query.c:176
-msgid "Checking for package upgrades..."
-msgstr "Vérification des mises à jour disponibles... "
-
-#: src/pacman/query.c:183
-msgid "no upgrades found"
-msgstr "pas de mises à jour trouvées"
-
-#: src/pacman/query.c:221
-#, c-format
-msgid "group \"%s\" was not found\n"
-msgstr "Le groupe \"%s\" n'a pas été trouvé\n"
-
-#: src/pacman/query.c:232
-msgid "no package file was specified for --file\n"
-msgstr "aucun fichier du paquet spécifié pour --file\n"
-
-#: src/pacman/query.c:236
-#, c-format
-msgid "failed to load package '%s' (%s)\n"
-msgstr "le chargement du paquet '%s' (%s) a échoué\n"
-
-#: src/pacman/query.c:273 src/pacman/query.c:305
-#, c-format
-msgid "package \"%s\" not found\n"
-msgstr "paquet \"%s\" introuvable\n"
-
-#: src/pacman/remove.c:61 src/pacman/sync.c:568
-#, c-format
-msgid ":: group %s:\n"
-msgstr ":: Groupe %s:\n"
-
-# pour être cohérent
-#: src/pacman/remove.c:63
-msgid " Remove whole content? [Y/n] "
-msgstr " Supprimer tout le contenu? [O/n] "
-
-#: src/pacman/remove.c:67
-#, c-format
-msgid ":: Remove %s from group %s? [Y/n] "
-msgstr ":: Supprimer %s du groupe %s? [O/n] "
-
-#: src/pacman/remove.c:80 src/pacman/sync.c:480 src/pacman/sync.c:529
-#, c-format
-msgid "failed to init transaction (%s)\n"
-msgstr "l'initialisation de la transaction a échoué (%s)\n"
-
-#: src/pacman/remove.c:92
-#, c-format
-msgid "failed to add target '%s' (%s)\n"
-msgstr "l'ajout de la cible '%s' (%s) a échoué\n"
-
-#: src/pacman/remove.c:106
-#, c-format
-msgid ":: %s is required by %s\n"
-msgstr ":: %s est requis par %s\n"
-
-#: src/pacman/remove.c:128 src/pacman/util.c:324
-msgid "Targets:"
-msgstr "Cibles:"
-
-#: src/pacman/remove.c:131
-msgid ""
-"\n"
-"Do you want to remove these packages? [Y/n] "
-msgstr ""
-"\n"
-"Voulez-vous désinstaller ces paquets? [O/n] "
-
-# pour être cohérent
-#: src/pacman/sync.c:115
-msgid "Do you want to remove old packages from cache? [Y/n] "
-msgstr "Voulez vous supprimer du cache les paquets obsolètes? [O/n] "
-
-#: src/pacman/sync.c:117
-msgid "removing old packages from cache... "
-msgstr "Suppression du cache des paquets obsolètes... "
-
-#: src/pacman/sync.c:120
-msgid "could not access cache directory\n"
-msgstr "l'accès au répertoire du cache a échoué\n"
-
-# id.
-#: src/pacman/sync.c:181
-msgid "Do you want to remove all packages from cache? [Y/n] "
-msgstr "Voulez-vous supprimer du cache tous les paquets? [O/n] "
-
-#: src/pacman/sync.c:183
-msgid "removing all packages from cache... "
-msgstr "Suppression du cache de tous les paquets... "
-
-#: src/pacman/sync.c:186
-msgid "could not remove cache directory\n"
-msgstr "la suppression du répertoire de cache a échoué\n"
-
-#: src/pacman/sync.c:191
-msgid "could not create new cache directory\n"
-msgstr "la création du nouveau répertoire de cache a échoué\n"
-
-#: src/pacman/sync.c:218
-#, c-format
-msgid "failed to synchronize %s: %s\n"
-msgstr "la synchronisation %s: %s a échoué\n"
-
-#: src/pacman/sync.c:220
-#, c-format
-msgid "failed to update %s (%s)\n"
-msgstr "la mise à jour de %s (%s) a échoué\n"
-
-#: src/pacman/sync.c:223
-#, c-format
-msgid " %s is up to date\n"
-msgstr " %s est à jour;\n"
-
-#: src/pacman/sync.c:345
-#, c-format
-msgid "repository '%s' does not exist\n"
-msgstr "le dépôt '%s' n'a pas été trouvé\n"
-
-#: src/pacman/sync.c:361
-#, c-format
-msgid "package '%s' was not found in repository '%s'\n"
-msgstr "le paquet '%s' n'a pas été trouvé dans le dépôt '%s'\n"
-
-# pour être cohérent
-#: src/pacman/sync.c:381
-#, c-format
-msgid "package '%s' was not found\n"
-msgstr "le paquet \"%s\" n'a pas été trouvé.\n"
-
-#: src/pacman/sync.c:418
-#, c-format
-msgid "repository \"%s\" was not found.\n"
-msgstr "le dépôt \"%s\" n'a pas été trouvé.\n"
-
-#: src/pacman/sync.c:490
-msgid ":: Synchronizing package databases...\n"
-msgstr ":: Synchronisation des bases de données de paquets...\n"
-
-#: src/pacman/sync.c:491
-msgid "synchronizing package lists"
-msgstr "Synchronisation des listes de paquets"
-
-#: src/pacman/sync.c:493
-msgid "failed to synchronize any databases"
-msgstr "la synchronisation a échoué"
-
-# un processus ne démarre pas (les véhiculent démarrent), il débute
-#: src/pacman/sync.c:499
-msgid ":: Starting full system upgrade...\n"
-msgstr ":: Début de la mise à jour complète du système...\n"
-
-#: src/pacman/sync.c:500
-msgid "starting full system upgrade"
-msgstr "Début de la mise à jour complète du système"
-
-#: src/pacman/sync.c:518
-msgid ""
-"\n"
-":: pacman has detected a newer version of the \"pacman\" package.\n"
-msgstr ""
-"\n"
-":: pacman a détecté une version plus récente du paquet \"pacman\".\n"
-
-# moins littéral, mais plus explicite
-#: src/pacman/sync.c:519
-msgid ":: It is recommended that you allow pacman to upgrade itself\n"
-msgstr ":: Il est recommandé de mettre d'abord pacman à jour\n"
-
-#: src/pacman/sync.c:520
-msgid ":: first, then you can re-run the operation with the newer version.\n"
-msgstr ":: puis de relancer l'opération avec la nouvelle version.\n"
-
-#: src/pacman/sync.c:522
-msgid ":: Upgrade pacman first? [Y/n] "
-msgstr ":: Mettre à jour pacman d'abord? [O/n] "
-
-#: src/pacman/sync.c:537
-#, c-format
-msgid "pacman: %s\n"
-msgstr "pacman: %s\n"
-
-#: src/pacman/sync.c:572
-msgid ":: Install whole content? [Y/n] "
-msgstr ":: Installer tout le contenu? [O/n] "
-
-#: src/pacman/sync.c:579
-#, c-format
-msgid ":: Install %s from group %s? [Y/n] "
-msgstr ":: Installer %s du groupe %s? [O/n] "
-
-# pour être cohérent
-#: src/pacman/sync.c:603
-#, c-format
-msgid "'%s': not found in sync db\n"
-msgstr "'%s': non trouvé dans la base de données de synchronisation\n"
-
-#: src/pacman/sync.c:621
-msgid "requires"
-msgstr "requiert"
-
-#: src/pacman/sync.c:663
-msgid " local database is up to date\n"
-msgstr "La base de données locale est à jour.\n"
-
-#: src/pacman/sync.c:672
-msgid ""
-"\n"
-"Beginning download...\n"
-msgstr ""
-"\n"
-"Début du téléchargement...\n"
-
-#: src/pacman/sync.c:676
-msgid "Proceed with download? [Y/n] "
-msgstr "Procéder au téléchargement? [O/n] "
-
-#: src/pacman/sync.c:684
-msgid ""
-"\n"
-"Beginning upgrade process...\n"
-msgstr ""
-"\n"
-"Début du processus de mise à jour...\n"
-
-#: src/pacman/sync.c:688
-msgid "Proceed with installation? [Y/n] "
-msgstr "Procéder à l'installation? [O/n] "
-
-#: src/pacman/trans.c:55
-msgid "checking dependencies... "
-msgstr "Vérification des dépendances... "
-
-#: src/pacman/trans.c:59
-msgid "checking for file conflicts... "
-msgstr "Recherche des conflits de fichiers... "
-
-#: src/pacman/trans.c:63
-msgid "cleaning up... "
-msgstr "Nettoyage... "
-
-#: src/pacman/trans.c:66
-msgid "resolving dependencies... "
-msgstr "Résolution des dépendances... "
-
-# la formulation anglaise non plus n'est pas claire...
-#: src/pacman/trans.c:69
-msgid "looking for inter-conflicts... "
-msgstr "Recherche des conflits possibles entre paquets... "
-
-#: src/pacman/trans.c:86
-#, c-format
-msgid "installing %s... "
-msgstr "Installation de %s... "
-
-#: src/pacman/trans.c:93
-#, c-format
-msgid "installed %s (%s)"
-msgstr "%s installé (%s)"
-
-#: src/pacman/trans.c:100
-#, c-format
-msgid "removing %s... "
-msgstr "Désinstallation de %s... "
-
-#: src/pacman/trans.c:107
-#, c-format
-msgid "removed %s (%s)"
-msgstr "%s désinstallé (%s)"
-
-#: src/pacman/trans.c:114
-#, c-format
-msgid "upgrading %s... "
-msgstr "Mise à jour de %s... "
-
-#: src/pacman/trans.c:121
-#, c-format
-msgid "upgraded %s (%s -> %s)"
-msgstr "%s mis à jour (%s -> %s)"
-
-#: src/pacman/trans.c:128
-msgid "checking package integrity... "
-msgstr "Analyse de l'intégrité des paquets... "
-
-#: src/pacman/trans.c:144
-msgid "failed.\n"
-msgstr "Échec.\n"
-
-# pas du tout littéral, mais plus compréhensible
-#: src/pacman/trans.c:151
-#, c-format
-msgid ":: Retrieving packages from %s...\n"
-msgstr ":: Récupération des paquets du dépôt %s...\n"
-
-# plus clair
-#: src/pacman/trans.c:172
-#, c-format
-msgid ":: %1$s requires %2$s from IgnorePkg. Install %2$s? [Y/n] "
-msgstr ""
-":: %1$s requiert %2$s, défini comme paquet à ignorer (IgnorePkg). Installer %"
-"2$s tout de même? [O/n] "
-
-#: src/pacman/trans.c:177
-#, c-format
-msgid ":: %s is in IgnorePkg. Install anyway? [Y/n] "
-msgstr ""
-":: %s est défini comme paquet à ignorer (IgnorePkg). L'installer tout de "
-"même? [O/n] "
-
-#: src/pacman/trans.c:190
-#, c-format
-msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
-msgstr ""
-":: %s est indiqué comme paquet à conserver (HoldPkg). Le supprimer tout de "
-"même? [O/n] "
-
-#: src/pacman/trans.c:203
-#, c-format
-msgid ":: Replace %s with %s/%s? [Y/n] "
-msgstr ":: Remplacer %s avec %s/%s? [O/n] "
-
-# pour être cohérent
-#: src/pacman/trans.c:218
-#, c-format
-msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
-msgstr ":: %s est en conflit avec %s. Supprimer %s? [O/n] "
-
-#: src/pacman/trans.c:234
-#, c-format
-msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
-msgstr ""
-":: %s-%s: la version locale est plus récente. Mettre à jour tout de même? [O/"
-"n] "
-
-#: src/pacman/trans.c:252
-#, c-format
-msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
-msgstr ""
-":: %s-%s: la version locale est à jour. Mettre à jour tout de même? [O/n] "
-
-#: src/pacman/trans.c:270
-#, c-format
-msgid ":: Archive %s is corrupted. Do you want to delete it? [Y/n] "
-msgstr ":: L'archive %s est corrompue. Voulez vous l'effacer? [O/n] "
-
-#: src/pacman/trans.c:326
-msgid "installing"
-msgstr "Installation"
-
-#: src/pacman/trans.c:329
-msgid "upgrading"
-msgstr "Mise à jour"
-
-#: src/pacman/trans.c:332
-msgid "removing"
-msgstr "Désinstallation"
-
-#: src/pacman/trans.c:335
-msgid "checking for file conflicts"
-msgstr "Analyse des conflits entre fichiers"
-
-# bon, on peut discuter là dessus; mais pacman -Qi avec tous ses "aucun" est vraiment trop laid... je le préfère comme ça
-#: src/pacman/util.c:259
-#, c-format
-msgid "None\n"
-msgstr "--\n"
-
-#: src/pacman/util.c:311
-msgid "Remove:"
-msgstr "Suppression:"
-
-#: src/pacman/util.c:319
-#, c-format
-msgid ""
-"\n"
-"Total Removed Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Taille totale des paquets supprimés: %.2f Mo\n"
-
-#: src/pacman/util.c:330
-#, c-format
-msgid ""
-"\n"
-"Total Package Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Taille totale des paquets: %.2f Mo\n"
-
-#: src/pacman/util.c:337
-#, c-format
-msgid "Total Installed Size: %.2f MB\n"
-msgstr "Taille totale des paquets installés: %.2f Mo\n"
-
-#~ msgid "requires: %s"
-#~ msgstr "requiert: %s"
-
-#~ msgid "'%s': %s\n"
-#~ msgstr "'%s': %s\n"
-
-#~ msgid "is required by"
-#~ msgstr "est requit par"
-
-#, fuzzy
-#~ msgid "Installed Size : %ld K\n"
-#~ msgstr "Taille d'installation : %ld K\n"
-
-#~ msgid "memory allocation failure\n"
-#~ msgstr "erreur d'allocation mémoire\n"
-
-#~ msgid "add target %s\n"
-#~ msgstr "ajout de la cible %s\n"
-
-#~ msgid "could not add target (%s)\n"
-#~ msgstr "n'a pas pu ajouter la cible (%s)\n"
-
-#~ msgid "conflict: %s"
-#~ msgstr "conflit: %s"
-
-#~ msgid "could not release transaction (%s)"
-#~ msgstr "n'a pas pu libérer la transaction (%s)"
-
-#~ msgid "Size : %ld\n"
-#~ msgstr "Taille : %ld\n"
-
-#~ msgid "Reason : "
-#~ msgstr "Raison : "
-
-#~ msgid "Unknown\n"
-#~ msgstr "Inconnu\n"
-
-#~ msgid "NOT "
-#~ msgstr "N'EST PAS"
-
-#~ msgid "Name : %s\n"
-#~ msgstr "Nom : %s\n"
-
-#~ msgid "Groups :"
-#~ msgstr "Groupes :"
-
-#~ msgid "Provides :"
-#~ msgstr "Forunit :"
-
-#~ msgid "Depends On :"
-#~ msgstr "Depend De :"
-
-#~ msgid "Removes :"
-#~ msgstr "Supprimer :"
-
-#~ msgid "Conflicts With :"
-#~ msgstr "Conflits Avec :"
-
-#~ msgid "Size (compressed) : %ld\n"
-#~ msgstr "Taille (compressé) : %ld\n"
-
-#~ msgid "Size (uncompressed):%ld\n"
-#~ msgstr "Taille (décompressé):%ld\n"
-
-#~ msgid " looking in the database\n"
-#~ msgstr " rechercher dans la base de données\n"
-
-#~ msgid "bad root path"
-#~ msgstr "mauvais répertoire racine"
-
-#~ msgid "failed to set option LOGMASK (%s)\n"
-#~ msgstr "échec d'affectation de l'option LOGMASK (%s)\n"
-
-#~ msgid "failed to set option LOGCB (%s)\n"
-#~ msgstr "échec d'affectation de l'option LOGCB (%s)\n"
-
-#, fuzzy
-#~ msgid "failed to set option DLCB (%s)\n"
-#~ msgstr "échec d'affectation de l'option LOGCB (%s)\n"
-
-#, fuzzy
-#~ msgid "failed to set option DLFNM (%s)\n"
-#~ msgstr "échec d'affectation de l'option LOGFILE (%s)\n"
-
-#, fuzzy
-#~ msgid "failed to set option DLOFFSET (%s)\n"
-#~ msgstr "échec d'affectation de l'option LOGFILE (%s)\n"
-
-#, fuzzy
-#~ msgid "failed to set option DLT0 (%s)\n"
-#~ msgstr "échec d'affectation de l'option DBPATH (%s)\n"
-
-#, fuzzy
-#~ msgid "failed to set option DLT (%s)\n"
-#~ msgstr "échec d'affectation de l'option DBPATH (%s)\n"
-
-#, fuzzy
-#~ msgid "failed to set option DLRATE (%s)\n"
-#~ msgstr "échec d'affectation de l'option DBPATH (%s)\n"
-
-#, fuzzy
-#~ msgid "failed to set option DLXFERED1 (%s)\n"
-#~ msgstr "échec d'affectation de l'option LOGFILE (%s)\n"
-
-#, fuzzy
-#~ msgid "failed to set option DLETA_H (%s)\n"
-#~ msgstr "échec d'affectation de l'option DBPATH (%s)\n"
-
-#, fuzzy
-#~ msgid "failed to set option DLETA_M (%s)\n"
-#~ msgstr "échec d'affectation de l'option DBPATH (%s)\n"
-
-#, fuzzy
-#~ msgid "failed to set option DLETA_S (%s)\n"
-#~ msgstr "échec d'affectation de l'option LOGMASK (%s)\n"
-
-#~ msgid "failed to set option IGNOREPKG (%s)\n"
-#~ msgstr "échec d'affectation de l'option IGNOREPKG (%s)\n"
-
-#~ msgid "%s is not a file.\n"
-#~ msgstr "%s n'est pas un fichier.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Targets:"
-#~ msgstr ""
-#~ "\n"
-#~ "Cibles:"
-
-#~ msgid ":: Starting local database upgrade...\n"
-#~ msgstr ":: Démarrage de la mise à jour de base de données locale...\n"
-
-#~ msgid "could not add target '%s': %s\n"
-#~ msgstr "n'a pas pu ajouter la cible '%s': %s\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Targets: "
-#~ msgstr ""
-#~ "\n"
-#~ "Cibles: "
-
-#~ msgid ""
-#~ "\n"
-#~ "Total Uncompressed Package Size: %.1f MB\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Taille Totale du Paquet Décompressé: %.1f MB\n"
-
-#~ msgid "Proceed with upgrade? [Y/n] "
-#~ msgstr "Procéder aux mises à jour? [O/n] "
-
-#~ msgid "failed to allocated %d bytes\n"
-#~ msgstr "échec lors de l'allocation de %d bytes\n"
-
-#~ msgid "config: new section '%s'\n"
-#~ msgstr "config: nouvelle section '%s'\n"
-
-#~ msgid "config: line %d: bad section name\n"
-#~ msgstr "config: ligne %d: mauvais nom de section\n"
-
-#~ msgid ""
-#~ "config: line %d: '%s' is reserved and cannot be used as a package tree\n"
-#~ msgstr ""
-#~ "config: ligne %d: '%s' est réservé et ne peut être utilisé comme "
-#~ "arborescence de paquet\n"
-
-#~ msgid "config: line %d: syntax error\n"
-#~ msgstr "config: ligne %d: erreur de syntaxe\n"
-
-#~ msgid "config: line %d: all directives must belong to a section\n"
-#~ msgstr ""
-#~ "config: ligne %d: toutes les instructions doivent être relatives à la "
-#~ "section\n"
-
-#~ msgid "failed to set option USESYSLOG (%s)\n"
-#~ msgstr "échec d'affection de l'option USESYSLOG (%s)\n"
-
-#~ msgid "config: including %s\n"
-#~ msgstr "config: inclusion de %s\n"
-
-#~ msgid "failed to set option NOUPGRADE (%s)\n"
-#~ msgstr "échec d'affectation de l'option NOUPGRADE (%s)\n"
-
-#~ msgid "failed to set option NOEXTRACT (%s)\n"
-#~ msgstr "échec d'affectation de l'option NOEXTRACT (%s)\n"
-
-#~ msgid "config: log file: %s\n"
-#~ msgstr "config: fichier de log: %s\n"
-
-#~ msgid "failed to set option UPGRADEDELAY (%s)\n"
-#~ msgstr "échec d'affectation de l'option UPGRADEDELAY (%s)\n"
-
-#~ msgid ""
-#~ "Warning: UpgradeDelay is very high.\n"
-#~ "If a package is updated often it will never be upgraded.\n"
-#~ "Manually update such packages or use a lower value to avoid this "
-#~ "problem.\n"
-#~ msgstr ""
-#~ "Avertissement: UpgradeDelay est très élevé.\n"
-#~ "Si un paquet est mis à jour souvent, ces mise à jour ne seront jamais "
-#~ "appliquée.\n"
-#~ "Mettez à jour ces paquets manuellement ou utilisez une valeur plus basse "
-#~ "pour résoudre ce problème.\n"
-
-#~ msgid "config: line %d: bad server location\n"
-#~ msgstr "config: ligne %d: mauvais adressage de serveur\n"
-
-#~ msgid "could not allocate %d bytes\n"
-#~ msgstr "n'a pas pu allouer %d bytes\n"
-
-#~ msgid "config: line %d: protocol %s is not supported\n"
-#~ msgstr "config: ligne %d: le protocole %s n'est pas supporté\n"
-
-#~ msgid "connecting to %s:21\n"
-#~ msgstr "connexion à %s:21\n"
-
-#~ msgid "cannot connect to %s\n"
-#~ msgstr "n'a pas pu se connecter à %s\n"
-
-#~ msgid "anonymous login failed\n"
-#~ msgstr "la connexion en utilisateur anonyme à échouée\n"
-
-#~ msgid "could not cwd to %s: %s\n"
-#~ msgstr "n'a pas pu exécuter cwd pour %s: %s\n"
-
-#~ msgid "failed to set passive mode\n"
-#~ msgstr "échec d'application mode passif\n"
-
-#~ msgid "FTP passive mode not set\n"
-#~ msgstr "mode FTP passif non défini\n"
-
-#~ msgid "connecting to %s\n"
-#~ msgstr "connexion à %s\n"
-
-#~ msgid "connecting to %s:%u\n"
-#~ msgstr "connexion à %s:%u\n"
-
-#~ msgid "could not chdir to %s\n"
-#~ msgstr "n'a pas pu exécuter chdir vers %s\n"
-
-#~ msgid "running command: %s\n"
-#~ msgstr "exécution de la commande: %s\n"
-
-#~ msgid "running XferCommand: fork failed!\n"
-#~ msgstr "exécution de XferCommand: échec du fork!\n"
-
-#~ msgid "XferCommand command returned non-zero status code (%d)\n"
-#~ msgstr ""
-#~ "la commande XferCommand à retourné un code de statut différent de zéro (%"
-#~ "d)\n"
-
-#~ msgid "failed to get filesize for %s\n"
-#~ msgstr "échec de récupération de la taille de fichier pour %s\n"
-
-#~ msgid "failed to get mtime for %s\n"
-#~ msgstr "échec de récupération de la date de modification pour %s\n"
-
-#~ msgid "mtimes are identical, skipping %s\n"
-#~ msgstr "le dates de modifications sont identiques, ignoré %s\n"
-
-#~ msgid "failed to resume download -- restarting\n"
-#~ msgstr "échec de reprise du téléchargement -- redémarrage\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "failed downloading %s from %s: %s\n"
-#~ msgstr ""
-#~ "\n"
-#~ "échec du téléchargement de %s depuis %s: %s\n"
-
-#~ msgid "copying %s to %s/%s\n"
-#~ msgstr "copie %s vers %s/%s\n"
-
-#~ msgid "failed copying %s\n"
-#~ msgstr "échec de copie de %s\n"
-
-#~ msgid " %s is already in the current directory\n"
-#~ msgstr " %s est déjà dans le répertoire courant\n"
-
-#~ msgid "failed to download %s\n"
-#~ msgstr "échec lors du téléchargement de %s\n"
-
-#~ msgid "failed to set option CACHEDIR (%s)\n"
-#~ msgstr "échec d'affectation de l'option CACHEDIR (%s)\n"
-
-#~ msgid "failed to get lastupdate time for %s (no big deal)\n"
-#~ msgstr ""
-#~ "échec d'obtention de la dernière mise à jour pour %s (ce n'est pas un "
-#~ "gros problème)\n"
-
-#~ msgid "sync: new mtime for %s: %s\n"
-#~ msgstr "sync: nouvelle valeur mtime pour %s: %s\n"
-
-#~ msgid "%s-%s-%s%s is already in the cache\n"
-#~ msgstr "%s-%s-%s%s est déjà en cache\n"
-
-#~ msgid "no %s cache exists. creating...\n"
-#~ msgstr "aucun cache %s existant. Création...\n"
-
-#~ msgid "warning: no %s cache exists. creating..."
-#~ msgstr "avertissement: aucun cache %s existant, création..."
-
-#~ msgid "couldn't create package cache, using /tmp instead\n"
-#~ msgstr ""
-#~ "n'a pas pu créer le cache de paquets, utilisation de /tmp à la place\n"
-
-#~ msgid "warning: couldn't create package cache, using /tmp instead"
-#~ msgstr ""
-#~ "avertissement: n'a pas pu créer le cache de paquets, utilisation de /tmp "
-#~ "à la place"
-
-#~ msgid "failed to retrieve some files from %s\n"
-#~ msgstr "échec de récupération de certains fichiers depuis %s\n"
diff --git a/src/pacman/po/hu.po b/src/pacman/po/hu.po
deleted file mode 100644
index 5dc52696..00000000
--- a/src/pacman/po/hu.po
+++ /dev/null
@@ -1,1078 +0,0 @@
-# Hungarian translations for pacman package.
-# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
-# This file is distributed under the same license as the Pacman package manager package.
-# Miklos Vajna <vmiklos@frugalware.org>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: hu\n"
-"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-04-28 04:02-0400\n"
-"PO-Revision-Date: 2006-09-03 13:52+0200\n"
-"Last-Translator: Nagy Gabor <ngaba@petra.hos.u-szeged.hu>\n"
-"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: src/pacman/add.c:72 src/pacman/remove.c:82 src/pacman/sync.c:482
-#: src/pacman/sync.c:531
-#, c-format
-msgid ""
-" if you're sure a package manager is not already running,\n"
-" you can remove %s%s\n"
-msgstr ""
-" ha biztos, hogy nem fut egy csomagkezelõ, abban az esetben\n"
-" eltávolíthatja a %s%s fájlt\n"
-
-#: src/pacman/add.c:79
-msgid "loading package data... "
-msgstr "csomag adatainak betöltése... "
-
-#: src/pacman/add.c:83
-#, c-format
-msgid "failed to add target '%s' (%s)"
-msgstr "nem sikerült a(z) '%s' célt hozzáadni a tranzakcióhoz (%s)"
-
-#: src/pacman/add.c:88 src/pacman/sync.c:196 src/pacman/trans.c:73
-#: src/pacman/trans.c:80 src/pacman/trans.c:91 src/pacman/trans.c:105
-#: src/pacman/trans.c:119 src/pacman/trans.c:131 src/pacman/trans.c:142
-msgid "done.\n"
-msgstr "kész.\n"
-
-#: src/pacman/add.c:95 src/pacman/remove.c:101 src/pacman/sync.c:616
-#, c-format
-msgid "failed to prepare transaction (%s)\n"
-msgstr "nem sikerült elõkészíteni a tranzakciót (%s)\n"
-
-#: src/pacman/add.c:104
-#, c-format
-msgid ":: %s: requires %s"
-msgstr ":: %s: igényli a következõt: %s"
-
-#: src/pacman/add.c:125 src/pacman/sync.c:643
-#, c-format
-msgid ":: %s: conflicts with %s"
-msgstr ":: %s: ütközik a következõvel: %s"
-
-#: src/pacman/add.c:134 src/pacman/sync.c:707
-#, c-format
-msgid "%s exists in both '%s' and '%s'\n"
-msgstr "%s létezik ebben: '%s' és ebben: '%s'\n"
-
-#: src/pacman/add.c:140 src/pacman/sync.c:713
-#, c-format
-msgid "%s: %s exists in filesystem\n"
-msgstr "%s: %s létezik a fájlrendszerben\n"
-
-#: src/pacman/add.c:146 src/pacman/sync.c:719 src/pacman/sync.c:725
-msgid ""
-"\n"
-"errors occurred, no packages were upgraded.\n"
-msgstr ""
-"\n"
-"hibák léptek fel, nem frissült csomag.\n"
-
-#: src/pacman/add.c:156 src/pacman/sync.c:650
-#, c-format
-msgid ":: %.1f MB required, have %.1f MB"
-msgstr ":: %.1f MB szükséges, %.1f MB áll rendelkezésre"
-
-#: src/pacman/add.c:169 src/pacman/remove.c:141 src/pacman/sync.c:700
-#, c-format
-msgid "failed to commit transaction (%s)\n"
-msgstr "nem sikerült végrehajtani a tranzakciót (%s)\n"
-
-#: src/pacman/add.c:179 src/pacman/remove.c:151 src/pacman/sync.c:524
-#: src/pacman/sync.c:741
-#, c-format
-msgid "failed to release transaction (%s)\n"
-msgstr "nem sikerült lezárni a tranzakciót (%s)\n"
-
-#: src/pacman/log.c:63
-#, c-format
-msgid "debug"
-msgstr "hibakeresés"
-
-#: src/pacman/log.c:66
-#, c-format
-msgid "error"
-msgstr "hiba"
-
-#: src/pacman/log.c:69
-#, c-format
-msgid "warning"
-msgstr "figyelmeztetés"
-
-#: src/pacman/log.c:75
-#, c-format
-msgid "function"
-msgstr "függvény"
-
-#: src/pacman/log.c:194
-msgid "Y"
-msgstr "I"
-
-#: src/pacman/log.c:194
-msgid "YES"
-msgstr "IGEN"
-
-#: src/pacman/log.h:30
-msgid "error: "
-msgstr "hiba: "
-
-#: src/pacman/log.h:34
-msgid "warning: "
-msgstr "figyelmeztetés: "
-
-#: src/pacman/package.c:60
-msgid "Explicitly installed"
-msgstr "Kézzel telepítve"
-
-#: src/pacman/package.c:63
-msgid "Installed as a dependency for another package"
-msgstr "Egy másik csomag függõségeként lett telepítve"
-
-#: src/pacman/package.c:66 src/pacman/package.c:90
-msgid "Unknown"
-msgstr "Ismeretlen"
-
-#: src/pacman/package.c:70 src/pacman/package.c:121
-msgid "Description : "
-msgstr "Leírás : "
-
-#: src/pacman/package.c:73 src/pacman/package.c:127
-#, c-format
-msgid "Name : %s\n"
-msgstr "Név : %s\n"
-
-#: src/pacman/package.c:74 src/pacman/package.c:128
-#, c-format
-msgid "Version : %s\n"
-msgstr "Verzió : %s\n"
-
-#: src/pacman/package.c:75
-#, c-format
-msgid "URL : %s\n"
-msgstr "URL : %s\n"
-
-#: src/pacman/package.c:76
-msgid "License :"
-msgstr "Licenc :"
-
-#: src/pacman/package.c:77 src/pacman/package.c:129
-msgid "Groups :"
-msgstr "Csoportok :"
-
-#: src/pacman/package.c:78 src/pacman/package.c:130
-msgid "Provides :"
-msgstr "Szolgáltatja :"
-
-#: src/pacman/package.c:79 src/pacman/package.c:131
-msgid "Depends On :"
-msgstr "Függ :"
-
-#: src/pacman/package.c:80 src/pacman/package.c:132
-msgid "Removes :"
-msgstr "Eltávolítja :"
-
-#: src/pacman/package.c:83
-msgid "Required By :"
-msgstr "Igényli :"
-
-#: src/pacman/package.c:85 src/pacman/package.c:133
-msgid "Conflicts With :"
-msgstr "Ütközik :"
-
-#: src/pacman/package.c:86 src/pacman/package.c:136
-#, c-format
-msgid "Installed Size : %6.2f K\n"
-msgstr "Helyfoglalás : %6.2f K\n"
-
-#: src/pacman/package.c:87
-#, c-format
-msgid "Packager : %s\n"
-msgstr "Csomagoló : %s\n"
-
-#: src/pacman/package.c:88
-#, c-format
-msgid "Architecture : %s\n"
-msgstr "Architektúra : %s\n"
-
-#: src/pacman/package.c:89
-#, c-format
-msgid "Build Date : %s %s\n"
-msgstr "Fordítás ideje : %s %s\n"
-
-#: src/pacman/package.c:90
-#, c-format
-msgid "Build Type : %s\n"
-msgstr "Fordítás Típusa : %s\n"
-
-#: src/pacman/package.c:92
-#, c-format
-msgid "Install Date : %s %s\n"
-msgstr "Telepítés ideje : %s %s\n"
-
-#: src/pacman/package.c:93
-#, c-format
-msgid "Install Reason : %s\n"
-msgstr "Telepítés oka : %s\n"
-
-#: src/pacman/package.c:95
-#, c-format
-msgid "Install Script : %s\n"
-msgstr "Telepítõ szkript: %s\n"
-
-#: src/pacman/package.c:96
-msgid "Yes"
-msgstr "Igen"
-
-#: src/pacman/package.c:96
-msgid "No"
-msgstr "Nem"
-
-#: src/pacman/package.c:126
-#, c-format
-msgid "Repository : %s\n"
-msgstr "Repó : %s\n"
-
-#: src/pacman/package.c:134
-msgid "Replaces :"
-msgstr "Lecseréli :"
-
-#: src/pacman/package.c:135
-#, c-format
-msgid "Download Size : %6.2f K\n"
-msgstr "Tömörített méret: %6.2f K\n"
-
-#: src/pacman/package.c:144
-#, c-format
-msgid "MD5 Sum : %s"
-msgstr "MD5 Sum : %s"
-
-#: src/pacman/package.c:147
-#, c-format
-msgid "SHA1 Sum : %s"
-msgstr "SHA1 Sum : %s"
-
-#: src/pacman/package.c:158
-#, c-format
-msgid "Backup Files:\n"
-msgstr "Backup fájlok:\n"
-
-#: src/pacman/package.c:180
-#, c-format
-msgid "error calculating checksums for %s\n"
-msgstr "hiba a(z) %s ellenõrzõ összegének számítása közben\n"
-
-#: src/pacman/package.c:193
-#, c-format
-msgid "MODIFIED\t%s\n"
-msgstr "MÓDOSÍTVA\t%s\n"
-
-#: src/pacman/package.c:195
-#, c-format
-msgid "Not Modified\t%s\n"
-msgstr "Nem módosítva\t%s\n"
-
-#: src/pacman/package.c:200
-#, c-format
-msgid "MISSING\t\t%s\n"
-msgstr "HIÁNYZIK\t\t%s\n"
-
-#: src/pacman/package.c:206
-#, c-format
-msgid "(none)\n"
-msgstr "(nincs)\n"
-
-#: src/pacman/package.c:246
-#, c-format
-msgid "No changelog available for '%s'.\n"
-msgstr "Nem áll rendelkezésre változási napló a(z) '%s' csomaghoz.\n"
-
-#: src/pacman/pacman.c:90
-#, c-format
-msgid "usage: %s {-h --help}\n"
-msgstr "használat: %s {-h --help}\n"
-
-#: src/pacman/pacman.c:91
-#, c-format
-msgid " %s {-V --version}\n"
-msgstr " %s {-V --version}\n"
-
-#: src/pacman/pacman.c:92
-#, c-format
-msgid " %s {-A --add} [options] <file>\n"
-msgstr " %s {-A --add} [opciók] <fájl>\n"
-
-#: src/pacman/pacman.c:93
-#, c-format
-msgid " %s {-F --freshen} [options] <file>\n"
-msgstr " %s {-F --freshen} [opciók] <fájl>\n"
-
-#: src/pacman/pacman.c:94
-#, c-format
-msgid " %s {-Q --query} [options] [package]\n"
-msgstr " %s {-Q --query} [opciók] [csomag]\n"
-
-#: src/pacman/pacman.c:95
-#, c-format
-msgid " %s {-R --remove} [options] <package>\n"
-msgstr " %s {-R --remove} [opciók] <csomag>\n"
-
-#: src/pacman/pacman.c:96
-#, c-format
-msgid " %s {-S --sync} [options] [package]\n"
-msgstr " %s {-S --sync} [opciók] [csomag]\n"
-
-#: src/pacman/pacman.c:97
-#, c-format
-msgid " %s {-U --upgrade} [options] <file>\n"
-msgstr " %s {-U --upgrade} [opciók] <fájl>\n"
-
-#: src/pacman/pacman.c:98
-#, c-format
-msgid ""
-"\n"
-"use '%s --help' with other options for more syntax\n"
-msgstr ""
-"\n"
-"használja a '%s --help'-et más opciókkal további szintaxishoz\n"
-
-#: src/pacman/pacman.c:101
-#, c-format
-msgid "usage: %s {-A --add} [options] <file>\n"
-msgstr "használat: %s {-A --add} [opciók] <fájl>\n"
-
-#: src/pacman/pacman.c:102 src/pacman/pacman.c:107 src/pacman/pacman.c:119
-#: src/pacman/pacman.c:124 src/pacman/pacman.c:138
-#, c-format
-msgid "options:\n"
-msgstr "opciók:\n"
-
-#: src/pacman/pacman.c:103 src/pacman/pacman.c:109 src/pacman/pacman.c:120
-#: src/pacman/pacman.c:140
-#, c-format
-msgid " -d, --nodeps skip dependency checks\n"
-msgstr " -d, --nodeps függõségi ellenõrzések kihagyása\n"
-
-#: src/pacman/pacman.c:104 src/pacman/pacman.c:121 src/pacman/pacman.c:142
-#, c-format
-msgid " -f, --force force install, overwrite conflicting files\n"
-msgstr ""
-" -f, --force a telepítés erõltetése, ütközõ fájlok felülírása\n"
-
-#: src/pacman/pacman.c:106
-#, c-format
-msgid "usage: %s {-R --remove} [options] <package>\n"
-msgstr "használat: %s {-R --remove} [opciók] <csomag>\n"
-
-#: src/pacman/pacman.c:108
-#, c-format
-msgid ""
-" -c, --cascade remove packages and all packages that depend on them\n"
-msgstr ""
-" -c, --cascade a csomagok és az õket igénylõ csomagok eltávolítása\n"
-
-#: src/pacman/pacman.c:110
-#, c-format
-msgid ""
-" -k, --dbonly only remove database entry, do not remove files\n"
-msgstr ""
-" -k, --dbonly csak az adatbázis-bejegyzést törölje, a fájlokat ne\n"
-
-#: src/pacman/pacman.c:111
-#, c-format
-msgid " -n, --nosave remove configuration files as well\n"
-msgstr " -n, --nosave a beállítási fájlokat is törölje\n"
-
-#: src/pacman/pacman.c:112
-#, c-format
-msgid ""
-" -s, --recursive remove dependencies also (that won't break packages)\n"
-msgstr ""
-" -s, --recursive a függõségeket is távolítsa el (melyeknél ez "
-"biztonságos)\n"
-
-#: src/pacman/pacman.c:115
-#, c-format
-msgid "usage: %s {-F --freshen} [options] <file>\n"
-msgstr "használat: %s {-F --freshen} [opciók] <fájl>\n"
-
-#: src/pacman/pacman.c:117
-#, c-format
-msgid "usage: %s {-U --upgrade} [options] <file>\n"
-msgstr "használat: %s {-U --upgrade} [opciók] <fájl>\n"
-
-#: src/pacman/pacman.c:123
-#, c-format
-msgid "usage: %s {-Q --query} [options] [package]\n"
-msgstr "használat: %s {-Q --query} [opciók] [csomag]\n"
-
-#: src/pacman/pacman.c:125
-#, c-format
-msgid " -c, --changelog view the changelog of a package\n"
-msgstr " -c, --changelog a változások naplójának megtekintése\n"
-
-#: src/pacman/pacman.c:126
-#, c-format
-msgid ""
-" -e, --orphans list all packages installed as dependencies but no "
-"longer\n"
-msgstr ""
-" -e, --orphans azon csomagok listázása, amelyek függõségként "
-"kerültek\n"
-
-#: src/pacman/pacman.c:127
-#, c-format
-msgid " required by any package\n"
-msgstr ""
-" telepítésre, de most már nem igényli õket más csomag\n"
-
-#: src/pacman/pacman.c:128 src/pacman/pacman.c:143
-#, c-format
-msgid " -g, --groups view all members of a package group\n"
-msgstr " -g, --groups egy csoport összes tagjának megtekintése\n"
-
-#: src/pacman/pacman.c:129 src/pacman/pacman.c:144
-#, c-format
-msgid " -i, --info view package information\n"
-msgstr " -i, --info csomaginformációk megtekintése\n"
-
-#: src/pacman/pacman.c:130
-#, c-format
-msgid " -l, --list list the contents of the queried package\n"
-msgstr " -l, --list a lekérdezett csomag tartalmának listázása\n"
-
-#: src/pacman/pacman.c:131
-#, c-format
-msgid ""
-" -m, --foreign list installed packages not found in sync db(s)\n"
-msgstr ""
-" -m, --foreign a távoli repókban nem talált telepített csomagok "
-"listája\n"
-
-#: src/pacman/pacman.c:132
-#, c-format
-msgid " -o, --owns <file> query the package that owns <file>\n"
-msgstr " -o, --owns <fájl> a <fájl>-t tartalmazó csomag lekérdezése\n"
-
-#: src/pacman/pacman.c:133
-#, c-format
-msgid " -p, --file <package> query a package file instead of the database\n"
-msgstr ""
-" -p, --file <csomag> a <csomag> csomagfájl lekérdezése az adatbázis "
-"helyett\n"
-
-#: src/pacman/pacman.c:134
-#, c-format
-msgid ""
-" -s, --search <regex> search locally-installed packages for matching "
-"strings\n"
-msgstr " -s, --search <regex> keresés a telepített csomagok között\n"
-
-#: src/pacman/pacman.c:135
-#, c-format
-msgid " -u, --upgrades list all packages that can be upgraded\n"
-msgstr " -u, --upgrades az összes frissíthetõ csomag listázása\n"
-
-#: src/pacman/pacman.c:137
-#, c-format
-msgid "usage: %s {-S --sync} [options] [package]\n"
-msgstr "használat: %s {-S --sync} [opciók] [csomag]\n"
-
-#: src/pacman/pacman.c:139
-#, c-format
-msgid ""
-" -c, --clean remove old packages from cache directory (-cc for "
-"all)\n"
-msgstr ""
-" -c, --clean a régi csomagok törlése a gyorsítótárkönyvtárból\n"
-" (használja a '-cc'-t az összeshez)\n"
-
-#: src/pacman/pacman.c:141
-#, c-format
-msgid " -e, --dependsonly install dependencies only\n"
-msgstr " -e, --dependsonly csak a függõségek telepítése\n"
-
-#: src/pacman/pacman.c:145
-#, c-format
-msgid " -l, --list <repo> view a list of packages in a repo\n"
-msgstr " -l, --list <repó> egy repó csomagjainak listázása\n"
-
-#: src/pacman/pacman.c:146
-#, c-format
-msgid ""
-" -p, --print-uris print out URIs for given packages and their "
-"dependencies\n"
-msgstr ""
-" -p, --print-uris listázza az adott csomagok és függõségeik URI-jait\n"
-
-#: src/pacman/pacman.c:147
-#, c-format
-msgid ""
-" -s, --search <regex> search remote repositories for matching strings\n"
-msgstr " -s, --search <regex> keresés a távoli csomagadatbázisokban\n"
-
-#: src/pacman/pacman.c:148
-#, c-format
-msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
-msgstr " -u, --sysupgrade az összes elavult csomag frissítése\n"
-
-#: src/pacman/pacman.c:149
-#, c-format
-msgid ""
-" -w, --downloadonly download packages but do not install/upgrade "
-"anything\n"
-msgstr " -w, --downloadonly csak letöltés, de semmit nem telepít/frissít\n"
-
-#: src/pacman/pacman.c:150
-#, c-format
-msgid ""
-" -y, --refresh download fresh package databases from the server\n"
-msgstr " -y, --refresh friss csomagadatbázis letöltése a szerverrõl\n"
-
-#: src/pacman/pacman.c:151
-#, c-format
-msgid ""
-" --ignore <pkg> ignore a package upgrade (can be used more than "
-"once)\n"
-msgstr ""
-" --ignore <csom.> csomagfrissítés mellõzése (többször is használható)\n"
-
-#: src/pacman/pacman.c:153
-#, c-format
-msgid " --config <path> set an alternate configuration file\n"
-msgstr " --config <útv.> alternatív konfigurációs fájl használata\n"
-
-#: src/pacman/pacman.c:154
-#, c-format
-msgid " --noconfirm do not ask for any confirmation\n"
-msgstr " --noconfirm ne kérjen soha megerõsítést\n"
-
-#: src/pacman/pacman.c:155
-#, c-format
-msgid ""
-" --ask <number> pre-specify answers for questions (see manpage)\n"
-msgstr ""
-" --ask <szám> elõre megadja a válaszokat kérdésekre (ld. man "
-"oldal)\n"
-
-#: src/pacman/pacman.c:156
-#, c-format
-msgid ""
-" --noprogressbar do not show a progress bar when downloading files\n"
-msgstr ""
-" --noprogressbar ne mutasson folyamatsávot a fájlok letöltése közben\n"
-
-#: src/pacman/pacman.c:157
-#, c-format
-msgid ""
-" --noscriptlet do not execute the install scriptlet if there is any\n"
-msgstr ""
-" --noscriptlet ne futtassa le a telepítési szkriptet, ha van olyan\n"
-
-#: src/pacman/pacman.c:158
-#, c-format
-msgid " -v, --verbose be verbose\n"
-msgstr " -v, --verbose legyen bõbeszédû\n"
-
-#: src/pacman/pacman.c:159
-#, c-format
-msgid " -r, --root <path> set an alternate installation root\n"
-msgstr ""
-" -r, --root <útvonal> alternatív telepítési gyökérkönyvtár beállítása\n"
-
-#: src/pacman/pacman.c:160
-#, c-format
-msgid " -b, --dbpath <path> set an alternate database location\n"
-msgstr " -b, --dbpath <útv.> alternatív adatbáziskönyvtár beállítása\n"
-
-#: src/pacman/pacman.c:161
-#, c-format
-msgid " --cachedir <dir> set an alternate package cache location\n"
-msgstr ""
-" --cachedir <kvt> alternatív csomaggyorsítótár-könyvtár beállítása\n"
-
-#: src/pacman/pacman.c:174
-#, c-format
-msgid " This program may be freely redistributed under\n"
-msgstr ""
-" Ezt a programot bárki a General Public License-ben\n"
-
-#: src/pacman/pacman.c:175
-#, c-format
-msgid " the terms of the GNU General Public License\n"
-msgstr " foglaltak alapján szabadon terjesztheti\n"
-
-#: src/pacman/pacman.c:300
-#, c-format
-msgid "'%s' is not a valid debug level"
-msgstr "a(z) '%s' nem érvényes hibakeresési szint"
-
-#: src/pacman/pacman.c:315
-#, c-format
-msgid "'%s' is not a valid cache directory\n"
-msgstr "a '%s' nem érvényes gyorsítótárkönyvtár\n"
-
-#: src/pacman/pacman.c:333
-#, c-format
-msgid "'%s' is not a valid db path\n"
-msgstr "a '%s' nem érvényes adatbázis útvonal\n"
-
-#: src/pacman/pacman.c:363
-#, c-format
-msgid "'%s' is not a valid root path\n"
-msgstr "a '%s' nem érvényes gyökérkönyvtár útvonal\n"
-
-#: src/pacman/pacman.c:390
-msgid "only one operation may be used at a time\n"
-msgstr "csak egy mûvelet hajtható végre egyszerre\n"
-
-#: src/pacman/pacman.c:436
-msgid "warning: current locale is invalid; using default \"C\" locale"
-msgstr ""
-
-#: src/pacman/pacman.c:456
-#, c-format
-msgid "failed to initialize alpm library (%s)\n"
-msgstr "nem sikerült inicializálni az alpm könyvtárat (%s)\n"
-
-#: src/pacman/pacman.c:489
-msgid "you cannot perform this operation unless you are root.\n"
-msgstr "ez a mûvelet csak rendszergazdaként hajtható végre.\n"
-
-#: src/pacman/pacman.c:505
-#, c-format
-msgid "failed to parse config (%s)\n"
-msgstr "nem sikerült értelmezni a beállítási fájlt (%s)\n"
-
-#: src/pacman/pacman.c:516
-msgid "Targets :"
-msgstr "Célok :"
-
-#: src/pacman/pacman.c:522
-#, c-format
-msgid "could not register 'local' database (%s)\n"
-msgstr "nem sikerült regisztrálni a 'local' adatbázist (%s)\n"
-
-#: src/pacman/pacman.c:529
-msgid "no targets specified (use -h for help)\n"
-msgstr "nincs megadva egyetlen cél se (használja a '-h'-t segítségért)\n"
-
-#: src/pacman/pacman.c:542
-msgid "no operation specified (use -h for help)\n"
-msgstr "nincs megadva egyetlen mûvelet se (használja a '-h'-t segítségért)\n"
-
-#: src/pacman/query.c:90
-msgid "no file was specified for --owns\n"
-msgstr "nincs megadva fájl a --owns számára\n"
-
-#: src/pacman/query.c:95
-#, c-format
-msgid "failed to read file '%s': %s"
-msgstr "nem sikerült olvasni a '%s' fájlt: %s"
-
-#: src/pacman/query.c:100
-msgid "cannot determine ownership of a directory"
-msgstr "nem sikerült egy könyvtár tulajdonosát megállapítani"
-
-#: src/pacman/query.c:105
-#, c-format
-msgid "cannot determine real path for '%s': %s"
-msgstr "nem állapítható meg a valódi útvonal a(z) '%s' számára: %s"
-
-#: src/pacman/query.c:119
-#, c-format
-msgid "%s is owned by %s %s\n"
-msgstr "a %s fájlt a %s %s tartalmazza\n"
-
-#: src/pacman/query.c:127
-#, c-format
-msgid "No package owns %s\n"
-msgstr "Egyik csomag sem tartalmazza a következõt: %s\n"
-
-#: src/pacman/query.c:170 src/pacman/sync.c:453
-msgid "no usable package repositories configured.\n"
-msgstr "egyetlen használható csomagrepó sincs beállítva.\n"
-
-#: src/pacman/query.c:176
-msgid "Checking for package upgrades..."
-msgstr "Frissítések keresése... "
-
-#: src/pacman/query.c:183
-msgid "no upgrades found"
-msgstr "nem találtam frissítést"
-
-#: src/pacman/query.c:221
-#, c-format
-msgid "group \"%s\" was not found\n"
-msgstr "a(z) \"%s\" csoport nem található\n"
-
-#: src/pacman/query.c:232
-msgid "no package file was specified for --file\n"
-msgstr "nincs megadva csomagfájl a --file számára\n"
-
-#: src/pacman/query.c:236
-#, c-format
-msgid "failed to load package '%s' (%s)\n"
-msgstr "nem sikerült betölteni a(z) '%s' csomagot (%s)\n"
-
-#: src/pacman/query.c:273 src/pacman/query.c:305
-#, c-format
-msgid "package \"%s\" not found\n"
-msgstr "a(z) \"%s\" csomag nem található\n"
-
-#: src/pacman/remove.c:61 src/pacman/sync.c:568
-#, c-format
-msgid ":: group %s:\n"
-msgstr ":: %s csoport:\n"
-
-#: src/pacman/remove.c:63
-msgid " Remove whole content? [Y/n] "
-msgstr " Eltávolítja a teljes tartalmat? [I/n] "
-
-#: src/pacman/remove.c:67
-#, c-format
-msgid ":: Remove %s from group %s? [Y/n] "
-msgstr ":: Eltávolítja %s-t a(z) %s csoportból? [I/n] "
-
-#: src/pacman/remove.c:80 src/pacman/sync.c:480 src/pacman/sync.c:529
-#, c-format
-msgid "failed to init transaction (%s)\n"
-msgstr "nem sikerült inicializálni a tranzakciót (%s)\n"
-
-#: src/pacman/remove.c:92
-#, c-format
-msgid "failed to add target '%s' (%s)\n"
-msgstr "nem sikerült a(z) '%s' célt hozzáadni a tranzakcióhoz (%s)\n"
-
-#: src/pacman/remove.c:106
-#, c-format
-msgid ":: %s is required by %s\n"
-msgstr ":: %s-t igényli: %s\n"
-
-#: src/pacman/remove.c:128 src/pacman/util.c:324
-msgid "Targets:"
-msgstr "Célok:"
-
-#: src/pacman/remove.c:131
-msgid ""
-"\n"
-"Do you want to remove these packages? [Y/n] "
-msgstr ""
-"\n"
-"El kívánja távolítani ezeket a csomagokat? [I/n] "
-
-#: src/pacman/sync.c:115
-msgid "Do you want to remove old packages from cache? [Y/n] "
-msgstr "El kívánja távolítani a régi csomagokat a gyorsítótárból? [I/n] "
-
-#: src/pacman/sync.c:117
-msgid "removing old packages from cache... "
-msgstr "a régi csomagok eltávolítása a gyorsítótárból... "
-
-#: src/pacman/sync.c:120
-msgid "could not access cache directory\n"
-msgstr "nem sikerült elérni a gyorsítótár könyvtárát\n"
-
-#: src/pacman/sync.c:181
-msgid "Do you want to remove all packages from cache? [Y/n] "
-msgstr "El kíván távolítani minden csomagot a gyorsítótárból? [I/n] "
-
-#: src/pacman/sync.c:183
-msgid "removing all packages from cache... "
-msgstr "az összes csomag eltávolítása a gyorsítótárból... "
-
-#: src/pacman/sync.c:186
-msgid "could not remove cache directory\n"
-msgstr "nem sikerült törölni a gyorsítótár könyvtárát\n"
-
-#: src/pacman/sync.c:191
-msgid "could not create new cache directory\n"
-msgstr "nem sikerült létrehozni az új gyorsítótár könyvtárát\n"
-
-#: src/pacman/sync.c:218
-#, c-format
-msgid "failed to synchronize %s: %s\n"
-msgstr "nem sikerült szinkronizálni %s-t: %s\n"
-
-#: src/pacman/sync.c:220
-#, c-format
-msgid "failed to update %s (%s)\n"
-msgstr "nem sikerült frissíteni a következõt: %s (%s)\n"
-
-#: src/pacman/sync.c:223
-#, c-format
-msgid " %s is up to date\n"
-msgstr " a(z) %s naprakész\n"
-
-#: src/pacman/sync.c:345
-#, c-format
-msgid "repository '%s' does not exist\n"
-msgstr "a(z) '%s' repó nem létezik\n"
-
-#: src/pacman/sync.c:361
-#, c-format
-msgid "package '%s' was not found in repository '%s'\n"
-msgstr "a(z) '%s' csomag nem található a(z) '%s' repóban\n"
-
-#: src/pacman/sync.c:381
-#, c-format
-msgid "package '%s' was not found\n"
-msgstr "a(z) '%s' csomag nem található\n"
-
-#: src/pacman/sync.c:418
-#, c-format
-msgid "repository \"%s\" was not found.\n"
-msgstr "a(z) \"%s\" repó nem található.\n"
-
-#: src/pacman/sync.c:490
-msgid ":: Synchronizing package databases...\n"
-msgstr ":: A csomagadatbázisok szinkronizálása...\n"
-
-#: src/pacman/sync.c:491
-msgid "synchronizing package lists"
-msgstr "a csomaglisták szinkronizálása"
-
-#: src/pacman/sync.c:493
-msgid "failed to synchronize any databases"
-msgstr "nem sikerült szinkronizálni valamelyik adatbázist"
-
-#: src/pacman/sync.c:499
-msgid ":: Starting full system upgrade...\n"
-msgstr ":: Teljes rendszerfrissítés indítása...\n"
-
-#: src/pacman/sync.c:500
-msgid "starting full system upgrade"
-msgstr "teljes rendszerfrissítés indítása"
-
-#: src/pacman/sync.c:518
-msgid ""
-"\n"
-":: pacman has detected a newer version of the \"pacman\" package.\n"
-msgstr ""
-"\n"
-":: a pacman egy újabb verzióját észlelte a \"pacman\" csomagnak.\n"
-
-#: src/pacman/sync.c:519
-msgid ":: It is recommended that you allow pacman to upgrade itself\n"
-msgstr ":: Ajánlott, hogy engedje, hogy a pacman elõbb saját magát\n"
-
-#: src/pacman/sync.c:520
-msgid ":: first, then you can re-run the operation with the newer version.\n"
-msgstr ":: frissítse, majd újra futtathatja a mûveletet az újabb verzióval.\n"
-
-#: src/pacman/sync.c:522
-msgid ":: Upgrade pacman first? [Y/n] "
-msgstr ":: Elõször csak a pacman frissítése? [I/n] "
-
-#: src/pacman/sync.c:537
-#, c-format
-msgid "pacman: %s\n"
-msgstr "pacman: %s\n"
-
-#: src/pacman/sync.c:572
-msgid ":: Install whole content? [Y/n] "
-msgstr ":: A teljes tartalom telepítése? [I/n] "
-
-#: src/pacman/sync.c:579
-#, c-format
-msgid ":: Install %s from group %s? [Y/n] "
-msgstr ":: Telepíti %s-t a(z) %s csoportból? [I/n] "
-
-#: src/pacman/sync.c:603
-#, c-format
-msgid "'%s': not found in sync db\n"
-msgstr "'%s': nem található a távoli adatbázisban\n"
-
-#: src/pacman/sync.c:621
-msgid "requires"
-msgstr "igényli a következõt:"
-
-#: src/pacman/sync.c:663
-msgid " local database is up to date\n"
-msgstr " a helyi adatbázis naprakész\n"
-
-#: src/pacman/sync.c:672
-msgid ""
-"\n"
-"Beginning download...\n"
-msgstr ""
-"\n"
-"A letöltés megkezdése...\n"
-
-#: src/pacman/sync.c:676
-msgid "Proceed with download? [Y/n] "
-msgstr "Kezdõdhet a letöltés? [I/n] "
-
-#: src/pacman/sync.c:684
-msgid ""
-"\n"
-"Beginning upgrade process...\n"
-msgstr ""
-"\n"
-"A frissítési folyamat megkezdése...\n"
-
-#: src/pacman/sync.c:688
-msgid "Proceed with installation? [Y/n] "
-msgstr "Kezdõdhet a telepítés? [I/n] "
-
-#: src/pacman/trans.c:55
-msgid "checking dependencies... "
-msgstr "függõségek vizsgálata... "
-
-#: src/pacman/trans.c:59
-msgid "checking for file conflicts... "
-msgstr "fájlütközések vizsgálata... "
-
-#: src/pacman/trans.c:63
-msgid "cleaning up... "
-msgstr "takarítás... "
-
-#: src/pacman/trans.c:66
-msgid "resolving dependencies... "
-msgstr "függõségek feloldása... "
-
-#: src/pacman/trans.c:69
-msgid "looking for inter-conflicts... "
-msgstr "belsõ ütközések keresése... "
-
-#: src/pacman/trans.c:86
-#, c-format
-msgid "installing %s... "
-msgstr "%s telepítése... "
-
-#: src/pacman/trans.c:93
-#, c-format
-msgid "installed %s (%s)"
-msgstr "%s telepítve (%s)"
-
-#: src/pacman/trans.c:100
-#, c-format
-msgid "removing %s... "
-msgstr "%s eltávolítása... "
-
-#: src/pacman/trans.c:107
-#, c-format
-msgid "removed %s (%s)"
-msgstr "%s eltávolítva (%s)"
-
-#: src/pacman/trans.c:114
-#, c-format
-msgid "upgrading %s... "
-msgstr "%s frissítése... "
-
-#: src/pacman/trans.c:121
-#, c-format
-msgid "upgraded %s (%s -> %s)"
-msgstr "%s frissítve (%s -> %s)"
-
-#: src/pacman/trans.c:128
-msgid "checking package integrity... "
-msgstr "csomagok integritásának ellenõrzése... "
-
-#: src/pacman/trans.c:144
-msgid "failed.\n"
-msgstr "sikertelen.\n"
-
-#: src/pacman/trans.c:151
-#, c-format
-msgid ":: Retrieving packages from %s...\n"
-msgstr ":: Csomagok letöltése a(z) %s repóból...\n"
-
-#: src/pacman/trans.c:172
-#, c-format
-msgid ":: %1$s requires %2$s from IgnorePkg. Install %2$s? [Y/n] "
-msgstr ":: %1$s igényli %2$s-t az IgnorePkg-bõl. Telepíti %2$s-t? [I/n] "
-
-#: src/pacman/trans.c:177
-#, c-format
-msgid ":: %s is in IgnorePkg. Install anyway? [Y/n] "
-msgstr ":: %s az IgnorePkg része. Mégis telepíti? [I/n] "
-
-#: src/pacman/trans.c:190
-#, c-format
-msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
-msgstr ":: %s HoldPkgnak lett jelölve. Biztosan eltávolítja? [I/n] "
-
-#: src/pacman/trans.c:203
-#, c-format
-msgid ":: Replace %s with %s/%s? [Y/n] "
-msgstr ":: Lecseréli %s-t erre: %s/%s? [I/n] "
-
-#: src/pacman/trans.c:218
-#, c-format
-msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
-msgstr ":: %s ütközik a következõvel: %s. Eltávolítja a %s-t? [I/n] "
-
-#: src/pacman/trans.c:234
-#, c-format
-msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
-msgstr ":: %s-%s: a helyi verzió újabb. Mégis frissíti? [I/n] "
-
-#: src/pacman/trans.c:252
-#, c-format
-msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
-msgstr ":: %s-%s: a helyi verzió naprakész. Mégis frissíti? [I/n] "
-
-#: src/pacman/trans.c:270
-#, c-format
-msgid ":: Archive %s is corrupted. Do you want to delete it? [Y/n] "
-msgstr ":: %s sérült. Kívánja törölni? [I/n] "
-
-#: src/pacman/trans.c:326
-msgid "installing"
-msgstr "telepítés:"
-
-#: src/pacman/trans.c:329
-msgid "upgrading"
-msgstr "frissítés:"
-
-#: src/pacman/trans.c:332
-msgid "removing"
-msgstr "eltávolítás:"
-
-#: src/pacman/trans.c:335
-msgid "checking for file conflicts"
-msgstr "fájlütközések vizsgálata"
-
-#: src/pacman/util.c:259
-#, c-format
-msgid "None\n"
-msgstr "Nincs\n"
-
-#: src/pacman/util.c:311
-msgid "Remove:"
-msgstr "Eltávolítás:"
-
-#: src/pacman/util.c:319
-#, c-format
-msgid ""
-"\n"
-"Total Removed Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Teljes eltávolított méret: %.2f MB\n"
-
-#: src/pacman/util.c:330
-#, c-format
-msgid ""
-"\n"
-"Total Package Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Teljes csomagméret: %.2f MB\n"
-
-#: src/pacman/util.c:337
-#, c-format
-msgid "Total Installed Size: %.2f MB\n"
-msgstr "Teljes telepített méret: %.2f MB\n"
-
-#~ msgid "requires: %s"
-#~ msgstr "igényli a következõt: %s"
-
-#~ msgid "'%s': %s\n"
-#~ msgstr "'%s': %s\n"
diff --git a/src/pacman/po/it.po b/src/pacman/po/it.po
deleted file mode 100644
index f6cef831..00000000
--- a/src/pacman/po/it.po
+++ /dev/null
@@ -1,1109 +0,0 @@
-# Italian translations for Pacman package manager package.
-# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
-# This file is distributed under the same license as the Pacman package manager package.
-# Giovanni 'voidnull' Scafora <linuxmania@gmail.com>, 2007.
-# Alessio 'mOLOk' Bolognino <themolok@gmail.com>, 2007.
-# Lorenzo '^zanDarK' Masini <lorenxo86@gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Pacman package manager 3.0.0\n"
-"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-04-28 04:02-0400\n"
-"PO-Revision-Date: 2007-03-31 04:00+0100\n"
-"Last-Translator: Giovanni Scafora <linuxmania@gmail.com>\n"
-"Language-Team: Arch Linux Italian Team <linuxmania@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: src/pacman/add.c:72 src/pacman/remove.c:82 src/pacman/sync.c:482
-#: src/pacman/sync.c:531
-#, c-format
-msgid ""
-" if you're sure a package manager is not already running,\n"
-" you can remove %s%s\n"
-msgstr ""
-" Se il gestore dei pacchetti non è già in funzione,\n"
-" è possibile rimuovere %s%s\n"
-
-#: src/pacman/add.c:79
-msgid "loading package data... "
-msgstr "caricamento dei dati in corso... "
-
-#: src/pacman/add.c:83
-#, c-format
-msgid "failed to add target '%s' (%s)"
-msgstr "impossibile aggiungere il pacchetto '%s' (%s)"
-
-#: src/pacman/add.c:88 src/pacman/sync.c:196 src/pacman/trans.c:73
-#: src/pacman/trans.c:80 src/pacman/trans.c:91 src/pacman/trans.c:105
-#: src/pacman/trans.c:119 src/pacman/trans.c:131 src/pacman/trans.c:142
-msgid "done.\n"
-msgstr "fatto.\n"
-
-#: src/pacman/add.c:95 src/pacman/remove.c:101 src/pacman/sync.c:616
-#, c-format
-msgid "failed to prepare transaction (%s)\n"
-msgstr "preparazione non riuscita (%s)\n"
-
-#: src/pacman/add.c:104
-#, c-format
-msgid ":: %s: requires %s"
-msgstr ":: %s: richiede %s"
-
-#: src/pacman/add.c:125 src/pacman/sync.c:643
-#, c-format
-msgid ":: %s: conflicts with %s"
-msgstr ":: %s: va in conflitto con %s"
-
-#: src/pacman/add.c:134 src/pacman/sync.c:707
-#, c-format
-msgid "%s exists in both '%s' and '%s'\n"
-msgstr "%s è già presente in '%s' e in '%s'\n"
-
-#: src/pacman/add.c:140 src/pacman/sync.c:713
-#, c-format
-msgid "%s: %s exists in filesystem\n"
-msgstr "%s: %s è già presente nel filesystem\n"
-
-#: src/pacman/add.c:146 src/pacman/sync.c:719 src/pacman/sync.c:725
-msgid ""
-"\n"
-"errors occurred, no packages were upgraded.\n"
-msgstr ""
-"\n"
-"si sono verificati degli errori, nessun pacchetto è stato aggiornato.\n"
-
-#: src/pacman/add.c:156 src/pacman/sync.c:650
-#, c-format
-msgid ":: %.1f MB required, have %.1f MB"
-msgstr ":: %.1f MB richiesti, spazio a disposizione %.1f MB"
-
-#: src/pacman/add.c:169 src/pacman/remove.c:141 src/pacman/sync.c:700
-#, c-format
-msgid "failed to commit transaction (%s)\n"
-msgstr "impossibile eseguire l'operazione richiesta (%s)\n"
-
-#: src/pacman/add.c:179 src/pacman/remove.c:151 src/pacman/sync.c:524
-#: src/pacman/sync.c:741
-#, c-format
-msgid "failed to release transaction (%s)\n"
-msgstr "impossibile annullare l'operazione richiesta (%s)\n"
-
-#: src/pacman/log.c:63
-#, c-format
-msgid "debug"
-msgstr "debug"
-
-#: src/pacman/log.c:66
-#, c-format
-msgid "error"
-msgstr "errore"
-
-#: src/pacman/log.c:69
-#, c-format
-msgid "warning"
-msgstr "attenzione"
-
-#: src/pacman/log.c:75
-#, c-format
-msgid "function"
-msgstr "funzione"
-
-#: src/pacman/log.c:194
-msgid "Y"
-msgstr "Y"
-
-#: src/pacman/log.c:194
-msgid "YES"
-msgstr "SI"
-
-#: src/pacman/log.h:30
-msgid "error: "
-msgstr "errore: "
-
-#: src/pacman/log.h:34
-msgid "warning: "
-msgstr "attenzione: "
-
-#: src/pacman/package.c:60
-msgid "Explicitly installed"
-msgstr "Installato esplicitamente"
-
-#: src/pacman/package.c:63
-msgid "Installed as a dependency for another package"
-msgstr "Installato come dipendenza di un altro pacchetto"
-
-#: src/pacman/package.c:66 src/pacman/package.c:90
-msgid "Unknown"
-msgstr "Sconosciuto"
-
-#: src/pacman/package.c:70 src/pacman/package.c:121
-msgid "Description : "
-msgstr "Descrizione : "
-
-#: src/pacman/package.c:73 src/pacman/package.c:127
-#, c-format
-msgid "Name : %s\n"
-msgstr "Nome : %s\n"
-
-#: src/pacman/package.c:74 src/pacman/package.c:128
-#, c-format
-msgid "Version : %s\n"
-msgstr "Versione : %s\n"
-
-#: src/pacman/package.c:75
-#, c-format
-msgid "URL : %s\n"
-msgstr "URL : %s\n"
-
-#: src/pacman/package.c:76
-msgid "License :"
-msgstr "Licenza :"
-
-#: src/pacman/package.c:77 src/pacman/package.c:129
-msgid "Groups :"
-msgstr "Gruppi :"
-
-#: src/pacman/package.c:78 src/pacman/package.c:130
-msgid "Provides :"
-msgstr "Fornisce :"
-
-#: src/pacman/package.c:79 src/pacman/package.c:131
-msgid "Depends On :"
-msgstr "Dipende da :"
-
-#: src/pacman/package.c:80 src/pacman/package.c:132
-msgid "Removes :"
-msgstr "Rimuove :"
-
-#: src/pacman/package.c:83
-msgid "Required By :"
-msgstr "Richiesto da :"
-
-#: src/pacman/package.c:85 src/pacman/package.c:133
-msgid "Conflicts With :"
-msgstr "Conflitto con :"
-
-#: src/pacman/package.c:86 src/pacman/package.c:136
-#, c-format
-msgid "Installed Size : %6.2f K\n"
-msgstr "Kb richiesti : %6.2f K\n"
-
-#: src/pacman/package.c:87
-#, c-format
-msgid "Packager : %s\n"
-msgstr "Autore : %s\n"
-
-#: src/pacman/package.c:88
-#, c-format
-msgid "Architecture : %s\n"
-msgstr "Architettura : %s\n"
-
-#: src/pacman/package.c:89
-#, c-format
-msgid "Build Date : %s %s\n"
-msgstr "Creato il : %s %s\n"
-
-#: src/pacman/package.c:90
-#, c-format
-msgid "Build Type : %s\n"
-msgstr "Tipo : %s\n"
-
-#: src/pacman/package.c:92
-#, c-format
-msgid "Install Date : %s %s\n"
-msgstr "Installato il : %s %s\n"
-
-#: src/pacman/package.c:93
-#, c-format
-msgid "Install Reason : %s\n"
-msgstr "Motivo : %s\n"
-
-#: src/pacman/package.c:95
-#, c-format
-msgid "Install Script : %s\n"
-msgstr "Script install : %s\n"
-
-#: src/pacman/package.c:96
-msgid "Yes"
-msgstr "Si"
-
-#: src/pacman/package.c:96
-msgid "No"
-msgstr "No"
-
-#: src/pacman/package.c:126
-#, c-format
-msgid "Repository : %s\n"
-msgstr "Repository : %s\n"
-
-#: src/pacman/package.c:134
-msgid "Replaces :"
-msgstr "Sostituisce :"
-
-#: src/pacman/package.c:135
-#, c-format
-msgid "Download Size : %6.2f K\n"
-msgstr "Dimensione pkg : %6.2f K\n"
-
-#: src/pacman/package.c:144
-#, c-format
-msgid "MD5 Sum : %s"
-msgstr "Somma MD5 : %s"
-
-#: src/pacman/package.c:147
-#, c-format
-msgid "SHA1 Sum : %s"
-msgstr "Somma SHA1 : %s"
-
-#: src/pacman/package.c:158
-#, c-format
-msgid "Backup Files:\n"
-msgstr "File di backup:\n"
-
-#: src/pacman/package.c:180
-#, c-format
-msgid "error calculating checksums for %s\n"
-msgstr "si è verificato un errore durante il calcolo dei checksum di %s\n"
-
-#: src/pacman/package.c:193
-#, c-format
-msgid "MODIFIED\t%s\n"
-msgstr "MODIFICATO\t%s\n"
-
-#: src/pacman/package.c:195
-#, c-format
-msgid "Not Modified\t%s\n"
-msgstr "Non modificato\t%s\n"
-
-#: src/pacman/package.c:200
-#, c-format
-msgid "MISSING\t\t%s\n"
-msgstr "MANCANTE\t\t%s\n"
-
-#: src/pacman/package.c:206
-#, c-format
-msgid "(none)\n"
-msgstr "(nessuno)\n"
-
-#: src/pacman/package.c:246
-#, c-format
-msgid "No changelog available for '%s'.\n"
-msgstr "Nessun changelog disponibile per '%s'.\n"
-
-#: src/pacman/pacman.c:90
-#, c-format
-msgid "usage: %s {-h --help}\n"
-msgstr "uso: %s {-h --help}\n"
-
-#: src/pacman/pacman.c:91
-#, c-format
-msgid " %s {-V --version}\n"
-msgstr " %s {-V --version}\n"
-
-#: src/pacman/pacman.c:92
-#, c-format
-msgid " %s {-A --add} [options] <file>\n"
-msgstr " %s {-A --add} [opzioni] <file>\n"
-
-#: src/pacman/pacman.c:93
-#, c-format
-msgid " %s {-F --freshen} [options] <file>\n"
-msgstr " %s {-F --freshen} [opzioni] <file>\n"
-
-#: src/pacman/pacman.c:94
-#, c-format
-msgid " %s {-Q --query} [options] [package]\n"
-msgstr " %s {-Q --query} [opzioni] [pacchetto]\n"
-
-#: src/pacman/pacman.c:95
-#, c-format
-msgid " %s {-R --remove} [options] <package>\n"
-msgstr " %s {-R --remove} [opzioni] <pacchetto>\n"
-
-#: src/pacman/pacman.c:96
-#, c-format
-msgid " %s {-S --sync} [options] [package]\n"
-msgstr " %s {-S --sync} [opzioni] [pacchetto]\n"
-
-#: src/pacman/pacman.c:97
-#, c-format
-msgid " %s {-U --upgrade} [options] <file>\n"
-msgstr " %s {-U --upgrade} [opzioni] <file>\n"
-
-#: src/pacman/pacman.c:98
-#, c-format
-msgid ""
-"\n"
-"use '%s --help' with other options for more syntax\n"
-msgstr ""
-"\n"
-"usare '%s --help' con le altre opzioni per ottenere maggiori informazioni\n"
-
-#: src/pacman/pacman.c:101
-#, c-format
-msgid "usage: %s {-A --add} [options] <file>\n"
-msgstr "uso: %s {-A --add} [opzioni] <file>\n"
-
-#: src/pacman/pacman.c:102 src/pacman/pacman.c:107 src/pacman/pacman.c:119
-#: src/pacman/pacman.c:124 src/pacman/pacman.c:138
-#, c-format
-msgid "options:\n"
-msgstr "opzioni:\n"
-
-#: src/pacman/pacman.c:103 src/pacman/pacman.c:109 src/pacman/pacman.c:120
-#: src/pacman/pacman.c:140
-#, c-format
-msgid " -d, --nodeps skip dependency checks\n"
-msgstr " -d, --nodeps ignora i controlli sulle dipendenze\n"
-
-#: src/pacman/pacman.c:104 src/pacman/pacman.c:121 src/pacman/pacman.c:142
-#, c-format
-msgid " -f, --force force install, overwrite conflicting files\n"
-msgstr ""
-" -f, --force forza l'installazione e sovrascrive i file in "
-"conflitto\n"
-
-#: src/pacman/pacman.c:106
-#, c-format
-msgid "usage: %s {-R --remove} [options] <package>\n"
-msgstr "uso: %s {-R --remove} [opzioni] <pacchetto>\n"
-
-#: src/pacman/pacman.c:108
-#, c-format
-msgid ""
-" -c, --cascade remove packages and all packages that depend on them\n"
-msgstr " -c, --cascade rimuove i pacchetti con tutte le dipendenze\n"
-
-#: src/pacman/pacman.c:110
-#, c-format
-msgid ""
-" -k, --dbonly only remove database entry, do not remove files\n"
-msgstr ""
-" -k, --dbonly rimuove solo la voce nel database, non rimuove i "
-"file\n"
-
-#: src/pacman/pacman.c:111
-#, c-format
-msgid " -n, --nosave remove configuration files as well\n"
-msgstr " -n, --nosave rimuove anche i file di configurazione\n"
-
-#: src/pacman/pacman.c:112
-#, c-format
-msgid ""
-" -s, --recursive remove dependencies also (that won't break packages)\n"
-msgstr ""
-" -s, --recursive rimuove anche le dipendenze (non richieste altrove)\n"
-
-#: src/pacman/pacman.c:115
-#, c-format
-msgid "usage: %s {-F --freshen} [options] <file>\n"
-msgstr "uso: %s {-F --freshen} [opzioni] <file>\n"
-
-#: src/pacman/pacman.c:117
-#, c-format
-msgid "usage: %s {-U --upgrade} [options] <file>\n"
-msgstr "uso: %s {-U --upgrade} [opzioni] <file>\n"
-
-#: src/pacman/pacman.c:123
-#, c-format
-msgid "usage: %s {-Q --query} [options] [package]\n"
-msgstr "uso: %s {-Q --query} [opzioni] [pacchetto]\n"
-
-#: src/pacman/pacman.c:125
-#, c-format
-msgid " -c, --changelog view the changelog of a package\n"
-msgstr " -c, --changelog mostra il changelog di un pacchetto\n"
-
-#: src/pacman/pacman.c:126
-#, c-format
-msgid ""
-" -e, --orphans list all packages installed as dependencies but no "
-"longer\n"
-msgstr ""
-" -e, --orphans elenca i pacchetti installati che erano dipendenze\n"
-
-#: src/pacman/pacman.c:127
-#, c-format
-msgid " required by any package\n"
-msgstr " ma non più richiesti da alcun pacchetto\n"
-
-#: src/pacman/pacman.c:128 src/pacman/pacman.c:143
-#, c-format
-msgid " -g, --groups view all members of a package group\n"
-msgstr ""
-" -g, --groups visualizza tutti i membri di un gruppo di pacchetti\n"
-
-#: src/pacman/pacman.c:129 src/pacman/pacman.c:144
-#, c-format
-msgid " -i, --info view package information\n"
-msgstr " -i, --info visualizza le informazioni sul pacchetto\n"
-
-#: src/pacman/pacman.c:130
-#, c-format
-msgid " -l, --list list the contents of the queried package\n"
-msgstr " -l, --list elenca i file contenuti nel pacchetto\n"
-
-#: src/pacman/pacman.c:131
-#, c-format
-msgid ""
-" -m, --foreign list installed packages not found in sync db(s)\n"
-msgstr ""
-" -m, --foreign elenca tutti i pacchetti non trovati nei database\n"
-
-#: src/pacman/pacman.c:132
-#, c-format
-msgid " -o, --owns <file> query the package that owns <file>\n"
-msgstr ""
-" -o, --owns <file> visualizza il pacchetto che contiene il <file>\n"
-
-#: src/pacman/pacman.c:133
-#, c-format
-msgid " -p, --file <package> query a package file instead of the database\n"
-msgstr ""
-" -p, --file interroga il file di pacchetto invece del database\n"
-
-#: src/pacman/pacman.c:134
-#, c-format
-msgid ""
-" -s, --search <regex> search locally-installed packages for matching "
-"strings\n"
-msgstr ""
-" -s, --search <regex> cerca nei pacchetti installati le stringhe "
-"corrispondenti\n"
-
-#: src/pacman/pacman.c:135
-#, c-format
-msgid " -u, --upgrades list all packages that can be upgraded\n"
-msgstr ""
-" -u, --upgrades elenca tutti i pacchetti che possono essere "
-"aggiornati\n"
-
-#: src/pacman/pacman.c:137
-#, c-format
-msgid "usage: %s {-S --sync} [options] [package]\n"
-msgstr "uso: %s {-S --sync} [opzioni] [pacchetto]\n"
-
-#: src/pacman/pacman.c:139
-#, c-format
-msgid ""
-" -c, --clean remove old packages from cache directory (-cc for "
-"all)\n"
-msgstr ""
-" -c, --clean rimuove i vecchi pacchetti dalla cache (usare -cc "
-"per\n"
-" rimuoverli tutti)\n"
-
-#: src/pacman/pacman.c:141
-#, c-format
-msgid " -e, --dependsonly install dependencies only\n"
-msgstr " -e, --dependsonly installa solo le dipendenze\n"
-
-#: src/pacman/pacman.c:145
-#, c-format
-msgid " -l, --list <repo> view a list of packages in a repo\n"
-msgstr ""
-" -l, --list <repo> visualizza la lista dei pacchetti di un repository\n"
-
-#: src/pacman/pacman.c:146
-#, c-format
-msgid ""
-" -p, --print-uris print out URIs for given packages and their "
-"dependencies\n"
-msgstr ""
-" -p, --print-uris stampa gli URI dei pacchetti e le loro dipendenze\n"
-
-#: src/pacman/pacman.c:147
-#, c-format
-msgid ""
-" -s, --search <regex> search remote repositories for matching strings\n"
-msgstr ""
-" -s, --search <regex> cerca le stringhe corrispondenti nei repository "
-"remoti\n"
-
-#: src/pacman/pacman.c:148
-#, c-format
-msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
-msgstr ""
-" -u, --sysupgrade aggiorna tutti i pacchetti installati nel sistema\n"
-
-#: src/pacman/pacman.c:149
-#, c-format
-msgid ""
-" -w, --downloadonly download packages but do not install/upgrade "
-"anything\n"
-msgstr ""
-" -w, --downloadonly scarica i pacchetti senza installarli/aggiornarli\n"
-
-#: src/pacman/pacman.c:150
-#, c-format
-msgid ""
-" -y, --refresh download fresh package databases from the server\n"
-msgstr ""
-" -y, --refresh scarica dal server i database aggiornati dei "
-"pacchetti\n"
-
-#: src/pacman/pacman.c:151
-#, c-format
-msgid ""
-" --ignore <pkg> ignore a package upgrade (can be used more than "
-"once)\n"
-msgstr " --ignore <pkg> ignora l'aggiornamento di un pacchetto\n"
-
-#: src/pacman/pacman.c:153
-#, c-format
-msgid " --config <path> set an alternate configuration file\n"
-msgstr " --config <path> imposta un file di configurazione alternativo\n"
-
-#: src/pacman/pacman.c:154
-#, c-format
-msgid " --noconfirm do not ask for any confirmation\n"
-msgstr " --noconfirm non chiede alcuna conferma\n"
-
-#: src/pacman/pacman.c:155
-#, c-format
-msgid ""
-" --ask <number> pre-specify answers for questions (see manpage)\n"
-msgstr ""
-" --ask <numero> specifica in anticipo le risposte alle domande\n"
-
-#: src/pacman/pacman.c:156
-#, c-format
-msgid ""
-" --noprogressbar do not show a progress bar when downloading files\n"
-msgstr " --noprogressbar non visualizza la barra di avanzamento\n"
-
-#: src/pacman/pacman.c:157
-#, c-format
-msgid ""
-" --noscriptlet do not execute the install scriptlet if there is any\n"
-msgstr " --noscriptlet non esegue un eventuale script di install\n"
-
-#: src/pacman/pacman.c:158
-#, c-format
-msgid " -v, --verbose be verbose\n"
-msgstr " -v, --verbose mostra maggiori informazioni\n"
-
-#: src/pacman/pacman.c:159
-#, c-format
-msgid " -r, --root <path> set an alternate installation root\n"
-msgstr ""
-" -r, --root <path> imposta una root alternativa per l'installazione\n"
-
-#: src/pacman/pacman.c:160
-#, c-format
-msgid " -b, --dbpath <path> set an alternate database location\n"
-msgstr ""
-" -b, --dbpath <path> imposta un percorso alternativo per il database\n"
-
-#: src/pacman/pacman.c:161
-#, c-format
-msgid " --cachedir <dir> set an alternate package cache location\n"
-msgstr " --cachedir <dir> imposta un percorso alternativo per la cache\n"
-
-#: src/pacman/pacman.c:174
-#, c-format
-msgid " This program may be freely redistributed under\n"
-msgstr ""
-" This program may be freely redistributed under\n"
-
-#: src/pacman/pacman.c:175
-#, c-format
-msgid " the terms of the GNU General Public License\n"
-msgstr " the terms of the GNU General Public License\n"
-
-#: src/pacman/pacman.c:300
-#, c-format
-msgid "'%s' is not a valid debug level"
-msgstr "'%s' non è un livello di debug valido"
-
-#: src/pacman/pacman.c:315
-#, c-format
-msgid "'%s' is not a valid cache directory\n"
-msgstr "'%s' non è una directory di cache valida\n"
-
-#: src/pacman/pacman.c:333
-#, c-format
-msgid "'%s' is not a valid db path\n"
-msgstr "'%s' non è un path del database valido\n"
-
-#: src/pacman/pacman.c:363
-#, c-format
-msgid "'%s' is not a valid root path\n"
-msgstr "'%s' non è un path di root valido\n"
-
-#: src/pacman/pacman.c:390
-msgid "only one operation may be used at a time\n"
-msgstr "è consentito eseguire solo un'operazione per volta\n"
-
-#: src/pacman/pacman.c:436
-msgid "warning: current locale is invalid; using default \"C\" locale"
-msgstr "attenzione: locale non valido, sarà utilizzato il locale \"C\""
-
-#: src/pacman/pacman.c:456
-#, c-format
-msgid "failed to initialize alpm library (%s)\n"
-msgstr "impossibile inizializzare la libreria alpm (%s)\n"
-
-#: src/pacman/pacman.c:489
-msgid "you cannot perform this operation unless you are root.\n"
-msgstr "operazione possibile solo come root.\n"
-
-#: src/pacman/pacman.c:505
-#, c-format
-msgid "failed to parse config (%s)\n"
-msgstr "impossibile analizzare la configurazione (%s)\n"
-
-#: src/pacman/pacman.c:516
-msgid "Targets :"
-msgstr "Pacchetti :"
-
-#: src/pacman/pacman.c:522
-#, c-format
-msgid "could not register 'local' database (%s)\n"
-msgstr "impossibile registrare il database 'local' (%s)\n"
-
-#: src/pacman/pacman.c:529
-msgid "no targets specified (use -h for help)\n"
-msgstr "nessun pacchetto specificato (usare -h per un aiuto)\n"
-
-#: src/pacman/pacman.c:542
-msgid "no operation specified (use -h for help)\n"
-msgstr "nessuna operazione specificata (usare -h per un aiuto)\n"
-
-#: src/pacman/query.c:90
-msgid "no file was specified for --owns\n"
-msgstr "nessun file specificato per --owns\n"
-
-#: src/pacman/query.c:95
-#, c-format
-msgid "failed to read file '%s': %s"
-msgstr "impossibile leggere il file '%s': %s"
-
-#: src/pacman/query.c:100
-msgid "cannot determine ownership of a directory"
-msgstr "impossibile determinare il proprietario di una directory"
-
-#: src/pacman/query.c:105
-#, c-format
-msgid "cannot determine real path for '%s': %s"
-msgstr "impossibile determinare la posizione reale di '%s': %s"
-
-#: src/pacman/query.c:119
-#, c-format
-msgid "%s is owned by %s %s\n"
-msgstr "%s è contenuto in %s %s\n"
-
-#: src/pacman/query.c:127
-#, c-format
-msgid "No package owns %s\n"
-msgstr "Nessun pacchetto contiene %s\n"
-
-#: src/pacman/query.c:170 src/pacman/sync.c:453
-msgid "no usable package repositories configured.\n"
-msgstr "non è stato configurato nessun repository di pacchetti valido.\n"
-
-#: src/pacman/query.c:176
-msgid "Checking for package upgrades..."
-msgstr "Controllo degli aggiornamenti dei pacchetti in corso..."
-
-#: src/pacman/query.c:183
-msgid "no upgrades found"
-msgstr "nessun aggiornamento trovato"
-
-#: src/pacman/query.c:221
-#, c-format
-msgid "group \"%s\" was not found\n"
-msgstr "gruppo \"%s\" non trovato\n"
-
-#: src/pacman/query.c:232
-msgid "no package file was specified for --file\n"
-msgstr "nessun file di pacchetto specificato per --file\n"
-
-#: src/pacman/query.c:236
-#, c-format
-msgid "failed to load package '%s' (%s)\n"
-msgstr "impossibile caricare il pacchetto '%s' (%s)\n"
-
-#: src/pacman/query.c:273 src/pacman/query.c:305
-#, c-format
-msgid "package \"%s\" not found\n"
-msgstr "pacchetto \"%s\" non trovato\n"
-
-#: src/pacman/remove.c:61 src/pacman/sync.c:568
-#, c-format
-msgid ":: group %s:\n"
-msgstr ":: gruppo %s:\n"
-
-#: src/pacman/remove.c:63
-msgid " Remove whole content? [Y/n] "
-msgstr " Rimuovere l'intero contenuto? [Y/n] "
-
-#: src/pacman/remove.c:67
-#, c-format
-msgid ":: Remove %s from group %s? [Y/n] "
-msgstr ":: Rimuovere %s dal gruppo %s? [Y/n] "
-
-#: src/pacman/remove.c:80 src/pacman/sync.c:480 src/pacman/sync.c:529
-#, c-format
-msgid "failed to init transaction (%s)\n"
-msgstr "inizializzazione non riuscita (%s)\n"
-
-#: src/pacman/remove.c:92
-#, c-format
-msgid "failed to add target '%s' (%s)\n"
-msgstr "impossibile aggiungere il pacchetto '%s' (%s)\n"
-
-#: src/pacman/remove.c:106
-#, c-format
-msgid ":: %s is required by %s\n"
-msgstr ":: %s è richiesto da %s\n"
-
-#: src/pacman/remove.c:128 src/pacman/util.c:324
-msgid "Targets:"
-msgstr "Pacchetti:"
-
-#: src/pacman/remove.c:131
-msgid ""
-"\n"
-"Do you want to remove these packages? [Y/n] "
-msgstr ""
-"\n"
-"Rimuovere questi pacchetti? [Y/n] "
-
-#: src/pacman/sync.c:115
-msgid "Do you want to remove old packages from cache? [Y/n] "
-msgstr "Rimuovere i vecchi pacchetti dalla cache? [Y/n] "
-
-#: src/pacman/sync.c:117
-msgid "removing old packages from cache... "
-msgstr "rimozione dei vecchi pacchetti dalla cache in corso... "
-
-#: src/pacman/sync.c:120
-msgid "could not access cache directory\n"
-msgstr "impossibile accedere alla directory di cache\n"
-
-#: src/pacman/sync.c:181
-msgid "Do you want to remove all packages from cache? [Y/n] "
-msgstr "Rimuovere tutti i pacchetti dalla cache? [Y/n] "
-
-#: src/pacman/sync.c:183
-msgid "removing all packages from cache... "
-msgstr "rimozione di tutti i pacchetti dalla cache in corso... "
-
-#: src/pacman/sync.c:186
-msgid "could not remove cache directory\n"
-msgstr "impossibile rimuovere la directory di cache\n"
-
-#: src/pacman/sync.c:191
-msgid "could not create new cache directory\n"
-msgstr "impossibile creare una nuova directory di cache\n"
-
-#: src/pacman/sync.c:218
-#, c-format
-msgid "failed to synchronize %s: %s\n"
-msgstr "impossibile sincronizzare %s: %s\n"
-
-#: src/pacman/sync.c:220
-#, c-format
-msgid "failed to update %s (%s)\n"
-msgstr "impossibile aggiornare %s (%s)\n"
-
-#: src/pacman/sync.c:223
-#, c-format
-msgid " %s is up to date\n"
-msgstr " %s è aggiornato\n"
-
-#: src/pacman/sync.c:345
-#, c-format
-msgid "repository '%s' does not exist\n"
-msgstr "impossibile trovare il repository '%s'\n"
-
-#: src/pacman/sync.c:361
-#, c-format
-msgid "package '%s' was not found in repository '%s'\n"
-msgstr "impossibile trovare il pacchetto '%s' nel repository '%s'\n"
-
-#: src/pacman/sync.c:381
-#, c-format
-msgid "package '%s' was not found\n"
-msgstr "impossibile trovare il pacchetto '%s'\n"
-
-#: src/pacman/sync.c:418
-#, c-format
-msgid "repository \"%s\" was not found.\n"
-msgstr "impossibile trovare il repository \"%s\".\n"
-
-#: src/pacman/sync.c:490
-msgid ":: Synchronizing package databases...\n"
-msgstr ":: Sincronizzazione dei database in corso...\n"
-
-#: src/pacman/sync.c:491
-msgid "synchronizing package lists"
-msgstr "sincronizzazione della lista dei pacchetti in corso"
-
-#: src/pacman/sync.c:493
-msgid "failed to synchronize any databases"
-msgstr "impossibile sincronizzare i database"
-
-#: src/pacman/sync.c:499
-msgid ":: Starting full system upgrade...\n"
-msgstr ":: Aggiornamento del sistema in corso...\n"
-
-#: src/pacman/sync.c:500
-msgid "starting full system upgrade"
-msgstr "aggiornamento del sistema in corso"
-
-#: src/pacman/sync.c:518
-msgid ""
-"\n"
-":: pacman has detected a newer version of the \"pacman\" package.\n"
-msgstr ""
-"\n"
-":: pacman ha rilevato una versione più recente di \"pacman\".\n"
-
-#: src/pacman/sync.c:519
-msgid ":: It is recommended that you allow pacman to upgrade itself\n"
-msgstr ":: Si consiglia di consentire a pacman di aggiornarsi\n"
-
-#: src/pacman/sync.c:520
-msgid ":: first, then you can re-run the operation with the newer version.\n"
-msgstr ":: prima e poi riavviare l'operazione con la versione più recente.\n"
-
-#: src/pacman/sync.c:522
-msgid ":: Upgrade pacman first? [Y/n] "
-msgstr ":: Aggiornare pacman adesso? [Y/n] "
-
-#: src/pacman/sync.c:537
-#, c-format
-msgid "pacman: %s\n"
-msgstr "pacman: %s\n"
-
-#: src/pacman/sync.c:572
-msgid ":: Install whole content? [Y/n] "
-msgstr ":: Installare l'intero contenuto? [Y/n] "
-
-#: src/pacman/sync.c:579
-#, c-format
-msgid ":: Install %s from group %s? [Y/n] "
-msgstr ":: Installare %s dal gruppo %s? [Y/n] "
-
-#: src/pacman/sync.c:603
-#, c-format
-msgid "'%s': not found in sync db\n"
-msgstr "'%s': non trovato nel database\n"
-
-#: src/pacman/sync.c:621
-msgid "requires"
-msgstr "richiede"
-
-#: src/pacman/sync.c:663
-msgid " local database is up to date\n"
-msgstr " Il database locale è aggiornato\n"
-
-#: src/pacman/sync.c:672
-msgid ""
-"\n"
-"Beginning download...\n"
-msgstr ""
-"\n"
-"Download in corso...\n"
-
-#: src/pacman/sync.c:676
-msgid "Proceed with download? [Y/n] "
-msgstr "Procedere con il download? [Y/n] "
-
-#: src/pacman/sync.c:684
-msgid ""
-"\n"
-"Beginning upgrade process...\n"
-msgstr ""
-"\n"
-"Aggiornamento in corso...\n"
-
-#: src/pacman/sync.c:688
-msgid "Proceed with installation? [Y/n] "
-msgstr "Procedere con l'installazione? [Y/n] "
-
-#: src/pacman/trans.c:55
-msgid "checking dependencies... "
-msgstr "controllo delle dipendenze in corso... "
-
-#: src/pacman/trans.c:59
-msgid "checking for file conflicts... "
-msgstr "controllo dei conflitti in corso... "
-
-#: src/pacman/trans.c:63
-msgid "cleaning up... "
-msgstr "pulizia in corso... "
-
-#: src/pacman/trans.c:66
-msgid "resolving dependencies... "
-msgstr "risoluzione delle dipendenze in corso... "
-
-#: src/pacman/trans.c:69
-msgid "looking for inter-conflicts... "
-msgstr "ricerca dei conflitti incrociati in corso... "
-
-#: src/pacman/trans.c:86
-#, c-format
-msgid "installing %s... "
-msgstr "installazione di %s in corso... "
-
-#: src/pacman/trans.c:93
-#, c-format
-msgid "installed %s (%s)"
-msgstr "%s installato (%s)"
-
-#: src/pacman/trans.c:100
-#, c-format
-msgid "removing %s... "
-msgstr "rimozione di %s in corso... "
-
-#: src/pacman/trans.c:107
-#, c-format
-msgid "removed %s (%s)"
-msgstr "%s rimosso (%s)"
-
-#: src/pacman/trans.c:114
-#, c-format
-msgid "upgrading %s... "
-msgstr "aggiornamento di %s in corso... "
-
-#: src/pacman/trans.c:121
-#, c-format
-msgid "upgraded %s (%s -> %s)"
-msgstr "%s aggiornato (%s -> %s)"
-
-#: src/pacman/trans.c:128
-msgid "checking package integrity... "
-msgstr "controllo dell'integrità dei pacchetti in corso... "
-
-#: src/pacman/trans.c:144
-msgid "failed.\n"
-msgstr "non riuscito.\n"
-
-#: src/pacman/trans.c:151
-#, c-format
-msgid ":: Retrieving packages from %s...\n"
-msgstr ":: Recupero dei pacchetti da %s...\n"
-
-#: src/pacman/trans.c:172
-#, c-format
-msgid ":: %1$s requires %2$s from IgnorePkg. Install %2$s? [Y/n] "
-msgstr ":: %1$s richiede %2$s da IgnorePkg. Installare %2$s? [Y/n] "
-
-#: src/pacman/trans.c:177
-#, c-format
-msgid ":: %s is in IgnorePkg. Install anyway? [Y/n] "
-msgstr ":: %s è in IgnorePkg. Installare ugualmente? [Y/n] "
-
-#: src/pacman/trans.c:190
-#, c-format
-msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
-msgstr ":: %s è presente in HoldPkg. Rimuovere ugualmente? [Y/n] "
-
-#: src/pacman/trans.c:203
-#, c-format
-msgid ":: Replace %s with %s/%s? [Y/n] "
-msgstr ":: Sostituire %s con %s/%s? [Y/n] "
-
-#: src/pacman/trans.c:218
-#, c-format
-msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
-msgstr ":: %s va in conflitto con %s. Rimuovere %s? [Y/n] "
-
-#: src/pacman/trans.c:234
-#, c-format
-msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
-msgstr ""
-":: %s-%s: la versione installata è più recente. Aggiornare ugualmente? [Y/n] "
-
-#: src/pacman/trans.c:252
-#, c-format
-msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
-msgstr ""
-":: %s-%s: la versione installata è aggiornata. Aggiornare ugualmente? [Y/n] "
-
-#: src/pacman/trans.c:270
-#, c-format
-msgid ":: Archive %s is corrupted. Do you want to delete it? [Y/n] "
-msgstr ":: L'archivio %s è corrotto. Eliminarlo? [Y/n] "
-
-#: src/pacman/trans.c:326
-msgid "installing"
-msgstr "installazione in corso di "
-
-#: src/pacman/trans.c:329
-msgid "upgrading"
-msgstr "aggiornamento in corso di"
-
-#: src/pacman/trans.c:332
-msgid "removing"
-msgstr "rimozione in corso di"
-
-#: src/pacman/trans.c:335
-msgid "checking for file conflicts"
-msgstr "controllo dei conflitti in corso"
-
-#: src/pacman/util.c:259
-#, c-format
-msgid "None\n"
-msgstr "Nessuno\n"
-
-#: src/pacman/util.c:311
-msgid "Remove:"
-msgstr "Rimuovere:"
-
-#: src/pacman/util.c:319
-#, c-format
-msgid ""
-"\n"
-"Total Removed Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Dimensione totale dei pacchetti rimossi: %.2f MB\n"
-
-#: src/pacman/util.c:330
-#, c-format
-msgid ""
-"\n"
-"Total Package Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Dimensione totale dei pacchetti: %.2f MB\n"
-
-#: src/pacman/util.c:337
-#, c-format
-msgid "Total Installed Size: %.2f MB\n"
-msgstr "Dimensione totale dei pacchetti installati: %.2f MB\n"
-
-#~ msgid "requires: %s"
-#~ msgstr "richiede: %s"
-
-#~ msgid "'%s': %s\n"
-#~ msgstr "'%s': %s\n"
-
-#~ msgid "is required by"
-#~ msgstr "è richiesto da"
-
-#~ msgid "Installed Size : %ld K\n"
-#~ msgstr "Dimensione : %ld K\n"
-
-#~ msgid "memory allocation failure\n"
-#~ msgstr "allocazione della memoria non riuscita\n"
-
-#~ msgid "add target %s\n"
-#~ msgstr "aggiungere il pacchetto %s\n"
-
-#~ msgid "could not add target (%s)\n"
-#~ msgstr "impossibile aggiungere il pacchetto (%s)\n"
-
-#~ msgid "conflict: %s"
-#~ msgstr "conflitto: %s"
-
-#~ msgid "could not release transaction (%s)"
-#~ msgstr "impossibile annullare l'operazione richiesta (%s)"
diff --git a/src/pacman/po/pacman.pot b/src/pacman/po/pacman.pot
deleted file mode 100644
index f7b7f1c3..00000000
--- a/src/pacman/po/pacman.pot
+++ /dev/null
@@ -1,1031 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Judd Vinet <jvinet@zeroflux.org>
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-04-28 04:02-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: src/pacman/add.c:72 src/pacman/remove.c:82 src/pacman/sync.c:482
-#: src/pacman/sync.c:531
-#, c-format
-msgid ""
-" if you're sure a package manager is not already running,\n"
-" you can remove %s%s\n"
-msgstr ""
-
-#: src/pacman/add.c:79
-msgid "loading package data... "
-msgstr ""
-
-#: src/pacman/add.c:83
-#, c-format
-msgid "failed to add target '%s' (%s)"
-msgstr ""
-
-#: src/pacman/add.c:88 src/pacman/sync.c:196 src/pacman/trans.c:73
-#: src/pacman/trans.c:80 src/pacman/trans.c:91 src/pacman/trans.c:105
-#: src/pacman/trans.c:119 src/pacman/trans.c:131 src/pacman/trans.c:142
-msgid "done.\n"
-msgstr ""
-
-#: src/pacman/add.c:95 src/pacman/remove.c:101 src/pacman/sync.c:616
-#, c-format
-msgid "failed to prepare transaction (%s)\n"
-msgstr ""
-
-#: src/pacman/add.c:104
-#, c-format
-msgid ":: %s: requires %s"
-msgstr ""
-
-#: src/pacman/add.c:125 src/pacman/sync.c:643
-#, c-format
-msgid ":: %s: conflicts with %s"
-msgstr ""
-
-#: src/pacman/add.c:134 src/pacman/sync.c:707
-#, c-format
-msgid "%s exists in both '%s' and '%s'\n"
-msgstr ""
-
-#: src/pacman/add.c:140 src/pacman/sync.c:713
-#, c-format
-msgid "%s: %s exists in filesystem\n"
-msgstr ""
-
-#: src/pacman/add.c:146 src/pacman/sync.c:719 src/pacman/sync.c:725
-msgid ""
-"\n"
-"errors occurred, no packages were upgraded.\n"
-msgstr ""
-
-#: src/pacman/add.c:156 src/pacman/sync.c:650
-#, c-format
-msgid ":: %.1f MB required, have %.1f MB"
-msgstr ""
-
-#: src/pacman/add.c:169 src/pacman/remove.c:141 src/pacman/sync.c:700
-#, c-format
-msgid "failed to commit transaction (%s)\n"
-msgstr ""
-
-#: src/pacman/add.c:179 src/pacman/remove.c:151 src/pacman/sync.c:524
-#: src/pacman/sync.c:741
-#, c-format
-msgid "failed to release transaction (%s)\n"
-msgstr ""
-
-#: src/pacman/log.c:63
-#, c-format
-msgid "debug"
-msgstr ""
-
-#: src/pacman/log.c:66
-#, c-format
-msgid "error"
-msgstr ""
-
-#: src/pacman/log.c:69
-#, c-format
-msgid "warning"
-msgstr ""
-
-#: src/pacman/log.c:75
-#, c-format
-msgid "function"
-msgstr ""
-
-#: src/pacman/log.c:194
-msgid "Y"
-msgstr ""
-
-#: src/pacman/log.c:194
-msgid "YES"
-msgstr ""
-
-#: src/pacman/log.h:30
-msgid "error: "
-msgstr ""
-
-#: src/pacman/log.h:34
-msgid "warning: "
-msgstr ""
-
-#: src/pacman/package.c:60
-msgid "Explicitly installed"
-msgstr ""
-
-#: src/pacman/package.c:63
-msgid "Installed as a dependency for another package"
-msgstr ""
-
-#: src/pacman/package.c:66 src/pacman/package.c:90
-msgid "Unknown"
-msgstr ""
-
-#: src/pacman/package.c:70 src/pacman/package.c:121
-msgid "Description : "
-msgstr ""
-
-#: src/pacman/package.c:73 src/pacman/package.c:127
-#, c-format
-msgid "Name : %s\n"
-msgstr ""
-
-#: src/pacman/package.c:74 src/pacman/package.c:128
-#, c-format
-msgid "Version : %s\n"
-msgstr ""
-
-#: src/pacman/package.c:75
-#, c-format
-msgid "URL : %s\n"
-msgstr ""
-
-#: src/pacman/package.c:76
-msgid "License :"
-msgstr ""
-
-#: src/pacman/package.c:77 src/pacman/package.c:129
-msgid "Groups :"
-msgstr ""
-
-#: src/pacman/package.c:78 src/pacman/package.c:130
-msgid "Provides :"
-msgstr ""
-
-#: src/pacman/package.c:79 src/pacman/package.c:131
-msgid "Depends On :"
-msgstr ""
-
-#: src/pacman/package.c:80 src/pacman/package.c:132
-msgid "Removes :"
-msgstr ""
-
-#: src/pacman/package.c:83
-msgid "Required By :"
-msgstr ""
-
-#: src/pacman/package.c:85 src/pacman/package.c:133
-msgid "Conflicts With :"
-msgstr ""
-
-#: src/pacman/package.c:86 src/pacman/package.c:136
-#, c-format
-msgid "Installed Size : %6.2f K\n"
-msgstr ""
-
-#: src/pacman/package.c:87
-#, c-format
-msgid "Packager : %s\n"
-msgstr ""
-
-#: src/pacman/package.c:88
-#, c-format
-msgid "Architecture : %s\n"
-msgstr ""
-
-#: src/pacman/package.c:89
-#, c-format
-msgid "Build Date : %s %s\n"
-msgstr ""
-
-#: src/pacman/package.c:90
-#, c-format
-msgid "Build Type : %s\n"
-msgstr ""
-
-#: src/pacman/package.c:92
-#, c-format
-msgid "Install Date : %s %s\n"
-msgstr ""
-
-#: src/pacman/package.c:93
-#, c-format
-msgid "Install Reason : %s\n"
-msgstr ""
-
-#: src/pacman/package.c:95
-#, c-format
-msgid "Install Script : %s\n"
-msgstr ""
-
-#: src/pacman/package.c:96
-msgid "Yes"
-msgstr ""
-
-#: src/pacman/package.c:96
-msgid "No"
-msgstr ""
-
-#: src/pacman/package.c:126
-#, c-format
-msgid "Repository : %s\n"
-msgstr ""
-
-#: src/pacman/package.c:134
-msgid "Replaces :"
-msgstr ""
-
-#: src/pacman/package.c:135
-#, c-format
-msgid "Download Size : %6.2f K\n"
-msgstr ""
-
-#: src/pacman/package.c:144
-#, c-format
-msgid "MD5 Sum : %s"
-msgstr ""
-
-#: src/pacman/package.c:147
-#, c-format
-msgid "SHA1 Sum : %s"
-msgstr ""
-
-#: src/pacman/package.c:158
-#, c-format
-msgid "Backup Files:\n"
-msgstr ""
-
-#: src/pacman/package.c:180
-#, c-format
-msgid "error calculating checksums for %s\n"
-msgstr ""
-
-#: src/pacman/package.c:193
-#, c-format
-msgid "MODIFIED\t%s\n"
-msgstr ""
-
-#: src/pacman/package.c:195
-#, c-format
-msgid "Not Modified\t%s\n"
-msgstr ""
-
-#: src/pacman/package.c:200
-#, c-format
-msgid "MISSING\t\t%s\n"
-msgstr ""
-
-#: src/pacman/package.c:206
-#, c-format
-msgid "(none)\n"
-msgstr ""
-
-#: src/pacman/package.c:246
-#, c-format
-msgid "No changelog available for '%s'.\n"
-msgstr ""
-
-#: src/pacman/pacman.c:90
-#, c-format
-msgid "usage: %s {-h --help}\n"
-msgstr ""
-
-#: src/pacman/pacman.c:91
-#, c-format
-msgid " %s {-V --version}\n"
-msgstr ""
-
-#: src/pacman/pacman.c:92
-#, c-format
-msgid " %s {-A --add} [options] <file>\n"
-msgstr ""
-
-#: src/pacman/pacman.c:93
-#, c-format
-msgid " %s {-F --freshen} [options] <file>\n"
-msgstr ""
-
-#: src/pacman/pacman.c:94
-#, c-format
-msgid " %s {-Q --query} [options] [package]\n"
-msgstr ""
-
-#: src/pacman/pacman.c:95
-#, c-format
-msgid " %s {-R --remove} [options] <package>\n"
-msgstr ""
-
-#: src/pacman/pacman.c:96
-#, c-format
-msgid " %s {-S --sync} [options] [package]\n"
-msgstr ""
-
-#: src/pacman/pacman.c:97
-#, c-format
-msgid " %s {-U --upgrade} [options] <file>\n"
-msgstr ""
-
-#: src/pacman/pacman.c:98
-#, c-format
-msgid ""
-"\n"
-"use '%s --help' with other options for more syntax\n"
-msgstr ""
-
-#: src/pacman/pacman.c:101
-#, c-format
-msgid "usage: %s {-A --add} [options] <file>\n"
-msgstr ""
-
-#: src/pacman/pacman.c:102 src/pacman/pacman.c:107 src/pacman/pacman.c:119
-#: src/pacman/pacman.c:124 src/pacman/pacman.c:138
-#, c-format
-msgid "options:\n"
-msgstr ""
-
-#: src/pacman/pacman.c:103 src/pacman/pacman.c:109 src/pacman/pacman.c:120
-#: src/pacman/pacman.c:140
-#, c-format
-msgid " -d, --nodeps skip dependency checks\n"
-msgstr ""
-
-#: src/pacman/pacman.c:104 src/pacman/pacman.c:121 src/pacman/pacman.c:142
-#, c-format
-msgid " -f, --force force install, overwrite conflicting files\n"
-msgstr ""
-
-#: src/pacman/pacman.c:106
-#, c-format
-msgid "usage: %s {-R --remove} [options] <package>\n"
-msgstr ""
-
-#: src/pacman/pacman.c:108
-#, c-format
-msgid ""
-" -c, --cascade remove packages and all packages that depend on them\n"
-msgstr ""
-
-#: src/pacman/pacman.c:110
-#, c-format
-msgid ""
-" -k, --dbonly only remove database entry, do not remove files\n"
-msgstr ""
-
-#: src/pacman/pacman.c:111
-#, c-format
-msgid " -n, --nosave remove configuration files as well\n"
-msgstr ""
-
-#: src/pacman/pacman.c:112
-#, c-format
-msgid ""
-" -s, --recursive remove dependencies also (that won't break packages)\n"
-msgstr ""
-
-#: src/pacman/pacman.c:115
-#, c-format
-msgid "usage: %s {-F --freshen} [options] <file>\n"
-msgstr ""
-
-#: src/pacman/pacman.c:117
-#, c-format
-msgid "usage: %s {-U --upgrade} [options] <file>\n"
-msgstr ""
-
-#: src/pacman/pacman.c:123
-#, c-format
-msgid "usage: %s {-Q --query} [options] [package]\n"
-msgstr ""
-
-#: src/pacman/pacman.c:125
-#, c-format
-msgid " -c, --changelog view the changelog of a package\n"
-msgstr ""
-
-#: src/pacman/pacman.c:126
-#, c-format
-msgid ""
-" -e, --orphans list all packages installed as dependencies but no "
-"longer\n"
-msgstr ""
-
-#: src/pacman/pacman.c:127
-#, c-format
-msgid " required by any package\n"
-msgstr ""
-
-#: src/pacman/pacman.c:128 src/pacman/pacman.c:143
-#, c-format
-msgid " -g, --groups view all members of a package group\n"
-msgstr ""
-
-#: src/pacman/pacman.c:129 src/pacman/pacman.c:144
-#, c-format
-msgid " -i, --info view package information\n"
-msgstr ""
-
-#: src/pacman/pacman.c:130
-#, c-format
-msgid " -l, --list list the contents of the queried package\n"
-msgstr ""
-
-#: src/pacman/pacman.c:131
-#, c-format
-msgid ""
-" -m, --foreign list installed packages not found in sync db(s)\n"
-msgstr ""
-
-#: src/pacman/pacman.c:132
-#, c-format
-msgid " -o, --owns <file> query the package that owns <file>\n"
-msgstr ""
-
-#: src/pacman/pacman.c:133
-#, c-format
-msgid " -p, --file <package> query a package file instead of the database\n"
-msgstr ""
-
-#: src/pacman/pacman.c:134
-#, c-format
-msgid ""
-" -s, --search <regex> search locally-installed packages for matching "
-"strings\n"
-msgstr ""
-
-#: src/pacman/pacman.c:135
-#, c-format
-msgid " -u, --upgrades list all packages that can be upgraded\n"
-msgstr ""
-
-#: src/pacman/pacman.c:137
-#, c-format
-msgid "usage: %s {-S --sync} [options] [package]\n"
-msgstr ""
-
-#: src/pacman/pacman.c:139
-#, c-format
-msgid ""
-" -c, --clean remove old packages from cache directory (-cc for "
-"all)\n"
-msgstr ""
-
-#: src/pacman/pacman.c:141
-#, c-format
-msgid " -e, --dependsonly install dependencies only\n"
-msgstr ""
-
-#: src/pacman/pacman.c:145
-#, c-format
-msgid " -l, --list <repo> view a list of packages in a repo\n"
-msgstr ""
-
-#: src/pacman/pacman.c:146
-#, c-format
-msgid ""
-" -p, --print-uris print out URIs for given packages and their "
-"dependencies\n"
-msgstr ""
-
-#: src/pacman/pacman.c:147
-#, c-format
-msgid ""
-" -s, --search <regex> search remote repositories for matching strings\n"
-msgstr ""
-
-#: src/pacman/pacman.c:148
-#, c-format
-msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
-msgstr ""
-
-#: src/pacman/pacman.c:149
-#, c-format
-msgid ""
-" -w, --downloadonly download packages but do not install/upgrade "
-"anything\n"
-msgstr ""
-
-#: src/pacman/pacman.c:150
-#, c-format
-msgid ""
-" -y, --refresh download fresh package databases from the server\n"
-msgstr ""
-
-#: src/pacman/pacman.c:151
-#, c-format
-msgid ""
-" --ignore <pkg> ignore a package upgrade (can be used more than "
-"once)\n"
-msgstr ""
-
-#: src/pacman/pacman.c:153
-#, c-format
-msgid " --config <path> set an alternate configuration file\n"
-msgstr ""
-
-#: src/pacman/pacman.c:154
-#, c-format
-msgid " --noconfirm do not ask for any confirmation\n"
-msgstr ""
-
-#: src/pacman/pacman.c:155
-#, c-format
-msgid ""
-" --ask <number> pre-specify answers for questions (see manpage)\n"
-msgstr ""
-
-#: src/pacman/pacman.c:156
-#, c-format
-msgid ""
-" --noprogressbar do not show a progress bar when downloading files\n"
-msgstr ""
-
-#: src/pacman/pacman.c:157
-#, c-format
-msgid ""
-" --noscriptlet do not execute the install scriptlet if there is any\n"
-msgstr ""
-
-#: src/pacman/pacman.c:158
-#, c-format
-msgid " -v, --verbose be verbose\n"
-msgstr ""
-
-#: src/pacman/pacman.c:159
-#, c-format
-msgid " -r, --root <path> set an alternate installation root\n"
-msgstr ""
-
-#: src/pacman/pacman.c:160
-#, c-format
-msgid " -b, --dbpath <path> set an alternate database location\n"
-msgstr ""
-
-#: src/pacman/pacman.c:161
-#, c-format
-msgid " --cachedir <dir> set an alternate package cache location\n"
-msgstr ""
-
-#: src/pacman/pacman.c:174
-#, c-format
-msgid " This program may be freely redistributed under\n"
-msgstr ""
-
-#: src/pacman/pacman.c:175
-#, c-format
-msgid " the terms of the GNU General Public License\n"
-msgstr ""
-
-#: src/pacman/pacman.c:300
-#, c-format
-msgid "'%s' is not a valid debug level"
-msgstr ""
-
-#: src/pacman/pacman.c:315
-#, c-format
-msgid "'%s' is not a valid cache directory\n"
-msgstr ""
-
-#: src/pacman/pacman.c:333
-#, c-format
-msgid "'%s' is not a valid db path\n"
-msgstr ""
-
-#: src/pacman/pacman.c:363
-#, c-format
-msgid "'%s' is not a valid root path\n"
-msgstr ""
-
-#: src/pacman/pacman.c:390
-msgid "only one operation may be used at a time\n"
-msgstr ""
-
-#: src/pacman/pacman.c:436
-msgid "warning: current locale is invalid; using default \"C\" locale"
-msgstr ""
-
-#: src/pacman/pacman.c:456
-#, c-format
-msgid "failed to initialize alpm library (%s)\n"
-msgstr ""
-
-#: src/pacman/pacman.c:489
-msgid "you cannot perform this operation unless you are root.\n"
-msgstr ""
-
-#: src/pacman/pacman.c:505
-#, c-format
-msgid "failed to parse config (%s)\n"
-msgstr ""
-
-#: src/pacman/pacman.c:516
-msgid "Targets :"
-msgstr ""
-
-#: src/pacman/pacman.c:522
-#, c-format
-msgid "could not register 'local' database (%s)\n"
-msgstr ""
-
-#: src/pacman/pacman.c:529
-msgid "no targets specified (use -h for help)\n"
-msgstr ""
-
-#: src/pacman/pacman.c:542
-msgid "no operation specified (use -h for help)\n"
-msgstr ""
-
-#: src/pacman/query.c:90
-msgid "no file was specified for --owns\n"
-msgstr ""
-
-#: src/pacman/query.c:95
-#, c-format
-msgid "failed to read file '%s': %s"
-msgstr ""
-
-#: src/pacman/query.c:100
-msgid "cannot determine ownership of a directory"
-msgstr ""
-
-#: src/pacman/query.c:105
-#, c-format
-msgid "cannot determine real path for '%s': %s"
-msgstr ""
-
-#: src/pacman/query.c:119
-#, c-format
-msgid "%s is owned by %s %s\n"
-msgstr ""
-
-#: src/pacman/query.c:127
-#, c-format
-msgid "No package owns %s\n"
-msgstr ""
-
-#: src/pacman/query.c:170 src/pacman/sync.c:453
-msgid "no usable package repositories configured.\n"
-msgstr ""
-
-#: src/pacman/query.c:176
-msgid "Checking for package upgrades..."
-msgstr ""
-
-#: src/pacman/query.c:183
-msgid "no upgrades found"
-msgstr ""
-
-#: src/pacman/query.c:221
-#, c-format
-msgid "group \"%s\" was not found\n"
-msgstr ""
-
-#: src/pacman/query.c:232
-msgid "no package file was specified for --file\n"
-msgstr ""
-
-#: src/pacman/query.c:236
-#, c-format
-msgid "failed to load package '%s' (%s)\n"
-msgstr ""
-
-#: src/pacman/query.c:273 src/pacman/query.c:305
-#, c-format
-msgid "package \"%s\" not found\n"
-msgstr ""
-
-#: src/pacman/remove.c:61 src/pacman/sync.c:568
-#, c-format
-msgid ":: group %s:\n"
-msgstr ""
-
-#: src/pacman/remove.c:63
-msgid " Remove whole content? [Y/n] "
-msgstr ""
-
-#: src/pacman/remove.c:67
-#, c-format
-msgid ":: Remove %s from group %s? [Y/n] "
-msgstr ""
-
-#: src/pacman/remove.c:80 src/pacman/sync.c:480 src/pacman/sync.c:529
-#, c-format
-msgid "failed to init transaction (%s)\n"
-msgstr ""
-
-#: src/pacman/remove.c:92
-#, c-format
-msgid "failed to add target '%s' (%s)\n"
-msgstr ""
-
-#: src/pacman/remove.c:106
-#, c-format
-msgid ":: %s is required by %s\n"
-msgstr ""
-
-#: src/pacman/remove.c:128 src/pacman/util.c:324
-msgid "Targets:"
-msgstr ""
-
-#: src/pacman/remove.c:131
-msgid ""
-"\n"
-"Do you want to remove these packages? [Y/n] "
-msgstr ""
-
-#: src/pacman/sync.c:115
-msgid "Do you want to remove old packages from cache? [Y/n] "
-msgstr ""
-
-#: src/pacman/sync.c:117
-msgid "removing old packages from cache... "
-msgstr ""
-
-#: src/pacman/sync.c:120
-msgid "could not access cache directory\n"
-msgstr ""
-
-#: src/pacman/sync.c:181
-msgid "Do you want to remove all packages from cache? [Y/n] "
-msgstr ""
-
-#: src/pacman/sync.c:183
-msgid "removing all packages from cache... "
-msgstr ""
-
-#: src/pacman/sync.c:186
-msgid "could not remove cache directory\n"
-msgstr ""
-
-#: src/pacman/sync.c:191
-msgid "could not create new cache directory\n"
-msgstr ""
-
-#: src/pacman/sync.c:218
-#, c-format
-msgid "failed to synchronize %s: %s\n"
-msgstr ""
-
-#: src/pacman/sync.c:220
-#, c-format
-msgid "failed to update %s (%s)\n"
-msgstr ""
-
-#: src/pacman/sync.c:223
-#, c-format
-msgid " %s is up to date\n"
-msgstr ""
-
-#: src/pacman/sync.c:345
-#, c-format
-msgid "repository '%s' does not exist\n"
-msgstr ""
-
-#: src/pacman/sync.c:361
-#, c-format
-msgid "package '%s' was not found in repository '%s'\n"
-msgstr ""
-
-#: src/pacman/sync.c:381
-#, c-format
-msgid "package '%s' was not found\n"
-msgstr ""
-
-#: src/pacman/sync.c:418
-#, c-format
-msgid "repository \"%s\" was not found.\n"
-msgstr ""
-
-#: src/pacman/sync.c:490
-msgid ":: Synchronizing package databases...\n"
-msgstr ""
-
-#: src/pacman/sync.c:491
-msgid "synchronizing package lists"
-msgstr ""
-
-#: src/pacman/sync.c:493
-msgid "failed to synchronize any databases"
-msgstr ""
-
-#: src/pacman/sync.c:499
-msgid ":: Starting full system upgrade...\n"
-msgstr ""
-
-#: src/pacman/sync.c:500
-msgid "starting full system upgrade"
-msgstr ""
-
-#: src/pacman/sync.c:518
-msgid ""
-"\n"
-":: pacman has detected a newer version of the \"pacman\" package.\n"
-msgstr ""
-
-#: src/pacman/sync.c:519
-msgid ":: It is recommended that you allow pacman to upgrade itself\n"
-msgstr ""
-
-#: src/pacman/sync.c:520
-msgid ":: first, then you can re-run the operation with the newer version.\n"
-msgstr ""
-
-#: src/pacman/sync.c:522
-msgid ":: Upgrade pacman first? [Y/n] "
-msgstr ""
-
-#: src/pacman/sync.c:537
-#, c-format
-msgid "pacman: %s\n"
-msgstr ""
-
-#: src/pacman/sync.c:572
-msgid ":: Install whole content? [Y/n] "
-msgstr ""
-
-#: src/pacman/sync.c:579
-#, c-format
-msgid ":: Install %s from group %s? [Y/n] "
-msgstr ""
-
-#: src/pacman/sync.c:603
-#, c-format
-msgid "'%s': not found in sync db\n"
-msgstr ""
-
-#: src/pacman/sync.c:621
-msgid "requires"
-msgstr ""
-
-#: src/pacman/sync.c:663
-msgid " local database is up to date\n"
-msgstr ""
-
-#: src/pacman/sync.c:672
-msgid ""
-"\n"
-"Beginning download...\n"
-msgstr ""
-
-#: src/pacman/sync.c:676
-msgid "Proceed with download? [Y/n] "
-msgstr ""
-
-#: src/pacman/sync.c:684
-msgid ""
-"\n"
-"Beginning upgrade process...\n"
-msgstr ""
-
-#: src/pacman/sync.c:688
-msgid "Proceed with installation? [Y/n] "
-msgstr ""
-
-#: src/pacman/trans.c:55
-msgid "checking dependencies... "
-msgstr ""
-
-#: src/pacman/trans.c:59
-msgid "checking for file conflicts... "
-msgstr ""
-
-#: src/pacman/trans.c:63
-msgid "cleaning up... "
-msgstr ""
-
-#: src/pacman/trans.c:66
-msgid "resolving dependencies... "
-msgstr ""
-
-#: src/pacman/trans.c:69
-msgid "looking for inter-conflicts... "
-msgstr ""
-
-#: src/pacman/trans.c:86
-#, c-format
-msgid "installing %s... "
-msgstr ""
-
-#: src/pacman/trans.c:93
-#, c-format
-msgid "installed %s (%s)"
-msgstr ""
-
-#: src/pacman/trans.c:100
-#, c-format
-msgid "removing %s... "
-msgstr ""
-
-#: src/pacman/trans.c:107
-#, c-format
-msgid "removed %s (%s)"
-msgstr ""
-
-#: src/pacman/trans.c:114
-#, c-format
-msgid "upgrading %s... "
-msgstr ""
-
-#: src/pacman/trans.c:121
-#, c-format
-msgid "upgraded %s (%s -> %s)"
-msgstr ""
-
-#: src/pacman/trans.c:128
-msgid "checking package integrity... "
-msgstr ""
-
-#: src/pacman/trans.c:144
-msgid "failed.\n"
-msgstr ""
-
-#: src/pacman/trans.c:151
-#, c-format
-msgid ":: Retrieving packages from %s...\n"
-msgstr ""
-
-#: src/pacman/trans.c:172
-#, c-format
-msgid ":: %1$s requires %2$s from IgnorePkg. Install %2$s? [Y/n] "
-msgstr ""
-
-#: src/pacman/trans.c:177
-#, c-format
-msgid ":: %s is in IgnorePkg. Install anyway? [Y/n] "
-msgstr ""
-
-#: src/pacman/trans.c:190
-#, c-format
-msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
-msgstr ""
-
-#: src/pacman/trans.c:203
-#, c-format
-msgid ":: Replace %s with %s/%s? [Y/n] "
-msgstr ""
-
-#: src/pacman/trans.c:218
-#, c-format
-msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
-msgstr ""
-
-#: src/pacman/trans.c:234
-#, c-format
-msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
-msgstr ""
-
-#: src/pacman/trans.c:252
-#, c-format
-msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
-msgstr ""
-
-#: src/pacman/trans.c:270
-#, c-format
-msgid ":: Archive %s is corrupted. Do you want to delete it? [Y/n] "
-msgstr ""
-
-#: src/pacman/trans.c:326
-msgid "installing"
-msgstr ""
-
-#: src/pacman/trans.c:329
-msgid "upgrading"
-msgstr ""
-
-#: src/pacman/trans.c:332
-msgid "removing"
-msgstr ""
-
-#: src/pacman/trans.c:335
-msgid "checking for file conflicts"
-msgstr ""
-
-#: src/pacman/util.c:259
-#, c-format
-msgid "None\n"
-msgstr ""
-
-#: src/pacman/util.c:311
-msgid "Remove:"
-msgstr ""
-
-#: src/pacman/util.c:319
-#, c-format
-msgid ""
-"\n"
-"Total Removed Size: %.2f MB\n"
-msgstr ""
-
-#: src/pacman/util.c:330
-#, c-format
-msgid ""
-"\n"
-"Total Package Size: %.2f MB\n"
-msgstr ""
-
-#: src/pacman/util.c:337
-#, c-format
-msgid "Total Installed Size: %.2f MB\n"
-msgstr ""
diff --git a/src/pacman/po/pl_PL.po b/src/pacman/po/pl_PL.po
deleted file mode 100644
index a8f33c36..00000000
--- a/src/pacman/po/pl_PL.po
+++ /dev/null
@@ -1,1093 +0,0 @@
-# Polish translations for Pacman package manager package
-# Polskie tłumaczenia dla pakietu Pacman package manager.
-# Copyright (C) 2007 Judd Vinet <jvinet@zeroflux.org>
-# This file is distributed under the same license as the Pacman package manager package.
-#
-# Mateusz Jędrasik <m.jedrasik@gmail.com>, 2007.
-# Jaroslaw Swierczynski <swiergot@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: Pacman package manager 3.0.1\n"
-"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-04-28 04:02-0400\n"
-"PO-Revision-Date: 2007-05-08 00:32+0200\n"
-"Last-Translator: Mateusz Jędrasik <m.jedrasik@gmail.com>\n"
-"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%"
-"100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: src/pacman/add.c:72 src/pacman/remove.c:82 src/pacman/sync.c:482
-#: src/pacman/sync.c:531
-#, c-format
-msgid ""
-" if you're sure a package manager is not already running,\n"
-" you can remove %s%s\n"
-msgstr ""
-"\tjeśli jesteś pewien, że menedżer pakietów nie jest już\n"
-"\turuchomiony, możesz usunąć %s%s\n"
-
-#: src/pacman/add.c:79
-msgid "loading package data... "
-msgstr "Å‚adowanie informacji o pakietach... "
-
-#: src/pacman/add.c:83
-#, c-format
-msgid "failed to add target '%s' (%s)"
-msgstr "nie udało się dodać celu '%s' (%s)"
-
-#: src/pacman/add.c:88 src/pacman/sync.c:196 src/pacman/trans.c:73
-#: src/pacman/trans.c:80 src/pacman/trans.c:91 src/pacman/trans.c:105
-#: src/pacman/trans.c:119 src/pacman/trans.c:131 src/pacman/trans.c:142
-msgid "done.\n"
-msgstr "gotowe.\n"
-
-#: src/pacman/add.c:95 src/pacman/remove.c:101 src/pacman/sync.c:616
-#, c-format
-msgid "failed to prepare transaction (%s)\n"
-msgstr "nie udało się przygotować transakcji (%s)\n"
-
-#: src/pacman/add.c:104
-#, c-format
-msgid ":: %s: requires %s"
-msgstr ":: %s: wymaga %s"
-
-#: src/pacman/add.c:125 src/pacman/sync.c:643
-#, c-format
-msgid ":: %s: conflicts with %s"
-msgstr ":: %s: konfliktuje z %s"
-
-#: src/pacman/add.c:134 src/pacman/sync.c:707
-#, c-format
-msgid "%s exists in both '%s' and '%s'\n"
-msgstr "%s znajduje siÄ™ w '%s' i w '%s'\n"
-
-#: src/pacman/add.c:140 src/pacman/sync.c:713
-#, c-format
-msgid "%s: %s exists in filesystem\n"
-msgstr "%s: %s znajduje się w systemie plików\n"
-
-#: src/pacman/add.c:146 src/pacman/sync.c:719 src/pacman/sync.c:725
-msgid ""
-"\n"
-"errors occurred, no packages were upgraded.\n"
-msgstr ""
-"\n"
-"wystąpiły błędy, nie zaktualizowano żadnych pakietów.\n"
-
-#: src/pacman/add.c:156 src/pacman/sync.c:650
-#, c-format
-msgid ":: %.1f MB required, have %.1f MB"
-msgstr ":: %.1f MB wymagane, dostępnych %.1f MB"
-
-#: src/pacman/add.c:169 src/pacman/remove.c:141 src/pacman/sync.c:700
-#, c-format
-msgid "failed to commit transaction (%s)\n"
-msgstr "nie udało się dokonać transakcji (%s)\n"
-
-#: src/pacman/add.c:179 src/pacman/remove.c:151 src/pacman/sync.c:524
-#: src/pacman/sync.c:741
-#, c-format
-msgid "failed to release transaction (%s)\n"
-msgstr "nie udało się wyswobodzić transaction (%s)\n"
-
-#: src/pacman/log.c:63
-#, c-format
-msgid "debug"
-msgstr "debug"
-
-#: src/pacman/log.c:66
-#, c-format
-msgid "error"
-msgstr "błąd"
-
-#: src/pacman/log.c:69
-#, c-format
-msgid "warning"
-msgstr "ostrzeżenie"
-
-#: src/pacman/log.c:75
-#, c-format
-msgid "function"
-msgstr "funkcja"
-
-#: src/pacman/log.c:194
-msgid "Y"
-msgstr "T"
-
-#: src/pacman/log.c:194
-msgid "YES"
-msgstr "TAK"
-
-#: src/pacman/log.h:30
-msgid "error: "
-msgstr "błąd: "
-
-#: src/pacman/log.h:34
-msgid "warning: "
-msgstr "ostrzeżenie: "
-
-#: src/pacman/package.c:60
-msgid "Explicitly installed"
-msgstr "zainstalowano na żądanie"
-
-#: src/pacman/package.c:63
-msgid "Installed as a dependency for another package"
-msgstr "zainstalowano jako zależność"
-
-#: src/pacman/package.c:66 src/pacman/package.c:90
-msgid "Unknown"
-msgstr "nieznany"
-
-#: src/pacman/package.c:70 src/pacman/package.c:121
-msgid "Description : "
-msgstr "Opis : "
-
-#: src/pacman/package.c:73 src/pacman/package.c:127
-#, c-format
-msgid "Name : %s\n"
-msgstr "Nazwa : %s\n"
-
-#: src/pacman/package.c:74 src/pacman/package.c:128
-#, c-format
-msgid "Version : %s\n"
-msgstr "Wersja : %s\n"
-
-#: src/pacman/package.c:75
-#, c-format
-msgid "URL : %s\n"
-msgstr "URL : %s\n"
-
-#: src/pacman/package.c:76
-msgid "License :"
-msgstr "Licencja :"
-
-#: src/pacman/package.c:77 src/pacman/package.c:129
-msgid "Groups :"
-msgstr "Grupy :"
-
-#: src/pacman/package.c:78 src/pacman/package.c:130
-msgid "Provides :"
-msgstr "Dostarcza :"
-
-#: src/pacman/package.c:79 src/pacman/package.c:131
-msgid "Depends On :"
-msgstr "Zależy od :"
-
-#: src/pacman/package.c:80 src/pacman/package.c:132
-msgid "Removes :"
-msgstr "Usuwa :"
-
-#: src/pacman/package.c:83
-msgid "Required By :"
-msgstr "Wymag. przez :"
-
-#: src/pacman/package.c:85 src/pacman/package.c:133
-msgid "Conflicts With :"
-msgstr "Konflikty : "
-
-#: src/pacman/package.c:86 src/pacman/package.c:136
-#, c-format
-msgid "Installed Size : %6.2f K\n"
-msgstr "Zajmuje : %6.2f K\n"
-
-#: src/pacman/package.c:87
-#, c-format
-msgid "Packager : %s\n"
-msgstr "PakujÄ…cy : %s\n"
-
-#: src/pacman/package.c:88
-#, c-format
-msgid "Architecture : %s\n"
-msgstr "Architektura : %s\n"
-
-#: src/pacman/package.c:89
-#, c-format
-msgid "Build Date : %s %s\n"
-msgstr "Data budowy : %s %s\n"
-
-#: src/pacman/package.c:90
-#, c-format
-msgid "Build Type : %s\n"
-msgstr "Typ budowy : %s\n"
-
-#: src/pacman/package.c:92
-#, c-format
-msgid "Install Date : %s %s\n"
-msgstr "Data inst. : %s %s\n"
-
-#: src/pacman/package.c:93
-#, c-format
-msgid "Install Reason : %s\n"
-msgstr "Powód inst. : %s\n"
-
-#: src/pacman/package.c:95
-#, c-format
-msgid "Install Script : %s\n"
-msgstr "Skrypt inst. : %s\n"
-
-#: src/pacman/package.c:96
-msgid "Yes"
-msgstr "Tak"
-
-#: src/pacman/package.c:96
-msgid "No"
-msgstr "Nie"
-
-#: src/pacman/package.c:126
-#, c-format
-msgid "Repository : %s\n"
-msgstr "Repozytorium : %s\n"
-
-#: src/pacman/package.c:134
-msgid "Replaces :"
-msgstr "Zastępuje :"
-
-#: src/pacman/package.c:135
-#, c-format
-msgid "Download Size : %6.2f K\n"
-msgstr "Do pobrania : %6.2f K\n"
-
-#: src/pacman/package.c:144
-#, c-format
-msgid "MD5 Sum : %s"
-msgstr "Suma MD5 : %s"
-
-#: src/pacman/package.c:147
-#, c-format
-msgid "SHA1 Sum : %s"
-msgstr "Suma SHA1 : %s"
-
-#: src/pacman/package.c:158
-#, c-format
-msgid "Backup Files:\n"
-msgstr "Kopie zapas. :\n"
-
-#: src/pacman/package.c:180
-#, c-format
-msgid "error calculating checksums for %s\n"
-msgstr "błąd kalkulowania sum kontrolnych dla %s\n"
-
-#: src/pacman/package.c:193
-#, c-format
-msgid "MODIFIED\t%s\n"
-msgstr "ZMIENIONE\t%s\n"
-
-#: src/pacman/package.c:195
-#, c-format
-msgid "Not Modified\t%s\n"
-msgstr "Nie zmienione\t%s\n"
-
-#: src/pacman/package.c:200
-#, c-format
-msgid "MISSING\t\t%s\n"
-msgstr "BRAKUJÄ„CE\t\t%s\n"
-
-#: src/pacman/package.c:206
-#, c-format
-msgid "(none)\n"
-msgstr "(brak)\n"
-
-#: src/pacman/package.c:246
-#, c-format
-msgid "No changelog available for '%s'.\n"
-msgstr "Dziennik zmian dla '%s' nie jest dostępny.\n"
-
-#: src/pacman/pacman.c:90
-#, c-format
-msgid "usage: %s {-h --help}\n"
-msgstr "składnia: %s {-h --help}\n"
-
-#: src/pacman/pacman.c:91
-#, c-format
-msgid " %s {-V --version}\n"
-msgstr " %s {-V --version}\n"
-
-#: src/pacman/pacman.c:92
-#, c-format
-msgid " %s {-A --add} [options] <file>\n"
-msgstr " %s {-A --add} [opcje] <plik>\n"
-
-#: src/pacman/pacman.c:93
-#, c-format
-msgid " %s {-F --freshen} [options] <file>\n"
-msgstr " %s {-F --freshen} [opcje] <plik>\n"
-
-#: src/pacman/pacman.c:94
-#, c-format
-msgid " %s {-Q --query} [options] [package]\n"
-msgstr " %s {-Q --query} [opcje] [pakiet]\n"
-
-#: src/pacman/pacman.c:95
-#, c-format
-msgid " %s {-R --remove} [options] <package>\n"
-msgstr " %s {-R --remove} [opcje] <pakiet>\n"
-
-#: src/pacman/pacman.c:96
-#, c-format
-msgid " %s {-S --sync} [options] [package]\n"
-msgstr " %s {-S --sync} [opcje] [pakiet]\n"
-
-#: src/pacman/pacman.c:97
-#, c-format
-msgid " %s {-U --upgrade} [options] <file>\n"
-msgstr " %s {-U --upgrade} [opcje] <plik>\n"
-
-#: src/pacman/pacman.c:98
-#, c-format
-msgid ""
-"\n"
-"use '%s --help' with other options for more syntax\n"
-msgstr ""
-"\n"
-"użyj '%s --help' z innymi opcjami dla dalszych składni\n"
-
-#: src/pacman/pacman.c:101
-#, c-format
-msgid "usage: %s {-A --add} [options] <file>\n"
-msgstr "składnia: %s {-A --add} [opcje] <plik>\n"
-
-#: src/pacman/pacman.c:102 src/pacman/pacman.c:107 src/pacman/pacman.c:119
-#: src/pacman/pacman.c:124 src/pacman/pacman.c:138
-#, c-format
-msgid "options:\n"
-msgstr "opcje:\n"
-
-#: src/pacman/pacman.c:103 src/pacman/pacman.c:109 src/pacman/pacman.c:120
-#: src/pacman/pacman.c:140
-#, c-format
-msgid " -d, --nodeps skip dependency checks\n"
-msgstr " -d, --nodeps pomija sprawdzanie zależności\n"
-
-#: src/pacman/pacman.c:104 src/pacman/pacman.c:121 src/pacman/pacman.c:142
-#, c-format
-msgid " -f, --force force install, overwrite conflicting files\n"
-msgstr ""
-" -f, --force wymusza instalacjÄ™, nadpisujÄ…c konfliktujÄ…ce pliki\n"
-
-#: src/pacman/pacman.c:106
-#, c-format
-msgid "usage: %s {-R --remove} [options] <package>\n"
-msgstr "składnia: %s {-R --remove} [opcje] <pakiet>\n"
-
-#: src/pacman/pacman.c:108
-#, c-format
-msgid ""
-" -c, --cascade remove packages and all packages that depend on them\n"
-msgstr ""
-" -c, --cascade usuwa pakiet i wszystkie pakiety od niego zależne\n"
-
-#: src/pacman/pacman.c:110
-#, c-format
-msgid ""
-" -k, --dbonly only remove database entry, do not remove files\n"
-msgstr ""
-" -k, --dbonly usuwa jedynie wpis w bazie danych, nie usuwa plików\n"
-
-#: src/pacman/pacman.c:111
-#, c-format
-msgid " -n, --nosave remove configuration files as well\n"
-msgstr " -n, --nosave usuwa także pliki konfiguracyjne\n"
-
-#: src/pacman/pacman.c:112
-#, c-format
-msgid ""
-" -s, --recursive remove dependencies also (that won't break packages)\n"
-msgstr ""
-" -s, --recursive usuwa także zależności (nie wymagane przez inne "
-"pakiety)\n"
-
-#: src/pacman/pacman.c:115
-#, c-format
-msgid "usage: %s {-F --freshen} [options] <file>\n"
-msgstr "składnia: %s {-F --freshen} [opcje] <plik>\n"
-
-#: src/pacman/pacman.c:117
-#, c-format
-msgid "usage: %s {-U --upgrade} [options] <file>\n"
-msgstr "składnia: %s {-U --upgrade} [opcje] <plik>\n"
-
-#: src/pacman/pacman.c:123
-#, c-format
-msgid "usage: %s {-Q --query} [options] [package]\n"
-msgstr "składnia: %s {-Q --query} [opcje] [pakiet]\n"
-
-#: src/pacman/pacman.c:125
-#, c-format
-msgid " -c, --changelog view the changelog of a package\n"
-msgstr " -c, --changelog wyświetla dziennik zmian dla pakietu\n"
-
-#: src/pacman/pacman.c:126
-#, c-format
-msgid ""
-" -e, --orphans list all packages installed as dependencies but no "
-"longer\n"
-msgstr " -e, --orphans pokazuje wszystkie pakiety zainstalowane jako\n"
-
-#: src/pacman/pacman.c:127
-#, c-format
-msgid " required by any package\n"
-msgstr ""
-" zależności, ale nie wymagane już przez żaden pakiet\n"
-
-#: src/pacman/pacman.c:128 src/pacman/pacman.c:143
-#, c-format
-msgid " -g, --groups view all members of a package group\n"
-msgstr " -g, --groups wyświetla zawartość grupy pakietów\n"
-
-#: src/pacman/pacman.c:129 src/pacman/pacman.c:144
-#, c-format
-msgid " -i, --info view package information\n"
-msgstr " -i, --info wyświetla informację o pakiecie\n"
-
-#: src/pacman/pacman.c:130
-#, c-format
-msgid " -l, --list list the contents of the queried package\n"
-msgstr " -l, --list pokazuje zawartość wybranego pakietu\n"
-
-#: src/pacman/pacman.c:131
-#, c-format
-msgid ""
-" -m, --foreign list installed packages not found in sync db(s)\n"
-msgstr ""
-" -m, --foreign pokazuje zainstalowane pakiety nie znalezione w "
-"bazach\n"
-" synchronizacji\n"
-
-#: src/pacman/pacman.c:132
-#, c-format
-msgid " -o, --owns <file> query the package that owns <file>\n"
-msgstr " -o, --owns <plik> pokazuje pakiet zawierajÄ…cy <plik>\n"
-
-#: src/pacman/pacman.c:133
-#, c-format
-msgid " -p, --file <package> query a package file instead of the database\n"
-msgstr ""
-" -p, --file <pakiet> pokazuje informacje z pliku pakietu zamiast bazy "
-"danych\n"
-
-#: src/pacman/pacman.c:134
-#, c-format
-msgid ""
-" -s, --search <regex> search locally-installed packages for matching "
-"strings\n"
-msgstr ""
-" -s, --search <regex> przeszukuje lokalnie zainstalowane pakiety według\n"
-" pasujących łańcuchów znaków\n"
-
-#: src/pacman/pacman.c:135
-#, c-format
-msgid " -u, --upgrades list all packages that can be upgraded\n"
-msgstr ""
-" -u, --upgrades pokazuje wszystkie pakiety, które można uaktualnić\n"
-
-#: src/pacman/pacman.c:137
-#, c-format
-msgid "usage: %s {-S --sync} [options] [package]\n"
-msgstr "składnia: %s {-S --sync} [opcje] [pakiet]\n"
-
-#: src/pacman/pacman.c:139
-#, c-format
-msgid ""
-" -c, --clean remove old packages from cache directory (-cc for "
-"all)\n"
-msgstr ""
-" -c, --clean usuwa stare pakiety z katalogu pamięci podręcznej\n"
-" (-cc usuwa wszystkie)\n"
-
-#: src/pacman/pacman.c:141
-#, c-format
-msgid " -e, --dependsonly install dependencies only\n"
-msgstr " -e, --dependsonly instaluje tylko zależności\n"
-
-#: src/pacman/pacman.c:145
-#, c-format
-msgid " -l, --list <repo> view a list of packages in a repo\n"
-msgstr " -l, --list <repo> pokazuje listę pakietów w repozytorium\n"
-
-#: src/pacman/pacman.c:146
-#, c-format
-msgid ""
-" -p, --print-uris print out URIs for given packages and their "
-"dependencies\n"
-msgstr ""
-" -p, --print-uris wyświetla adresy URI dla danych pakietów oraz ich\n"
-" zależności\n"
-
-#: src/pacman/pacman.c:147
-#, c-format
-msgid ""
-" -s, --search <regex> search remote repositories for matching strings\n"
-msgstr ""
-" -s, --search <regex> przeszukuje zdalne repozytoria według pasujących\n"
-" łańcuchów znaków\n"
-
-#: src/pacman/pacman.c:148
-#, c-format
-msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
-msgstr " -u, --sysupgrade uaktualnia wszystkie niektualne pakiety\n"
-
-#: src/pacman/pacman.c:149
-#, c-format
-msgid ""
-" -w, --downloadonly download packages but do not install/upgrade "
-"anything\n"
-msgstr ""
-" -w, --downloadonly tylko pobiera pakiety bez instalacji/uaktualniania\n"
-" czegokolwiek\n"
-
-#: src/pacman/pacman.c:150
-#, c-format
-msgid ""
-" -y, --refresh download fresh package databases from the server\n"
-msgstr " -y, --refresh pobiera świeże bazy danych pakietów z serwera\n"
-
-#: src/pacman/pacman.c:151
-#, c-format
-msgid ""
-" --ignore <pkg> ignore a package upgrade (can be used more than "
-"once)\n"
-msgstr ""
-" --ignore <pkt> ignoruje uaktualnienie pakietu (można użyć więcej "
-"niż\n"
-" raz)\n"
-
-#: src/pacman/pacman.c:153
-#, c-format
-msgid " --config <path> set an alternate configuration file\n"
-msgstr " --config <ścżk> ustawia alternatywny plik konfiguracji\n"
-
-#: src/pacman/pacman.c:154
-#, c-format
-msgid " --noconfirm do not ask for any confirmation\n"
-msgstr ""
-" --noconfirm nie pyta o potwierdzenie ze strony użytkownika\n"
-
-#: src/pacman/pacman.c:155
-#, c-format
-msgid ""
-" --ask <number> pre-specify answers for questions (see manpage)\n"
-msgstr ""
-" --ask <numer> pozwala z góry udzielić odpowiedzi na pytania\n"
-" (zobacz stronę podręcznika)\n"
-
-#: src/pacman/pacman.c:156
-#, c-format
-msgid ""
-" --noprogressbar do not show a progress bar when downloading files\n"
-msgstr ""
-" --noprogressbar wyłącza pasek postępu podczas pobierania plików\n"
-
-#: src/pacman/pacman.c:157
-#, c-format
-msgid ""
-" --noscriptlet do not execute the install scriptlet if there is any\n"
-msgstr ""
-" --noscriptlet nie wykonuje skryptu instalacyjnego jeśli takowy "
-"istnieje\n"
-
-#: src/pacman/pacman.c:158
-#, c-format
-msgid " -v, --verbose be verbose\n"
-msgstr " -v, --verbose włącza tryb wypisywania szczegółów\n"
-
-#: src/pacman/pacman.c:159
-#, c-format
-msgid " -r, --root <path> set an alternate installation root\n"
-msgstr " -r, --root <ścżk> ustawia alternatywne drzewo instalacji\n"
-
-#: src/pacman/pacman.c:160
-#, c-format
-msgid " -b, --dbpath <path> set an alternate database location\n"
-msgstr " -b, --dbpath <ścżk> ustawia alternatywną lokalizację bazy danych\n"
-
-#: src/pacman/pacman.c:161
-#, c-format
-msgid " --cachedir <dir> set an alternate package cache location\n"
-msgstr ""
-" --cachedir <kat> ustawia alternatywną lokalizację pamięci podręcznej\n"
-" pakietów\n"
-
-#: src/pacman/pacman.c:174
-#, c-format
-msgid " This program may be freely redistributed under\n"
-msgstr ""
-" Ten program może być swobodnie rozpowszechniany na\n"
-
-#: src/pacman/pacman.c:175
-#, c-format
-msgid " the terms of the GNU General Public License\n"
-msgstr ""
-" zasadach Powszechnej Licencji Publicznej GNU (GPL)\n"
-
-#: src/pacman/pacman.c:300
-#, c-format
-msgid "'%s' is not a valid debug level"
-msgstr "'%s' nie jest poprawnym poziomem odpluskwiania"
-
-#: src/pacman/pacman.c:315
-#, c-format
-msgid "'%s' is not a valid cache directory\n"
-msgstr "'%s' nie jest poprawnym katalogiem pamięci podręcznej\n"
-
-#: src/pacman/pacman.c:333
-#, c-format
-msgid "'%s' is not a valid db path\n"
-msgstr "'%s' nie jest poprawną ścieżką db (bazy danych)\n"
-
-#: src/pacman/pacman.c:363
-#, c-format
-msgid "'%s' is not a valid root path\n"
-msgstr "'%s' nie jest poprawną ścieżką docelową\n"
-
-#: src/pacman/pacman.c:390
-msgid "only one operation may be used at a time\n"
-msgstr "tylko jedna operacja może być użyta na raz\n"
-
-#: src/pacman/pacman.c:436
-msgid "warning: current locale is invalid; using default \"C\" locale"
-msgstr "ostrzeżenie: ustawione locale jest niewłaściwe; używanie locale \"C\""
-
-#: src/pacman/pacman.c:456
-#, c-format
-msgid "failed to initialize alpm library (%s)\n"
-msgstr "nie udało się zinicjalizować biblioteki alpm (%s)\n"
-
-#: src/pacman/pacman.c:489
-msgid "you cannot perform this operation unless you are root.\n"
-msgstr "tą operację wykonać można jedynie jako root.\n"
-
-#: src/pacman/pacman.c:505
-#, c-format
-msgid "failed to parse config (%s)\n"
-msgstr "nie udało się przeczytać pliku konfiguracji (%s)\n"
-
-#: src/pacman/pacman.c:516
-msgid "Targets :"
-msgstr "Cele :"
-
-#: src/pacman/pacman.c:522
-#, c-format
-msgid "could not register 'local' database (%s)\n"
-msgstr "nie udało się zarejestrować 'lokalnej' bazy danych (%s)\n"
-
-#: src/pacman/pacman.c:529
-msgid "no targets specified (use -h for help)\n"
-msgstr "nie podano żadnych celów (użyj -h aby otrzymać pomoc)\n"
-
-#: src/pacman/pacman.c:542
-msgid "no operation specified (use -h for help)\n"
-msgstr "nie podano żadnej operacji (użyj -h aby otrzymać pomoc)\n"
-
-#: src/pacman/query.c:90
-msgid "no file was specified for --owns\n"
-msgstr "nie podano pliku dla --owns\n"
-
-#: src/pacman/query.c:95
-#, c-format
-msgid "failed to read file '%s': %s"
-msgstr "nie udało się odczytać pliku '%s': %s"
-
-#: src/pacman/query.c:100
-msgid "cannot determine ownership of a directory"
-msgstr "nie można ustalić właściciela katalogu"
-
-#: src/pacman/query.c:105
-#, c-format
-msgid "cannot determine real path for '%s': %s"
-msgstr "nie można ustalić pełnej ścieżki dla '%s': %s"
-
-#: src/pacman/query.c:119
-#, c-format
-msgid "%s is owned by %s %s\n"
-msgstr "%s jest własnością %s %s\n"
-
-#: src/pacman/query.c:127
-#, c-format
-msgid "No package owns %s\n"
-msgstr "Żaden pakiet nie jest właścicielem %s\n"
-
-#: src/pacman/query.c:170 src/pacman/sync.c:453
-msgid "no usable package repositories configured.\n"
-msgstr "nie skonfigurowano używalnych repozytoriów.\n"
-
-#: src/pacman/query.c:176
-msgid "Checking for package upgrades..."
-msgstr "Sprawdzanie możliwych aktualizacji..."
-
-#: src/pacman/query.c:183
-msgid "no upgrades found"
-msgstr "żadnych aktualizacji nie znaleziono"
-
-#: src/pacman/query.c:221
-#, c-format
-msgid "group \"%s\" was not found\n"
-msgstr "grupa \"%s\" nie została znaleziona\n"
-
-#: src/pacman/query.c:232
-msgid "no package file was specified for --file\n"
-msgstr "nie podano pliku pakietu dla --file\n"
-
-#: src/pacman/query.c:236
-#, c-format
-msgid "failed to load package '%s' (%s)\n"
-msgstr "nie udało się załadować pakietu '%s' (%s)\n"
-
-#: src/pacman/query.c:273 src/pacman/query.c:305
-#, c-format
-msgid "package \"%s\" not found\n"
-msgstr "pakiet \"%s\" nie został odnaleziony\n"
-
-#: src/pacman/remove.c:61 src/pacman/sync.c:568
-#, c-format
-msgid ":: group %s:\n"
-msgstr ":: grupa %s:\n"
-
-#: src/pacman/remove.c:63
-msgid " Remove whole content? [Y/n] "
-msgstr " Usunąć całą zawartość [T/n] "
-
-#: src/pacman/remove.c:67
-#, c-format
-msgid ":: Remove %s from group %s? [Y/n] "
-msgstr ":: Usunąć %s z grupy %s? [T/n] "
-
-#: src/pacman/remove.c:80 src/pacman/sync.c:480 src/pacman/sync.c:529
-#, c-format
-msgid "failed to init transaction (%s)\n"
-msgstr "nie udało się zainicjować transakcji (%s)\n"
-
-#: src/pacman/remove.c:92
-#, c-format
-msgid "failed to add target '%s' (%s)\n"
-msgstr "nie udało się dodać celu '%s' (%s)\n"
-
-#: src/pacman/remove.c:106
-#, c-format
-msgid ":: %s is required by %s\n"
-msgstr ":: %s jest wymagane przez %s\n"
-
-#: src/pacman/remove.c:128 src/pacman/util.c:324
-msgid "Targets:"
-msgstr "Cele:"
-
-#: src/pacman/remove.c:131
-msgid ""
-"\n"
-"Do you want to remove these packages? [Y/n] "
-msgstr ""
-"\n"
-"Czy chcesz usunąć te pakiety? [T/n] "
-
-#: src/pacman/sync.c:115
-msgid "Do you want to remove old packages from cache? [Y/n] "
-msgstr "Czy chcesz usunąć stare pakiety z pamięci podręcznej? [T/n] "
-
-#: src/pacman/sync.c:117
-msgid "removing old packages from cache... "
-msgstr "usuwanie starych pakietów z pamięci podręcznej... "
-
-#: src/pacman/sync.c:120
-msgid "could not access cache directory\n"
-msgstr "brak dostępu do katalogu pamięci podręcznej\n"
-
-#: src/pacman/sync.c:181
-msgid "Do you want to remove all packages from cache? [Y/n] "
-msgstr "Czy chcesz usunąć wszystkie pakiety z pamięci podręcznej? [T/n] "
-
-#: src/pacman/sync.c:183
-msgid "removing all packages from cache... "
-msgstr "usuwanie wszystkich pakietów z pamięci podręcznej... "
-
-#: src/pacman/sync.c:186
-msgid "could not remove cache directory\n"
-msgstr "nie udało się usunąć katalogu pamięci podręcznej\n"
-
-#: src/pacman/sync.c:191
-msgid "could not create new cache directory\n"
-msgstr "nie udało się utworzyć nowego katalogu pamięci podręcznej\n"
-
-#: src/pacman/sync.c:218
-#, c-format
-msgid "failed to synchronize %s: %s\n"
-msgstr "nie udało się zsynchronizować %s: %s\n"
-
-#: src/pacman/sync.c:220
-#, c-format
-msgid "failed to update %s (%s)\n"
-msgstr "nie udało się zaktualizować %s (%s)\n"
-
-#: src/pacman/sync.c:223
-#, c-format
-msgid " %s is up to date\n"
-msgstr " %s jest już w najnowszej wersji\n"
-
-#: src/pacman/sync.c:345
-#, c-format
-msgid "repository '%s' does not exist\n"
-msgstr "repozytorium '%s' nie istnieje\n"
-
-#: src/pacman/sync.c:361
-#, c-format
-msgid "package '%s' was not found in repository '%s'\n"
-msgstr "pakiet '%s' nie został odnaleziony w repozytorium '%s'\n"
-
-#: src/pacman/sync.c:381
-#, c-format
-msgid "package '%s' was not found\n"
-msgstr "pakiet '%s' nie został odnaleziony\n"
-
-#: src/pacman/sync.c:418
-#, c-format
-msgid "repository \"%s\" was not found.\n"
-msgstr "repozytorium \"%s\" nie zostało znalezione.\n"
-
-#: src/pacman/sync.c:490
-msgid ":: Synchronizing package databases...\n"
-msgstr ":: Synchronizowanie baz danych z pakietami...\n"
-
-#: src/pacman/sync.c:491
-msgid "synchronizing package lists"
-msgstr "synchronizowanie list pakietów"
-
-#: src/pacman/sync.c:493
-msgid "failed to synchronize any databases"
-msgstr "nie udało się zsynchronizować żadnych baz danych"
-
-#: src/pacman/sync.c:499
-msgid ":: Starting full system upgrade...\n"
-msgstr ":: Rozpoczynanie pełnej aktualizacji systemu...\n"
-
-#: src/pacman/sync.c:500
-msgid "starting full system upgrade"
-msgstr "rozpoczynanie pełnej aktualizacji systemu"
-
-#: src/pacman/sync.c:518
-msgid ""
-"\n"
-":: pacman has detected a newer version of the \"pacman\" package.\n"
-msgstr ""
-"\n"
-":: pacman wykrył nowszą wersję pakietu \"pacman\".\n"
-
-#: src/pacman/sync.c:519
-msgid ":: It is recommended that you allow pacman to upgrade itself\n"
-msgstr ":: Rekomendowane jest ażeby pozwolić pacman'owi zaktualizować się\n"
-
-#: src/pacman/sync.c:520
-msgid ":: first, then you can re-run the operation with the newer version.\n"
-msgstr ":: najpierw, po czym uruchomić ponownie operację z nowszą wersją.\n"
-
-#: src/pacman/sync.c:522
-msgid ":: Upgrade pacman first? [Y/n] "
-msgstr ":: Zaktualizować pacman'a najpierw? [T/n] "
-
-#: src/pacman/sync.c:537
-#, c-format
-msgid "pacman: %s\n"
-msgstr "pacman: %s\n"
-
-#: src/pacman/sync.c:572
-msgid ":: Install whole content? [Y/n] "
-msgstr ":: Zainstalować całą zawartość? [T/n] "
-
-#: src/pacman/sync.c:579
-#, c-format
-msgid ":: Install %s from group %s? [Y/n] "
-msgstr ":: Zainstalować %s z grupy %s? [T/n] "
-
-#: src/pacman/sync.c:603
-#, c-format
-msgid "'%s': not found in sync db\n"
-msgstr "'%s': nie znaleziono w bazie danych synchronizacji\n"
-
-#: src/pacman/sync.c:621
-msgid "requires"
-msgstr "wymaga"
-
-#: src/pacman/sync.c:663
-msgid " local database is up to date\n"
-msgstr " lokalna baza pakietów jest już w najnowszej wersji\n"
-
-#: src/pacman/sync.c:672
-msgid ""
-"\n"
-"Beginning download...\n"
-msgstr ""
-"\n"
-"Rozpoczynanie pobierania...\n"
-
-#: src/pacman/sync.c:676
-msgid "Proceed with download? [Y/n] "
-msgstr "Kontynuować pobieranie? [T/n] "
-
-#: src/pacman/sync.c:684
-msgid ""
-"\n"
-"Beginning upgrade process...\n"
-msgstr ""
-"\n"
-"Rozpoczynanie procesu aktualizacji...\n"
-
-#: src/pacman/sync.c:688
-msgid "Proceed with installation? [Y/n] "
-msgstr "Kontynuować instalację? [T/n] "
-
-#: src/pacman/trans.c:55
-msgid "checking dependencies... "
-msgstr "sprawdzanie zależności... "
-
-#: src/pacman/trans.c:59
-msgid "checking for file conflicts... "
-msgstr "sprawdzanie konfliktów w systemie plików... "
-
-#: src/pacman/trans.c:63
-msgid "cleaning up... "
-msgstr "czyszczenie... "
-
-#: src/pacman/trans.c:66
-msgid "resolving dependencies... "
-msgstr "rozwiązywanie zależności... "
-
-#: src/pacman/trans.c:69
-msgid "looking for inter-conflicts... "
-msgstr "szukanie konfliktów międzypakietowych... "
-
-#: src/pacman/trans.c:86
-#, c-format
-msgid "installing %s... "
-msgstr "instalowanie %s... "
-
-#: src/pacman/trans.c:93
-#, c-format
-msgid "installed %s (%s)"
-msgstr "zainstalowano %s (%s)"
-
-#: src/pacman/trans.c:100
-#, c-format
-msgid "removing %s... "
-msgstr "usuwanie %s... "
-
-#: src/pacman/trans.c:107
-#, c-format
-msgid "removed %s (%s)"
-msgstr "usunięto %s (%s)"
-
-#: src/pacman/trans.c:114
-#, c-format
-msgid "upgrading %s... "
-msgstr "aktualizowanie %s... "
-
-#: src/pacman/trans.c:121
-#, c-format
-msgid "upgraded %s (%s -> %s)"
-msgstr "zaktualizowano %s (%s -> %s)"
-
-#: src/pacman/trans.c:128
-msgid "checking package integrity... "
-msgstr "sprawdzanie spójności pakietów... "
-
-#: src/pacman/trans.c:144
-msgid "failed.\n"
-msgstr "nieudane.\n"
-
-#: src/pacman/trans.c:151
-#, c-format
-msgid ":: Retrieving packages from %s...\n"
-msgstr ":: Pobieranie pakietów z %s...\n"
-
-#: src/pacman/trans.c:172
-#, c-format
-msgid ":: %1$s requires %2$s from IgnorePkg. Install %2$s? [Y/n] "
-msgstr ":: %1$s wymaga %2$s z IgnorePkg. Zainstalować %2$s? [T/n] "
-
-#: src/pacman/trans.c:177
-#, c-format
-msgid ":: %s is in IgnorePkg. Install anyway? [Y/n] "
-msgstr ":: %s jest w IgnorePkg. Zainstalować mimo to? [T/n] "
-
-#: src/pacman/trans.c:190
-#, c-format
-msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
-msgstr ":: %s jest oznaczony jako HoldPkg. Usunąć mimo to? [T/n] "
-
-#: src/pacman/trans.c:203
-#, c-format
-msgid ":: Replace %s with %s/%s? [Y/n] "
-msgstr ":: Zastąpić %s przez %s/%s? [T/n] "
-
-#: src/pacman/trans.c:218
-#, c-format
-msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
-msgstr ":: %s konfliktuje z %s. Usunąć %s? [T/n] "
-
-#: src/pacman/trans.c:234
-#, c-format
-msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
-msgstr ":: %s-%s: lokalna wersja jest nowsza. Aktualizować pomimo to? [T/n] "
-
-#: src/pacman/trans.c:252
-#, c-format
-msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
-msgstr ""
-":: %s-%s: lokalny pakiet jest już w najnowszej wersji. Aktualizować mimo to? "
-"[T/n] "
-
-#: src/pacman/trans.c:270
-#, c-format
-msgid ":: Archive %s is corrupted. Do you want to delete it? [Y/n] "
-msgstr ":: Archiwum %s jest uszkodzone. Czy chcesz je usunąć? [T/n] "
-
-#: src/pacman/trans.c:326
-msgid "installing"
-msgstr "instalowanie"
-
-#: src/pacman/trans.c:329
-msgid "upgrading"
-msgstr "aktualizowanie"
-
-#: src/pacman/trans.c:332
-msgid "removing"
-msgstr "usuwanie"
-
-#: src/pacman/trans.c:335
-msgid "checking for file conflicts"
-msgstr "sprawdzanie konfliktów plików"
-
-#: src/pacman/util.c:259
-#, c-format
-msgid "None\n"
-msgstr "brak\n"
-
-#: src/pacman/util.c:311
-msgid "Remove:"
-msgstr "Usunąć:"
-
-#: src/pacman/util.c:319
-#, c-format
-msgid ""
-"\n"
-"Total Removed Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Całkowity rozmiar usunięć: %.2f MB\n"
-
-#: src/pacman/util.c:330
-#, c-format
-msgid ""
-"\n"
-"Total Package Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Całkowity rozmiar pakietów: %.2f MB\n"
-
-#: src/pacman/util.c:337
-#, c-format
-msgid "Total Installed Size: %.2f MB\n"
-msgstr "Całkowity rozmiar po instalacji: %.2f MB\n"
-
-#~ msgid "requires: %s"
-#~ msgstr "wymaga: %s"
diff --git a/src/pacman/po/pt_BR.po b/src/pacman/po/pt_BR.po
deleted file mode 100644
index e8f53785..00000000
--- a/src/pacman/po/pt_BR.po
+++ /dev/null
@@ -1,1109 +0,0 @@
-# translation of pt_BR.po to Português do Brasil
-# Brazilian Portuguese translations for Pacman package manager package.
-# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
-# This file is distributed under the same license as the Pacman package manager package.
-#
-# Douglas Soares de Andrade <douglas@archlinux-br.org>, 2007.
-# Hugo Doria <hugodoria@archlinux-br.org>, 2007.
-# Lincoln de Sousa <lincoln@archlinux-br.org>, 2007.
-# Leandro Inácio <leandro@archlinux-br.org>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: pt_BR\n"
-"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-04-28 04:02-0400\n"
-"PO-Revision-Date: 2007-03-22 13:52-0300\n"
-"Last-Translator: Douglas Soares de Andrade <douglas@archlinux-br.org>\n"
-"Language-Team: Archlinux-br <contato@archlinux-br.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: src/pacman/add.c:72 src/pacman/remove.c:82 src/pacman/sync.c:482
-#: src/pacman/sync.c:531
-#, c-format
-msgid ""
-" if you're sure a package manager is not already running,\n"
-" you can remove %s%s\n"
-msgstr ""
-" caso tenha certeza que nenhum gerenciador de pacotes está rodando,\n"
-" você pode remover %s%s\n"
-
-#: src/pacman/add.c:79
-msgid "loading package data... "
-msgstr "carregando informações do pacote... "
-
-#: src/pacman/add.c:83
-#, c-format
-msgid "failed to add target '%s' (%s)"
-msgstr "falha com o parametro'%s' (%s)"
-
-#: src/pacman/add.c:88 src/pacman/sync.c:196 src/pacman/trans.c:73
-#: src/pacman/trans.c:80 src/pacman/trans.c:91 src/pacman/trans.c:105
-#: src/pacman/trans.c:119 src/pacman/trans.c:131 src/pacman/trans.c:142
-msgid "done.\n"
-msgstr "concluído.\n"
-
-#: src/pacman/add.c:95 src/pacman/remove.c:101 src/pacman/sync.c:616
-#, c-format
-msgid "failed to prepare transaction (%s)\n"
-msgstr "falha ao preparar transação (%s)\n"
-
-#: src/pacman/add.c:104
-#, c-format
-msgid ":: %s: requires %s"
-msgstr ":: %s: requer %s"
-
-#: src/pacman/add.c:125 src/pacman/sync.c:643
-#, c-format
-msgid ":: %s: conflicts with %s"
-msgstr ":: %s: conflita com %s"
-
-#: src/pacman/add.c:134 src/pacman/sync.c:707
-#, c-format
-msgid "%s exists in both '%s' and '%s'\n"
-msgstr "%s existe em '%s' e em '%s'\n"
-
-#: src/pacman/add.c:140 src/pacman/sync.c:713
-#, c-format
-msgid "%s: %s exists in filesystem\n"
-msgstr "%s: %s existe no sistema de arquivos\n"
-
-#: src/pacman/add.c:146 src/pacman/sync.c:719 src/pacman/sync.c:725
-msgid ""
-"\n"
-"errors occurred, no packages were upgraded.\n"
-msgstr ""
-"\n"
-"ocorreram alguns erros, portanto, nenhum pacote foi atualizado.\n"
-
-#: src/pacman/add.c:156 src/pacman/sync.c:650
-#, c-format
-msgid ":: %.1f MB required, have %.1f MB"
-msgstr ":: %.1f MB requerido, possui %.1f MB"
-
-#: src/pacman/add.c:169 src/pacman/remove.c:141 src/pacman/sync.c:700
-#, c-format
-msgid "failed to commit transaction (%s)\n"
-msgstr "falha ao terminar a transação (%s)\n"
-
-#: src/pacman/add.c:179 src/pacman/remove.c:151 src/pacman/sync.c:524
-#: src/pacman/sync.c:741
-#, c-format
-msgid "failed to release transaction (%s)\n"
-msgstr "falha ao liberar a transação (%s)\n"
-
-#: src/pacman/log.c:63
-#, c-format
-msgid "debug"
-msgstr "depurar"
-
-#: src/pacman/log.c:66
-#, c-format
-msgid "error"
-msgstr "erro"
-
-#: src/pacman/log.c:69
-#, c-format
-msgid "warning"
-msgstr "aviso"
-
-#: src/pacman/log.c:75
-#, c-format
-msgid "function"
-msgstr "função"
-
-#: src/pacman/log.c:194
-msgid "Y"
-msgstr "S"
-
-#: src/pacman/log.c:194
-msgid "YES"
-msgstr "SIM"
-
-#: src/pacman/log.h:30
-msgid "error: "
-msgstr "erro: "
-
-#: src/pacman/log.h:34
-msgid "warning: "
-msgstr "aviso: "
-
-#: src/pacman/package.c:60
-msgid "Explicitly installed"
-msgstr "Explicitamente Instalado"
-
-#: src/pacman/package.c:63
-msgid "Installed as a dependency for another package"
-msgstr "Instalado como dependência de outro pacote"
-
-#: src/pacman/package.c:66 src/pacman/package.c:90
-msgid "Unknown"
-msgstr "Desconhecido"
-
-#: src/pacman/package.c:70 src/pacman/package.c:121
-msgid "Description : "
-msgstr "Descrição : "
-
-#: src/pacman/package.c:73 src/pacman/package.c:127
-#, c-format
-msgid "Name : %s\n"
-msgstr "Nome : %s\n"
-
-#: src/pacman/package.c:74 src/pacman/package.c:128
-#, c-format
-msgid "Version : %s\n"
-msgstr "Versão : %s\n"
-
-#: src/pacman/package.c:75
-#, c-format
-msgid "URL : %s\n"
-msgstr "URL : %s\n"
-
-#: src/pacman/package.c:76
-msgid "License :"
-msgstr "Licença :"
-
-#: src/pacman/package.c:77 src/pacman/package.c:129
-msgid "Groups :"
-msgstr "Grupos :"
-
-#: src/pacman/package.c:78 src/pacman/package.c:130
-msgid "Provides :"
-msgstr "Provê :"
-
-#: src/pacman/package.c:79 src/pacman/package.c:131
-msgid "Depends On :"
-msgstr "Depende de :"
-
-#: src/pacman/package.c:80 src/pacman/package.c:132
-msgid "Removes :"
-msgstr "Remove :"
-
-#: src/pacman/package.c:83
-msgid "Required By :"
-msgstr "Requerido Por :"
-
-#: src/pacman/package.c:85 src/pacman/package.c:133
-msgid "Conflicts With :"
-msgstr "Conflita Com :"
-
-#: src/pacman/package.c:86 src/pacman/package.c:136
-#, c-format
-msgid "Installed Size : %6.2f K\n"
-msgstr "Tamanho Instalado : %6.2f K\n"
-
-#: src/pacman/package.c:87
-#, c-format
-msgid "Packager : %s\n"
-msgstr "Empacotador : %s\n"
-
-#: src/pacman/package.c:88
-#, c-format
-msgid "Architecture : %s\n"
-msgstr "Arquitetura : %s\n"
-
-#: src/pacman/package.c:89
-#, c-format
-msgid "Build Date : %s %s\n"
-msgstr "Compilado em : %s %s\n"
-
-#: src/pacman/package.c:90
-#, c-format
-msgid "Build Type : %s\n"
-msgstr "Tipo da compilação : %s\n"
-
-#: src/pacman/package.c:92
-#, c-format
-msgid "Install Date : %s %s\n"
-msgstr "Data da Instalação : %s %s\n"
-
-#: src/pacman/package.c:93
-#, c-format
-msgid "Install Reason : %s\n"
-msgstr "Razão da instalação : %s\n"
-
-#: src/pacman/package.c:95
-#, c-format
-msgid "Install Script : %s\n"
-msgstr "Script de Instalação : %s\n"
-
-#: src/pacman/package.c:96
-msgid "Yes"
-msgstr "Sim"
-
-#: src/pacman/package.c:96
-msgid "No"
-msgstr "Não"
-
-#: src/pacman/package.c:126
-#, c-format
-msgid "Repository : %s\n"
-msgstr "Repositório : %s\n"
-
-#: src/pacman/package.c:134
-msgid "Replaces :"
-msgstr "Substitui :"
-
-#: src/pacman/package.c:135
-#, c-format
-msgid "Download Size : %6.2f K\n"
-msgstr "Tamanho do Download : %6.2f K\n"
-
-#: src/pacman/package.c:144
-#, c-format
-msgid "MD5 Sum : %s"
-msgstr "Soma MD5 : %s"
-
-#: src/pacman/package.c:147
-#, c-format
-msgid "SHA1 Sum : %s"
-msgstr "Soma SHA1 : %s"
-
-#: src/pacman/package.c:158
-#, c-format
-msgid "Backup Files:\n"
-msgstr "Arquivos de Backup:\n"
-
-#: src/pacman/package.c:180
-#, c-format
-msgid "error calculating checksums for %s\n"
-msgstr "erro ao calcular as somas de verificação para %s\n"
-
-#: src/pacman/package.c:193
-#, c-format
-msgid "MODIFIED\t%s\n"
-msgstr "MODIFICADO\t%s\n"
-
-#: src/pacman/package.c:195
-#, c-format
-msgid "Not Modified\t%s\n"
-msgstr "Não modificado\t%s\n"
-
-#: src/pacman/package.c:200
-#, c-format
-msgid "MISSING\t\t%s\n"
-msgstr "NÃO ENCONTRADO\t\t%s\n"
-
-#: src/pacman/package.c:206
-#, c-format
-msgid "(none)\n"
-msgstr "(Nenhum)\n"
-
-#: src/pacman/package.c:246
-#, c-format
-msgid "No changelog available for '%s'.\n"
-msgstr "changelog não disponível para '%s'.\n"
-
-#: src/pacman/pacman.c:90
-#, c-format
-msgid "usage: %s {-h --help}\n"
-msgstr "modo de usar: %s {-h --help}\n"
-
-#: src/pacman/pacman.c:91
-#, c-format
-msgid " %s {-V --version}\n"
-msgstr " %s {-V --version}\n"
-
-#: src/pacman/pacman.c:92
-#, c-format
-msgid " %s {-A --add} [options] <file>\n"
-msgstr " %s {-A --add} [opções] <arquivo>\n"
-
-#: src/pacman/pacman.c:93
-#, c-format
-msgid " %s {-F --freshen} [options] <file>\n"
-msgstr " %s {-F --freshen} [opções] <arquivo>\n"
-
-#: src/pacman/pacman.c:94
-#, c-format
-msgid " %s {-Q --query} [options] [package]\n"
-msgstr " %s {-Q --query} [opções] [pacote]\n"
-
-#: src/pacman/pacman.c:95
-#, c-format
-msgid " %s {-R --remove} [options] <package>\n"
-msgstr " %s {-R --remove} [opções] <pacote>\n"
-
-#: src/pacman/pacman.c:96
-#, c-format
-msgid " %s {-S --sync} [options] [package]\n"
-msgstr " %s {-S --sync} [opções] [pacote]\n"
-
-#: src/pacman/pacman.c:97
-#, c-format
-msgid " %s {-U --upgrade} [options] <file>\n"
-msgstr " %s {-U --upgrade} [opções] <arquivo>\n"
-
-#: src/pacman/pacman.c:98
-#, c-format
-msgid ""
-"\n"
-"use '%s --help' with other options for more syntax\n"
-msgstr ""
-"\n"
-"use '%s --help' com outras opções para mais sintaxes\n"
-
-#: src/pacman/pacman.c:101
-#, c-format
-msgid "usage: %s {-A --add} [options] <file>\n"
-msgstr "uso: %s {-A --add} [opções] <arquivo>\n"
-
-#: src/pacman/pacman.c:102 src/pacman/pacman.c:107 src/pacman/pacman.c:119
-#: src/pacman/pacman.c:124 src/pacman/pacman.c:138
-#, c-format
-msgid "options:\n"
-msgstr "opções:\n"
-
-#: src/pacman/pacman.c:103 src/pacman/pacman.c:109 src/pacman/pacman.c:120
-#: src/pacman/pacman.c:140
-#, c-format
-msgid " -d, --nodeps skip dependency checks\n"
-msgstr " -d, --nodeps ignora a verificação de dependências\n"
-
-#: src/pacman/pacman.c:104 src/pacman/pacman.c:121 src/pacman/pacman.c:142
-#, c-format
-msgid " -f, --force force install, overwrite conflicting files\n"
-msgstr ""
-" -f, --force forçar instalação, sobrescrever arquivos "
-"conflitantes\n"
-
-#: src/pacman/pacman.c:106
-#, c-format
-msgid "usage: %s {-R --remove} [options] <package>\n"
-msgstr "uso: %s {-R --remove} [opções] <pacote>\n"
-
-#: src/pacman/pacman.c:108
-#, c-format
-msgid ""
-" -c, --cascade remove packages and all packages that depend on them\n"
-msgstr " -c, --cascade remove pacotes e suas dependências\n"
-
-#: src/pacman/pacman.c:110
-#, c-format
-msgid ""
-" -k, --dbonly only remove database entry, do not remove files\n"
-msgstr ""
-" -k, --dbonly remove apenas a entrada na base de dados, mas não "
-"remove os arquivos\n"
-
-#: src/pacman/pacman.c:111
-#, c-format
-msgid " -n, --nosave remove configuration files as well\n"
-msgstr " -n, --nosave remove os arquivos de configuração\n"
-
-#: src/pacman/pacman.c:112
-#, c-format
-msgid ""
-" -s, --recursive remove dependencies also (that won't break packages)\n"
-msgstr ""
-" -s, --recursive remove também as dependências (aquelas que não vão "
-"quebrar outros pacotes)\n"
-
-#: src/pacman/pacman.c:115
-#, c-format
-msgid "usage: %s {-F --freshen} [options] <file>\n"
-msgstr "uso: %s {-F --freshen} [opções] <arquivo>\n"
-
-#: src/pacman/pacman.c:117
-#, c-format
-msgid "usage: %s {-U --upgrade} [options] <file>\n"
-msgstr "uso: %s {-U --upgrade} [opções] <arquivo>\n"
-
-#: src/pacman/pacman.c:123
-#, c-format
-msgid "usage: %s {-Q --query} [options] [package]\n"
-msgstr "usor: %s {-Q --query} [opções] [pacote]\n"
-
-#: src/pacman/pacman.c:125
-#, c-format
-msgid " -c, --changelog view the changelog of a package\n"
-msgstr " -c, --changelog visualiza o changelog de um pacote\n"
-
-#: src/pacman/pacman.c:126
-#, c-format
-msgid ""
-" -e, --orphans list all packages installed as dependencies but no "
-"longer\n"
-msgstr ""
-" -e, --orphans lista todos os pacotes instalados como "
-"dependências, mas que não são mais\n"
-
-#: src/pacman/pacman.c:127
-#, c-format
-msgid " required by any package\n"
-msgstr " requeridos por outros pacotes\n"
-
-#: src/pacman/pacman.c:128 src/pacman/pacman.c:143
-#, c-format
-msgid " -g, --groups view all members of a package group\n"
-msgstr ""
-" -g, --groups visualiza todos os membros de um grupos de pacotes\n"
-
-#: src/pacman/pacman.c:129 src/pacman/pacman.c:144
-#, c-format
-msgid " -i, --info view package information\n"
-msgstr " -i, --info visualiza informações do pacote\n"
-
-#: src/pacman/pacman.c:130
-#, c-format
-msgid " -l, --list list the contents of the queried package\n"
-msgstr " -l, --list lista o conteúdo do pacote pesquisado\n"
-
-#: src/pacman/pacman.c:131
-#, c-format
-msgid ""
-" -m, --foreign list installed packages not found in sync db(s)\n"
-msgstr ""
-" -m, --foreign lista todos os pacotes que não foram encontrados na"
-"(s) base(s) de dados de pacotes\n"
-
-#: src/pacman/pacman.c:132
-#, c-format
-msgid " -o, --owns <file> query the package that owns <file>\n"
-msgstr " -o, --owns <arquivo> pesquisa o pacote que contém <arquivo>\n"
-
-#: src/pacman/pacman.c:133
-#, c-format
-msgid " -p, --file <package> query a package file instead of the database\n"
-msgstr ""
-" -p, --file <pacote> pesquisa o arquivo de pacote <pacote> ao invés da "
-"base de dados\n"
-
-#: src/pacman/pacman.c:134
-#, c-format
-msgid ""
-" -s, --search <regex> search locally-installed packages for matching "
-"strings\n"
-msgstr ""
-" -s, --search <regex> busca em arquivos localmente instalados por textos "
-"coincidentes\n"
-
-#: src/pacman/pacman.c:135
-#, c-format
-msgid " -u, --upgrades list all packages that can be upgraded\n"
-msgstr ""
-" -u, --upgrades lista todos os pacotes que podem ser atualizados\n"
-
-#: src/pacman/pacman.c:137
-#, c-format
-msgid "usage: %s {-S --sync} [options] [package]\n"
-msgstr "uso: %s {-S --sync} [opções] [pacote]\n"
-
-#: src/pacman/pacman.c:139
-#, c-format
-msgid ""
-" -c, --clean remove old packages from cache directory (-cc for "
-"all)\n"
-msgstr ""
-" -c, --clean remove pacotes antigos do diretório de cache (use -"
-"cc para remover todos os pacotes)\n"
-
-#: src/pacman/pacman.c:141
-#, c-format
-msgid " -e, --dependsonly install dependencies only\n"
-msgstr " -e, --dependsonly instala apenas as dependências \n"
-
-#: src/pacman/pacman.c:145
-#, c-format
-msgid " -l, --list <repo> view a list of packages in a repo\n"
-msgstr ""
-" -l, --list <repo> visualizar uma lista dos pacotes em um repositório\n"
-
-#: src/pacman/pacman.c:146
-#, c-format
-msgid ""
-" -p, --print-uris print out URIs for given packages and their "
-"dependencies\n"
-msgstr ""
-" -p, --print-uris imprime as URIs dos pacotes e suas dependências\n"
-
-#: src/pacman/pacman.c:147
-#, c-format
-msgid ""
-" -s, --search <regex> search remote repositories for matching strings\n"
-msgstr ""
-" -s, --search <regex> procura em repositórios remotos por textos "
-"coincidentes\n"
-
-#: src/pacman/pacman.c:148
-#, c-format
-msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
-msgstr ""
-" -u, --sysupgrade atualiza todos os pacotes que estão desatualizados "
-"no sistema\n"
-
-#: src/pacman/pacman.c:149
-#, c-format
-msgid ""
-" -w, --downloadonly download packages but do not install/upgrade "
-"anything\n"
-msgstr ""
-" -w, --downloadonly baixa os pacotes mas não instala/atualiza nenhum "
-"pacote\n"
-
-#: src/pacman/pacman.c:150
-#, c-format
-msgid ""
-" -y, --refresh download fresh package databases from the server\n"
-msgstr " -y, --refresh atualizar a base de dados de pacotes\n"
-
-#: src/pacman/pacman.c:151
-#, c-format
-msgid ""
-" --ignore <pkg> ignore a package upgrade (can be used more than "
-"once)\n"
-msgstr ""
-" --ignore <pkg> ignora a atualização de um pacote (pode ser usado "
-"mais de uma vez)\n"
-
-#: src/pacman/pacman.c:153
-#, c-format
-msgid " --config <path> set an alternate configuration file\n"
-msgstr ""
-" --config <caminho> define um arquivo de configuração alternativo\n"
-
-#: src/pacman/pacman.c:154
-#, c-format
-msgid " --noconfirm do not ask for any confirmation\n"
-msgstr " --noconfirm não pede nenhuma confirmação\n"
-
-#: src/pacman/pacman.c:155
-#, c-format
-msgid ""
-" --ask <number> pre-specify answers for questions (see manpage)\n"
-msgstr ""
-" --ask <número> pré-especificar respostas para as perguntas (veja a "
-"manpage)\n"
-
-#: src/pacman/pacman.c:156
-#, c-format
-msgid ""
-" --noprogressbar do not show a progress bar when downloading files\n"
-msgstr ""
-" --noprogressbar não mostra a barra de progresso enquanto baixa os "
-"arquivos\n"
-
-#: src/pacman/pacman.c:157
-#, c-format
-msgid ""
-" --noscriptlet do not execute the install scriptlet if there is any\n"
-msgstr ""
-" --noscriptlet não executar o scriptlet de instalação se o mesmo "
-"existir\n"
-
-#: src/pacman/pacman.c:158
-#, c-format
-msgid " -v, --verbose be verbose\n"
-msgstr " -v, --verbose informações adicionais\n"
-
-#: src/pacman/pacman.c:159
-#, c-format
-msgid " -r, --root <path> set an alternate installation root\n"
-msgstr ""
-" -r, --root <caminho> define um diretório de instalação alternativo\n"
-
-#: src/pacman/pacman.c:160
-#, c-format
-msgid " -b, --dbpath <path> set an alternate database location\n"
-msgstr ""
-" -b, --dbpath <caminho> define uma localização diferente para a base de "
-"dados\n"
-
-#: src/pacman/pacman.c:161
-#, c-format
-msgid " --cachedir <dir> set an alternate package cache location\n"
-msgstr " --cachedir <dir> define um diretório de cache alternativo\n"
-
-#: src/pacman/pacman.c:174
-#, c-format
-msgid " This program may be freely redistributed under\n"
-msgstr ""
-" Este programa pode ser distribuído livremente sob\n"
-
-#: src/pacman/pacman.c:175
-#, c-format
-msgid " the terms of the GNU General Public License\n"
-msgstr ""
-" os termos da Licença GPL - General Public License\n"
-
-#: src/pacman/pacman.c:300
-#, c-format
-msgid "'%s' is not a valid debug level"
-msgstr "'%s' não é um nível de depuração válido"
-
-#: src/pacman/pacman.c:315
-#, c-format
-msgid "'%s' is not a valid cache directory\n"
-msgstr "'%s' não é um diretório de cache válido\n"
-
-#: src/pacman/pacman.c:333
-#, c-format
-msgid "'%s' is not a valid db path\n"
-msgstr "'%s' não é um caminho de base de dados válido\n"
-
-#: src/pacman/pacman.c:363
-#, c-format
-msgid "'%s' is not a valid root path\n"
-msgstr "'%s' não é uma caminho válido\n"
-
-#: src/pacman/pacman.c:390
-msgid "only one operation may be used at a time\n"
-msgstr "só uma operação pode ser usada de cada vez\n"
-
-#: src/pacman/pacman.c:436
-msgid "warning: current locale is invalid; using default \"C\" locale"
-msgstr "aviso: o locale atual é inválido; usando o locale padrão \"C\""
-
-#: src/pacman/pacman.c:456
-#, c-format
-msgid "failed to initialize alpm library (%s)\n"
-msgstr "falha ao iniciar biblioteca alpm (%s)\n"
-
-#: src/pacman/pacman.c:489
-msgid "you cannot perform this operation unless you are root.\n"
-msgstr "você não pode realizar esta operação a menos que você seja root\n"
-
-#: src/pacman/pacman.c:505
-#, c-format
-msgid "failed to parse config (%s)\n"
-msgstr "falha ao interpretar configuração (%s)\n"
-
-#: src/pacman/pacman.c:516
-msgid "Targets :"
-msgstr "Pacotes :"
-
-#: src/pacman/pacman.c:522
-#, c-format
-msgid "could not register 'local' database (%s)\n"
-msgstr "não foi possível registar a base de dados local (%s)\n"
-
-#: src/pacman/pacman.c:529
-msgid "no targets specified (use -h for help)\n"
-msgstr "nenhum arquivo definido (use -h para obter ajuda)\n"
-
-#: src/pacman/pacman.c:542
-msgid "no operation specified (use -h for help)\n"
-msgstr "nenhuma operação definida (use -h para obter ajuda)\n"
-
-#: src/pacman/query.c:90
-msgid "no file was specified for --owns\n"
-msgstr "nenhum arquivo especificado para --owns\n"
-
-#: src/pacman/query.c:95
-#, c-format
-msgid "failed to read file '%s': %s"
-msgstr "falha ao ler o arquivo '%s' %s"
-
-#: src/pacman/query.c:100
-msgid "cannot determine ownership of a directory"
-msgstr "não é possível determinar o dono de um diretório"
-
-#: src/pacman/query.c:105
-#, c-format
-msgid "cannot determine real path for '%s': %s"
-msgstr "não é possível determinar o caminho de '%s': %s"
-
-#: src/pacman/query.c:119
-#, c-format
-msgid "%s is owned by %s %s\n"
-msgstr "%s pertence a %s %s\n"
-
-#: src/pacman/query.c:127
-#, c-format
-msgid "No package owns %s\n"
-msgstr "Nenhum pacote possui %s\n"
-
-#: src/pacman/query.c:170 src/pacman/sync.c:453
-msgid "no usable package repositories configured.\n"
-msgstr "nenhum repositório de pacotes configurado.\n"
-
-#: src/pacman/query.c:176
-msgid "Checking for package upgrades..."
-msgstr "Buscando atualizações de pacotes..."
-
-#: src/pacman/query.c:183
-msgid "no upgrades found"
-msgstr "nenhuma atualização encontrada"
-
-#: src/pacman/query.c:221
-#, c-format
-msgid "group \"%s\" was not found\n"
-msgstr "grupo \"%s\" não encontrado\n"
-
-#: src/pacman/query.c:232
-msgid "no package file was specified for --file\n"
-msgstr "nenhum pacote foi especificado para a opção --file\n"
-
-#: src/pacman/query.c:236
-#, c-format
-msgid "failed to load package '%s' (%s)\n"
-msgstr "falha ao carregar o pacote '%s' (%s)\n"
-
-#: src/pacman/query.c:273 src/pacman/query.c:305
-#, c-format
-msgid "package \"%s\" not found\n"
-msgstr "pacote \"%s\" não encontrado\n"
-
-#: src/pacman/remove.c:61 src/pacman/sync.c:568
-#, c-format
-msgid ":: group %s:\n"
-msgstr ":: grupo %s:\n"
-
-#: src/pacman/remove.c:63
-msgid " Remove whole content? [Y/n] "
-msgstr " Remover todo o conteúdo? [S/n] "
-
-#: src/pacman/remove.c:67
-#, c-format
-msgid ":: Remove %s from group %s? [Y/n] "
-msgstr ":: Remover %s do grupo %s? [S/n] "
-
-#: src/pacman/remove.c:80 src/pacman/sync.c:480 src/pacman/sync.c:529
-#, c-format
-msgid "failed to init transaction (%s)\n"
-msgstr "falha ao iniciar transação (%s)\n"
-
-#: src/pacman/remove.c:92
-#, c-format
-msgid "failed to add target '%s' (%s)\n"
-msgstr "falha com o parametro '%s' (%s)\n"
-
-#: src/pacman/remove.c:106
-#, c-format
-msgid ":: %s is required by %s\n"
-msgstr ":: %s é necessário para %s\n"
-
-#: src/pacman/remove.c:128 src/pacman/util.c:324
-msgid "Targets:"
-msgstr "Pacotes:"
-
-#: src/pacman/remove.c:131
-msgid ""
-"\n"
-"Do you want to remove these packages? [Y/n] "
-msgstr ""
-"\n"
-"Você deseja remover estes pacotes? [S/n] "
-
-#: src/pacman/sync.c:115
-msgid "Do you want to remove old packages from cache? [Y/n] "
-msgstr "Deseja remover os pacotes antigos do cache? [S/n] "
-
-#: src/pacman/sync.c:117
-msgid "removing old packages from cache... "
-msgstr "removendo pacotes antigos do cache... "
-
-#: src/pacman/sync.c:120
-msgid "could not access cache directory\n"
-msgstr "não foi possível acessar o diretório de cache\n"
-
-#: src/pacman/sync.c:181
-msgid "Do you want to remove all packages from cache? [Y/n] "
-msgstr "Você deseja remover todos os pacotes do diretório de cache? [S/n] "
-
-#: src/pacman/sync.c:183
-msgid "removing all packages from cache... "
-msgstr "removendo todos os pacotes do diretório de cache... "
-
-#: src/pacman/sync.c:186
-msgid "could not remove cache directory\n"
-msgstr "não foi possível remover o diretório de cache\n"
-
-#: src/pacman/sync.c:191
-msgid "could not create new cache directory\n"
-msgstr "não foi possível criar o novo diretório de cache\n"
-
-#: src/pacman/sync.c:218
-#, c-format
-msgid "failed to synchronize %s: %s\n"
-msgstr "falha ao sincronizar %s: %s\n"
-
-#: src/pacman/sync.c:220
-#, c-format
-msgid "failed to update %s (%s)\n"
-msgstr "falha ao atualizar %s (%s)\n"
-
-#: src/pacman/sync.c:223
-#, c-format
-msgid " %s is up to date\n"
-msgstr " %s está atualizado\n"
-
-#: src/pacman/sync.c:345
-#, c-format
-msgid "repository '%s' does not exist\n"
-msgstr "repositório '%s' não existe\n"
-
-#: src/pacman/sync.c:361
-#, c-format
-msgid "package '%s' was not found in repository '%s'\n"
-msgstr "pacote '%s' não foi encontrado no repositório '%s'\n"
-
-#: src/pacman/sync.c:381
-#, c-format
-msgid "package '%s' was not found\n"
-msgstr "pacote '%s' não foi encontrado.\n"
-
-#: src/pacman/sync.c:418
-#, c-format
-msgid "repository \"%s\" was not found.\n"
-msgstr "repositório \"%s\" não foi encontrado.\n"
-
-#: src/pacman/sync.c:490
-msgid ":: Synchronizing package databases...\n"
-msgstr ":: Sincronizando a base de dados de pacotes...\n"
-
-#: src/pacman/sync.c:491
-msgid "synchronizing package lists"
-msgstr "sincronizando as listas de pacotes"
-
-#: src/pacman/sync.c:493
-msgid "failed to synchronize any databases"
-msgstr "falha ao sincronizar algumas bases de dados"
-
-#: src/pacman/sync.c:499
-msgid ":: Starting full system upgrade...\n"
-msgstr ":: Iniciando atualização do sistema...\n"
-
-#: src/pacman/sync.c:500
-msgid "starting full system upgrade"
-msgstr "iniciando atualização de todo o sistema"
-
-#: src/pacman/sync.c:518
-msgid ""
-"\n"
-":: pacman has detected a newer version of the \"pacman\" package.\n"
-msgstr ""
-"\n"
-":: pacman detectou uma nova versão do pacote \"pacman\".\n"
-
-#: src/pacman/sync.c:519
-msgid ":: It is recommended that you allow pacman to upgrade itself\n"
-msgstr ":: É recomendado que você permita que o pacman se atualize\n"
-
-#: src/pacman/sync.c:520
-msgid ":: first, then you can re-run the operation with the newer version.\n"
-msgstr ""
-":: primeiro, em seguida você pode executar a operação novamente com a nova "
-"versão.\n"
-
-#: src/pacman/sync.c:522
-msgid ":: Upgrade pacman first? [Y/n] "
-msgstr ":: Atualizar o pacman primeiro? [S/n] "
-
-#: src/pacman/sync.c:537
-#, c-format
-msgid "pacman: %s\n"
-msgstr "pacman: %s\n"
-
-#: src/pacman/sync.c:572
-msgid ":: Install whole content? [Y/n] "
-msgstr ":: Instalar todo o conteúdo? [S/n] "
-
-#: src/pacman/sync.c:579
-#, c-format
-msgid ":: Install %s from group %s? [Y/n] "
-msgstr ":: Instalar %s do grupo %s? [S/n] "
-
-#: src/pacman/sync.c:603
-#, c-format
-msgid "'%s': not found in sync db\n"
-msgstr "'%s': não foi encontrado na base de dados de pacotes\n"
-
-#: src/pacman/sync.c:621
-msgid "requires"
-msgstr "requer"
-
-#: src/pacman/sync.c:663
-msgid " local database is up to date\n"
-msgstr "Base de dados de pacotes está atualizada.\n"
-
-#: src/pacman/sync.c:672
-msgid ""
-"\n"
-"Beginning download...\n"
-msgstr ""
-"\n"
-"Iniciando download...\n"
-
-#: src/pacman/sync.c:676
-msgid "Proceed with download? [Y/n] "
-msgstr "Continuar o download? [S/n] "
-
-#: src/pacman/sync.c:684
-msgid ""
-"\n"
-"Beginning upgrade process...\n"
-msgstr ""
-"\n"
-"Iniciando processo de atualização...\n"
-
-#: src/pacman/sync.c:688
-msgid "Proceed with installation? [Y/n] "
-msgstr "Continuar a instalação? [S/n] "
-
-#: src/pacman/trans.c:55
-msgid "checking dependencies... "
-msgstr "verificando dependências... "
-
-#: src/pacman/trans.c:59
-msgid "checking for file conflicts... "
-msgstr "verificando conflitos de arquivos... "
-
-#: src/pacman/trans.c:63
-msgid "cleaning up... "
-msgstr "finalizando..."
-
-#: src/pacman/trans.c:66
-msgid "resolving dependencies... "
-msgstr "resolvendo dependências... "
-
-#: src/pacman/trans.c:69
-msgid "looking for inter-conflicts... "
-msgstr "procurando por conflitos internos... "
-
-#: src/pacman/trans.c:86
-#, c-format
-msgid "installing %s... "
-msgstr "instalando %s... "
-
-#: src/pacman/trans.c:93
-#, c-format
-msgid "installed %s (%s)"
-msgstr "%s instalado (%s)"
-
-#: src/pacman/trans.c:100
-#, c-format
-msgid "removing %s... "
-msgstr "removendo %s... "
-
-#: src/pacman/trans.c:107
-#, c-format
-msgid "removed %s (%s)"
-msgstr "%s removido (%s)"
-
-#: src/pacman/trans.c:114
-#, c-format
-msgid "upgrading %s... "
-msgstr "atualizando %s... "
-
-#: src/pacman/trans.c:121
-#, c-format
-msgid "upgraded %s (%s -> %s)"
-msgstr "%s atualizado (%s -> %s)"
-
-#: src/pacman/trans.c:128
-msgid "checking package integrity... "
-msgstr "verificando a integridade do pacote... "
-
-#: src/pacman/trans.c:144
-msgid "failed.\n"
-msgstr "falhou.\n"
-
-#: src/pacman/trans.c:151
-#, c-format
-msgid ":: Retrieving packages from %s...\n"
-msgstr ":: Obtendo pacotes do repositório %s...\n"
-
-#: src/pacman/trans.c:172
-#, c-format
-msgid ":: %1$s requires %2$s from IgnorePkg. Install %2$s? [Y/n] "
-msgstr ""
-":: %1$s requer %2$s, mas ele está em IgnorePkg. Instalar %2$s assim mesmo? "
-"[S/n] "
-
-#: src/pacman/trans.c:177
-#, c-format
-msgid ":: %s is in IgnorePkg. Install anyway? [Y/n] "
-msgstr ""
-"::O pacote %s está na lista de pacotes ignorados (IgnorePkg). Instalar assim "
-"mesmo? [S/n] "
-
-#: src/pacman/trans.c:190
-#, c-format
-msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
-msgstr ":: %s é designado como um HoldPkg Remover assim mesmo? [S/n] "
-
-#: src/pacman/trans.c:203
-#, c-format
-msgid ":: Replace %s with %s/%s? [Y/n] "
-msgstr ":: Substituir %s com %s/%s? [S/n] "
-
-#: src/pacman/trans.c:218
-#, c-format
-msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
-msgstr ":: %s conflita com %s. Remover %s? [S/n] "
-
-#: src/pacman/trans.c:234
-#, c-format
-msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
-msgstr ""
-":: %s-%s: a versão local é mais recente. Deseja atualizar mesmo assim? [S/n] "
-
-#: src/pacman/trans.c:252
-#, c-format
-msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
-msgstr ""
-":: %s-%s: a versão local está atualizada. Deseja atualizar mesmo assim? [S/"
-"n] "
-
-#: src/pacman/trans.c:270
-#, c-format
-msgid ":: Archive %s is corrupted. Do you want to delete it? [Y/n] "
-msgstr ":: Arquivo %s está corrompido. Você gostaria de apagá-lo? [S/n] "
-
-#: src/pacman/trans.c:326
-msgid "installing"
-msgstr "instalando"
-
-#: src/pacman/trans.c:329
-msgid "upgrading"
-msgstr "atualizando"
-
-#: src/pacman/trans.c:332
-msgid "removing"
-msgstr "removendo"
-
-#: src/pacman/trans.c:335
-msgid "checking for file conflicts"
-msgstr "verificando conflitos de arquivo"
-
-#: src/pacman/util.c:259
-#, c-format
-msgid "None\n"
-msgstr "Nenhum\n"
-
-#: src/pacman/util.c:311
-msgid "Remove:"
-msgstr "Remover:"
-
-#: src/pacman/util.c:319
-#, c-format
-msgid ""
-"\n"
-"Total Removed Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Tamanho total dos pacotes a serem removidos: %.2f MB\n"
-
-#: src/pacman/util.c:330
-#, c-format
-msgid ""
-"\n"
-"Total Package Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Tamanho total dos pacotes a serem baixados: %.2f MB\n"
-
-#: src/pacman/util.c:337
-#, c-format
-msgid "Total Installed Size: %.2f MB\n"
-msgstr "Tamanho total da instalação: %.2f MB\n"
-
-#~ msgid "requires: %s"
-#~ msgstr "requer: %s"
-
-#~ msgid "'%s': %s\n"
-#~ msgstr "'%s': %s\n"
diff --git a/src/pacman/po/ru_RU.po b/src/pacman/po/ru_RU.po
deleted file mode 100644
index c25fef02..00000000
--- a/src/pacman/po/ru_RU.po
+++ /dev/null
@@ -1,1090 +0,0 @@
-# Pacman Russian Translation
-# Copyright (C) 2007 Judd Vinet <jvinet@zeroflux.org>
-# This file is distributed under the same license as the Pacman package.
-# Vladimir Bayrakovskiy <4rayven@gmail.com>, 2007
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Pacman package manager 3.0.0\n"
-"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
-"POT-Creation-Date: 2007-04-28 04:02-0400\n"
-"PO-Revision-Date: 2007-03-07 11:45-0500\n"
-"Last-Translator: Vladimir Bayrakovskiy <4rayven@gmail.com>\n"
-"Language-Team: Russian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: src/pacman/add.c:72 src/pacman/remove.c:82 src/pacman/sync.c:482
-#: src/pacman/sync.c:531
-#, c-format
-msgid ""
-" if you're sure a package manager is not already running,\n"
-" you can remove %s%s\n"
-msgstr ""
-" еÑли Ð’Ñ‹ уверены, что pacman уже не запущен, можете\n"
-" удалить %s%s\n"
-
-#: src/pacman/add.c:79
-msgid "loading package data... "
-msgstr "чтение информации о пакете... "
-
-#: src/pacman/add.c:83
-#, c-format
-msgid "failed to add target '%s' (%s)"
-msgstr "не удалоÑÑŒ добавить цель '%s' (%s)"
-
-#: src/pacman/add.c:88 src/pacman/sync.c:196 src/pacman/trans.c:73
-#: src/pacman/trans.c:80 src/pacman/trans.c:91 src/pacman/trans.c:105
-#: src/pacman/trans.c:119 src/pacman/trans.c:131 src/pacman/trans.c:142
-msgid "done.\n"
-msgstr "готово.\n"
-
-#: src/pacman/add.c:95 src/pacman/remove.c:101 src/pacman/sync.c:616
-#, c-format
-msgid "failed to prepare transaction (%s)\n"
-msgstr "не удалоÑÑŒ подготовить операцию (%s)\n"
-
-#: src/pacman/add.c:104
-#, c-format
-msgid ":: %s: requires %s"
-msgstr ":: %s: требует %s"
-
-#: src/pacman/add.c:125 src/pacman/sync.c:643
-#, c-format
-msgid ":: %s: conflicts with %s"
-msgstr ":: %s: конфликтует Ñ %s"
-
-#: src/pacman/add.c:134 src/pacman/sync.c:707
-#, c-format
-msgid "%s exists in both '%s' and '%s'\n"
-msgstr "%s ÑодержитÑÑ Ð² '%s' и в '%s'\n"
-
-#: src/pacman/add.c:140 src/pacman/sync.c:713
-#, c-format
-msgid "%s: %s exists in filesystem\n"
-msgstr "%s: %s уже еÑÑ‚ÑŒ на диÑке\n"
-
-#: src/pacman/add.c:146 src/pacman/sync.c:719 src/pacman/sync.c:725
-msgid ""
-"\n"
-"errors occurred, no packages were upgraded.\n"
-msgstr ""
-"\n"
-"произошли ошибки, пакеты не были обновлены.\n"
-
-#: src/pacman/add.c:156 src/pacman/sync.c:650
-#, c-format
-msgid ":: %.1f MB required, have %.1f MB"
-msgstr ":: требуетÑÑ %.1f MB, доÑтупно %.1f MB"
-
-#: src/pacman/add.c:169 src/pacman/remove.c:141 src/pacman/sync.c:700
-#, c-format
-msgid "failed to commit transaction (%s)\n"
-msgstr "не удалоÑÑŒ завершить операцию (%s)\n"
-
-#: src/pacman/add.c:179 src/pacman/remove.c:151 src/pacman/sync.c:524
-#: src/pacman/sync.c:741
-#, c-format
-msgid "failed to release transaction (%s)\n"
-msgstr "не удалоÑÑŒ продолжить операцию (%s)\n"
-
-#: src/pacman/log.c:63
-#, c-format
-msgid "debug"
-msgstr "отладка"
-
-#: src/pacman/log.c:66
-#, c-format
-msgid "error"
-msgstr "ошибка"
-
-#: src/pacman/log.c:69
-#, c-format
-msgid "warning"
-msgstr "предупреждение"
-
-#: src/pacman/log.c:75
-#, c-format
-msgid "function"
-msgstr "функциÑ"
-
-#: src/pacman/log.c:194
-msgid "Y"
-msgstr "Y"
-
-#: src/pacman/log.c:194
-msgid "YES"
-msgstr "YES"
-
-#: src/pacman/log.h:30
-msgid "error: "
-msgstr "ошибка: "
-
-#: src/pacman/log.h:34
-msgid "warning: "
-msgstr "предупреждение: "
-
-#: src/pacman/package.c:60
-msgid "Explicitly installed"
-msgstr "Явно уÑтановлен"
-
-#: src/pacman/package.c:63
-msgid "Installed as a dependency for another package"
-msgstr "УÑтановлен как завиÑимоÑÑ‚ÑŒ другого пакета"
-
-#: src/pacman/package.c:66 src/pacman/package.c:90
-msgid "Unknown"
-msgstr "ÐеизвеÑтно"
-
-#: src/pacman/package.c:70 src/pacman/package.c:121
-msgid "Description : "
-msgstr "ОпиÑание : "
-
-#: src/pacman/package.c:73 src/pacman/package.c:127
-#, c-format
-msgid "Name : %s\n"
-msgstr "Ðазвание : %s\n"
-
-#: src/pacman/package.c:74 src/pacman/package.c:128
-#, c-format
-msgid "Version : %s\n"
-msgstr "ВерÑÐ¸Ñ : %s\n"
-
-#: src/pacman/package.c:75
-#, c-format
-msgid "URL : %s\n"
-msgstr "URL : %s\n"
-
-#: src/pacman/package.c:76
-msgid "License :"
-msgstr "Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ :"
-
-#: src/pacman/package.c:77 src/pacman/package.c:129
-msgid "Groups :"
-msgstr "Группы :"
-
-#: src/pacman/package.c:78 src/pacman/package.c:130
-msgid "Provides :"
-msgstr "ПредоÑтавлÑет :"
-
-#: src/pacman/package.c:79 src/pacman/package.c:131
-msgid "Depends On :"
-msgstr "ЗавиÑит от :"
-
-#: src/pacman/package.c:80 src/pacman/package.c:132
-msgid "Removes :"
-msgstr "УдалÑет :"
-
-#: src/pacman/package.c:83
-msgid "Required By :"
-msgstr "ТребуетÑÑ Ð¿Ð°ÐºÐµÑ‚Ð°Ð¼Ð¸ :"
-
-#: src/pacman/package.c:85 src/pacman/package.c:133
-msgid "Conflicts With :"
-msgstr "Конфликтует Ñ :"
-
-#: src/pacman/package.c:86 src/pacman/package.c:136
-#, c-format
-msgid "Installed Size : %6.2f K\n"
-msgstr "Размер уÑтановленного : %6.2f K\n"
-
-#: src/pacman/package.c:87
-#, c-format
-msgid "Packager : %s\n"
-msgstr "Сборщик : %s\n"
-
-#: src/pacman/package.c:88
-#, c-format
-msgid "Architecture : %s\n"
-msgstr "Ðрхитектура : %s\n"
-
-#: src/pacman/package.c:89
-#, c-format
-msgid "Build Date : %s %s\n"
-msgstr "Дата Ñборки : %s %s\n"
-
-#: src/pacman/package.c:90
-#, c-format
-msgid "Build Type : %s\n"
-msgstr "Тип Ñборки : %s\n"
-
-#: src/pacman/package.c:92
-#, c-format
-msgid "Install Date : %s %s\n"
-msgstr "Дата уÑтановки : %s %s\n"
-
-#: src/pacman/package.c:93
-#, c-format
-msgid "Install Reason : %s\n"
-msgstr "Причина уÑтановки : %s\n"
-
-#: src/pacman/package.c:95
-#, c-format
-msgid "Install Script : %s\n"
-msgstr "Скрипт при уÑтановке : %s\n"
-
-#: src/pacman/package.c:96
-msgid "Yes"
-msgstr "Yes"
-
-#: src/pacman/package.c:96
-msgid "No"
-msgstr "No"
-
-#: src/pacman/package.c:126
-#, c-format
-msgid "Repository : %s\n"
-msgstr "Репозиторий : %s\n"
-
-#: src/pacman/package.c:134
-msgid "Replaces :"
-msgstr "ЗаменÑет :"
-
-#: src/pacman/package.c:135
-#, c-format
-msgid "Download Size : %6.2f K\n"
-msgstr "Размер при закачке : %6.2f K\n"
-
-#: src/pacman/package.c:144
-#, c-format
-msgid "MD5 Sum : %s"
-msgstr "Сумма MD5 : %s"
-
-#: src/pacman/package.c:147
-#, c-format
-msgid "SHA1 Sum : %s"
-msgstr "Сумма SHA1 : %s"
-
-#: src/pacman/package.c:158
-#, c-format
-msgid "Backup Files:\n"
-msgstr "Создаёт резервные копии файлов:\n"
-
-#: src/pacman/package.c:180
-#, c-format
-msgid "error calculating checksums for %s\n"
-msgstr "ошибка при вычиÑлении контрольной Ñуммы Ð´Ð»Ñ %s\n"
-
-#: src/pacman/package.c:193
-#, c-format
-msgid "MODIFIED\t%s\n"
-msgstr "ИЗМЕÐÐÐ\t%s\n"
-
-#: src/pacman/package.c:195
-#, c-format
-msgid "Not Modified\t%s\n"
-msgstr "Ðе Изменён\t%s\n"
-
-#: src/pacman/package.c:200
-#, c-format
-msgid "MISSING\t\t%s\n"
-msgstr "ÐЕ ÐÐЙДЕÐ\t\t%s\n"
-
-#: src/pacman/package.c:206
-#, c-format
-msgid "(none)\n"
-msgstr "(пуÑто)\n"
-
-#: src/pacman/package.c:246
-#, c-format
-msgid "No changelog available for '%s'.\n"
-msgstr "СпиÑок изменений недоÑтупен Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° '%s'.\n"
-
-#: src/pacman/pacman.c:90
-#, c-format
-msgid "usage: %s {-h --help}\n"
-msgstr "иÑпользование: %s {-h --help}\n"
-
-#: src/pacman/pacman.c:91
-#, c-format
-msgid " %s {-V --version}\n"
-msgstr " %s {-V --version}\n"
-
-#: src/pacman/pacman.c:92
-#, c-format
-msgid " %s {-A --add} [options] <file>\n"
-msgstr " %s {-A --add} [параметры] <файл>\n"
-
-#: src/pacman/pacman.c:93
-#, c-format
-msgid " %s {-F --freshen} [options] <file>\n"
-msgstr " %s {-F --freshen} [параметры] <файл>\n"
-
-#: src/pacman/pacman.c:94
-#, c-format
-msgid " %s {-Q --query} [options] [package]\n"
-msgstr " %s {-Q --query} [параметры] [пакет]\n"
-
-#: src/pacman/pacman.c:95
-#, c-format
-msgid " %s {-R --remove} [options] <package>\n"
-msgstr " %s {-R --remove} [параметры] <пакет>\n"
-
-#: src/pacman/pacman.c:96
-#, c-format
-msgid " %s {-S --sync} [options] [package]\n"
-msgstr " %s {-S --sync} [параметры] [пакет]\n"
-
-#: src/pacman/pacman.c:97
-#, c-format
-msgid " %s {-U --upgrade} [options] <file>\n"
-msgstr " %s {-U --upgrade} [параметры] <файл>\n"
-
-#: src/pacman/pacman.c:98
-#, c-format
-msgid ""
-"\n"
-"use '%s --help' with other options for more syntax\n"
-msgstr ""
-"\n"
-"иÑпользуйте '%s --help' вмеÑте Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ опциÑми Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подробной "
-"информации\n"
-
-#: src/pacman/pacman.c:101
-#, c-format
-msgid "usage: %s {-A --add} [options] <file>\n"
-msgstr "иÑпользование: %s {-A --add} [параметры] <файл>\n"
-
-#: src/pacman/pacman.c:102 src/pacman/pacman.c:107 src/pacman/pacman.c:119
-#: src/pacman/pacman.c:124 src/pacman/pacman.c:138
-#, c-format
-msgid "options:\n"
-msgstr "параметры:\n"
-
-#: src/pacman/pacman.c:103 src/pacman/pacman.c:109 src/pacman/pacman.c:120
-#: src/pacman/pacman.c:140
-#, c-format
-msgid " -d, --nodeps skip dependency checks\n"
-msgstr " -d, --nodeps не проверÑÑ‚ÑŒ завиÑимоÑти\n"
-
-#: src/pacman/pacman.c:104 src/pacman/pacman.c:121 src/pacman/pacman.c:142
-#, c-format
-msgid " -f, --force force install, overwrite conflicting files\n"
-msgstr ""
-" -f, --force Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÑƒÑтановка, перезапиÑывать "
-"конфликтующие файлы\n"
-
-#: src/pacman/pacman.c:106
-#, c-format
-msgid "usage: %s {-R --remove} [options] <package>\n"
-msgstr "иÑпользование: %s {-R --remove} [параметры] <пакет>\n"
-
-#: src/pacman/pacman.c:108
-#, c-format
-msgid ""
-" -c, --cascade remove packages and all packages that depend on them\n"
-msgstr " -c, --cascade удалить пакет и вÑе завиÑÑщие от него пакеты\n"
-
-#: src/pacman/pacman.c:110
-#, c-format
-msgid ""
-" -k, --dbonly only remove database entry, do not remove files\n"
-msgstr ""
-" -k, --dbonly Ñтереть только запиÑÑŒ в базе данных, файлы не "
-"удалÑÑ‚ÑŒ\n"
-
-#: src/pacman/pacman.c:111
-#, c-format
-msgid " -n, --nosave remove configuration files as well\n"
-msgstr " -n, --nosave удалить в том чиÑле и конфигурационные файлы\n"
-
-#: src/pacman/pacman.c:112
-#, c-format
-msgid ""
-" -s, --recursive remove dependencies also (that won't break packages)\n"
-msgstr ""
-" -s, --recursive удалить вмеÑте Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑ‚Ñми (которые не повредÑÑ‚ "
-"другие пакеты)\n"
-
-#: src/pacman/pacman.c:115
-#, c-format
-msgid "usage: %s {-F --freshen} [options] <file>\n"
-msgstr "иÑпользование: %s {-F --freshen} [параметры] <файл>\n"
-
-#: src/pacman/pacman.c:117
-#, c-format
-msgid "usage: %s {-U --upgrade} [options] <file>\n"
-msgstr "иÑпользование: %s {-U --upgrade} [параметры] <файл>\n"
-
-#: src/pacman/pacman.c:123
-#, c-format
-msgid "usage: %s {-Q --query} [options] [package]\n"
-msgstr "иÑпользование: %s {-Q --query} [параметры] [пакет]\n"
-
-#: src/pacman/pacman.c:125
-#, c-format
-msgid " -c, --changelog view the changelog of a package\n"
-msgstr " -c, --changelog показать ÑпиÑок изменений пакета\n"
-
-#: src/pacman/pacman.c:126
-#, c-format
-msgid ""
-" -e, --orphans list all packages installed as dependencies but no "
-"longer\n"
-msgstr ""
-" -e, --orphans показать пакеты, уÑтановленные как завиÑимоÑти,\n"
-
-#: src/pacman/pacman.c:127
-#, c-format
-msgid " required by any package\n"
-msgstr " но более не требующиеÑÑ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ пакетам\n"
-
-#: src/pacman/pacman.c:128 src/pacman/pacman.c:143
-#, c-format
-msgid " -g, --groups view all members of a package group\n"
-msgstr " -g, --groups показать вÑе пакеты данной группы\n"
-
-#: src/pacman/pacman.c:129 src/pacman/pacman.c:144
-#, c-format
-msgid " -i, --info view package information\n"
-msgstr " -i, --info показать информацию о пакете\n"
-
-#: src/pacman/pacman.c:130
-#, c-format
-msgid " -l, --list list the contents of the queried package\n"
-msgstr " -l, --list показать Ñодержимое запрашиваемого пакета\n"
-
-#: src/pacman/pacman.c:131
-#, c-format
-msgid ""
-" -m, --foreign list installed packages not found in sync db(s)\n"
-msgstr ""
-" -m, --foreign показать вÑе пакеты не найденные в базе(ах) данных\n"
-
-#: src/pacman/pacman.c:132
-#, c-format
-msgid " -o, --owns <file> query the package that owns <file>\n"
-msgstr " -o, --owns <файл> найти пакет Ñодержащий <файл>\n"
-
-#: src/pacman/pacman.c:133
-#, c-format
-msgid " -p, --file <package> query a package file instead of the database\n"
-msgstr ""
-" -p, --file <пакет> извлечь информацию из файла пакета <пакет>, а не из "
-"базы данных\n"
-
-#: src/pacman/pacman.c:134
-#, c-format
-msgid ""
-" -s, --search <regex> search locally-installed packages for matching "
-"strings\n"
-msgstr ""
-" -s, --search <regex> иÑкать указанную Ñтроку в локально уÑтановленных "
-"пакетах\n"
-
-#: src/pacman/pacman.c:135
-#, c-format
-msgid " -u, --upgrades list all packages that can be upgraded\n"
-msgstr ""
-" -u, --upgrades показать ÑпиÑок вÑех пакетов, которые могут быть "
-"обновлены\n"
-
-#: src/pacman/pacman.c:137
-#, c-format
-msgid "usage: %s {-S --sync} [options] [package]\n"
-msgstr "иÑпользование: %s {-S --sync} [параметры] [пакет]\n"
-
-#: src/pacman/pacman.c:139
-#, c-format
-msgid ""
-" -c, --clean remove old packages from cache directory (-cc for "
-"all)\n"
-msgstr ""
-" -c, --clean удалить Ñтарые пакеты из кÑша (-cc чтобы удалить вÑе "
-"пакеты из кÑша)\n"
-
-#: src/pacman/pacman.c:141
-#, c-format
-msgid " -e, --dependsonly install dependencies only\n"
-msgstr " -e, --dependsonly уÑтановить только завиÑимоÑти\n"
-
-#: src/pacman/pacman.c:145
-#, c-format
-msgid " -l, --list <repo> view a list of packages in a repo\n"
-msgstr " -l, --list <repo> показать вÑе пакеты данного репозиториÑ\n"
-
-#: src/pacman/pacman.c:146
-#, c-format
-msgid ""
-" -p, --print-uris print out URIs for given packages and their "
-"dependencies\n"
-msgstr ""
-" -p, --print-uris напечатать ÑÑылки Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ указанных пакетов и их "
-"завиÑимоÑтей\n"
-
-#: src/pacman/pacman.c:147
-#, c-format
-msgid ""
-" -s, --search <regex> search remote repositories for matching strings\n"
-msgstr ""
-" -s, --search <regex> иÑкать указанную Ñтроку в репозиториÑÑ… на удаленных "
-"Ñерверах\n"
-
-#: src/pacman/pacman.c:148
-#, c-format
-msgid " -u, --sysupgrade upgrade all packages that are out of date\n"
-msgstr " -u, --sysupgrade обновить вÑе уÑтаревшие пакеты\n"
-
-#: src/pacman/pacman.c:149
-#, c-format
-msgid ""
-" -w, --downloadonly download packages but do not install/upgrade "
-"anything\n"
-msgstr ""
-" -w, --downloadonly загрузить пакеты Ñ Ñервера, но не уÑтанавливать\n"
-
-#: src/pacman/pacman.c:150
-#, c-format
-msgid ""
-" -y, --refresh download fresh package databases from the server\n"
-msgstr ""
-" -y, --refresh загрузить Ñвежие базы данных пакетов Ñ Ñервера\n"
-
-#: src/pacman/pacman.c:151
-#, c-format
-msgid ""
-" --ignore <pkg> ignore a package upgrade (can be used more than "
-"once)\n"
-msgstr ""
-" --ignore <пакет> игнорировать пакет при обновлении (может быть "
-"иÑпользовано неоднократно)\n"
-
-#: src/pacman/pacman.c:153
-#, c-format
-msgid " --config <path> set an alternate configuration file\n"
-msgstr ""
-" --config <путь> иÑпользовать альтернативный конфигурационный файл\n"
-
-#: src/pacman/pacman.c:154
-#, c-format
-msgid " --noconfirm do not ask for any confirmation\n"
-msgstr " --noconfirm не Ñпрашивать подтверждениÑ\n"
-
-#: src/pacman/pacman.c:155
-#, c-format
-msgid ""
-" --ask <number> pre-specify answers for questions (see manpage)\n"
-msgstr ""
-" --ask <чиÑло> заранее подготовленные ответы на вопроÑÑ‹ (Ñмотрите "
-"man-Ñтраницу)\n"
-
-#: src/pacman/pacman.c:156
-#, c-format
-msgid ""
-" --noprogressbar do not show a progress bar when downloading files\n"
-msgstr " --noprogressbar не отображать прогреÑÑ Ð¿Ñ€Ð¸ Ñкачивании файлов\n"
-
-#: src/pacman/pacman.c:157
-#, c-format
-msgid ""
-" --noscriptlet do not execute the install scriptlet if there is any\n"
-msgstr ""
-" --noscriptlet не запуÑкать уÑтановочные Ñкрипты, еÑли они еÑÑ‚ÑŒ\n"
-
-#: src/pacman/pacman.c:158
-#, c-format
-msgid " -v, --verbose be verbose\n"
-msgstr " -v, --verbose выводить больше информации\n"
-
-#: src/pacman/pacman.c:159
-#, c-format
-msgid " -r, --root <path> set an alternate installation root\n"
-msgstr ""
-" -r, --root <путь> указать альтернативную корневую директорию Ð´Ð»Ñ "
-"уÑтановки\n"
-
-#: src/pacman/pacman.c:160
-#, c-format
-msgid " -b, --dbpath <path> set an alternate database location\n"
-msgstr ""
-" -b, --dbpath <путь> указать альтернативное раÑположение базы данных\n"
-
-#: src/pacman/pacman.c:161
-#, c-format
-msgid " --cachedir <dir> set an alternate package cache location\n"
-msgstr " --cachedir <dir> указать альтернативное раÑположение кÑша\n"
-
-#: src/pacman/pacman.c:174
-#, c-format
-msgid " This program may be freely redistributed under\n"
-msgstr ""
-" This program may be freely redistributed under\n"
-
-#: src/pacman/pacman.c:175
-#, c-format
-msgid " the terms of the GNU General Public License\n"
-msgstr " the terms of the GNU General Public License\n"
-
-#: src/pacman/pacman.c:300
-#, c-format
-msgid "'%s' is not a valid debug level"
-msgstr "'%s' - неверный уровень отладки"
-
-#: src/pacman/pacman.c:315
-#, c-format
-msgid "'%s' is not a valid cache directory\n"
-msgstr "'%s' неправильно указан путь к кÑш-директории\n"
-
-#: src/pacman/pacman.c:333
-#, c-format
-msgid "'%s' is not a valid db path\n"
-msgstr "'%s' неправильно указан путь к базе данных\n"
-
-#: src/pacman/pacman.c:363
-#, c-format
-msgid "'%s' is not a valid root path\n"
-msgstr "некорректный корневой каталог: '%s'\n"
-
-#: src/pacman/pacman.c:390
-msgid "only one operation may be used at a time\n"
-msgstr "одновременно может выполнÑÑ‚ÑŒÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ одна операциÑ\n"
-
-#: src/pacman/pacman.c:436
-msgid "warning: current locale is invalid; using default \"C\" locale"
-msgstr "warning: current locale is invalid; using default \"C\" locale"
-
-#: src/pacman/pacman.c:456
-#, c-format
-msgid "failed to initialize alpm library (%s)\n"
-msgstr "не удалоÑÑŒ инициализировать библиотеку alpm (%s)\n"
-
-#: src/pacman/pacman.c:489
-msgid "you cannot perform this operation unless you are root.\n"
-msgstr ""
-"Ð’Ñ‹ не можете выполнить Ñту операцию не ÑвлÑÑÑÑŒ Ñуперпользователем (root).\n"
-
-#: src/pacman/pacman.c:505
-#, c-format
-msgid "failed to parse config (%s)\n"
-msgstr "не удалоÑÑŒ обработать конфигурационный файл (%s)\n"
-
-#: src/pacman/pacman.c:516
-msgid "Targets :"
-msgstr "Цели :"
-
-#: src/pacman/pacman.c:522
-#, c-format
-msgid "could not register 'local' database (%s)\n"
-msgstr "не могу зарегиÑтрировать локальную базу данных (%s)\n"
-
-#: src/pacman/pacman.c:529
-msgid "no targets specified (use -h for help)\n"
-msgstr "не задано целей (Ð´Ð»Ñ Ñправки иÑпользуйте -h)\n"
-
-#: src/pacman/pacman.c:542
-msgid "no operation specified (use -h for help)\n"
-msgstr "не задана Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ (Ð´Ð»Ñ Ñправки иÑпользуйте -h)\n"
-
-#: src/pacman/query.c:90
-msgid "no file was specified for --owns\n"
-msgstr "не был указан файл Ð´Ð»Ñ --owns\n"
-
-#: src/pacman/query.c:95
-#, c-format
-msgid "failed to read file '%s': %s"
-msgstr "не удалоÑÑŒ прочитать файл '%s': %s"
-
-#: src/pacman/query.c:100
-msgid "cannot determine ownership of a directory"
-msgstr "не удалоÑÑŒ определить владельца каталога"
-
-#: src/pacman/query.c:105
-#, c-format
-msgid "cannot determine real path for '%s': %s"
-msgstr "не удалоÑÑŒ определить наÑтоÑщий путь Ð´Ð»Ñ '%s': %s"
-
-#: src/pacman/query.c:119
-#, c-format
-msgid "%s is owned by %s %s\n"
-msgstr "%s принадлежит %s %s\n"
-
-#: src/pacman/query.c:127
-#, c-format
-msgid "No package owns %s\n"
-msgstr "Ðи один пакет не Ñодержит %s\n"
-
-#: src/pacman/query.c:170 src/pacman/sync.c:453
-msgid "no usable package repositories configured.\n"
-msgstr "ни один репозиторий не Ñконфигурирован должным образом.\n"
-
-#: src/pacman/query.c:176
-msgid "Checking for package upgrades..."
-msgstr "Проверка обновлений..."
-
-#: src/pacman/query.c:183
-msgid "no upgrades found"
-msgstr "обновлений не найдено"
-
-#: src/pacman/query.c:221
-#, c-format
-msgid "group \"%s\" was not found\n"
-msgstr "группа \"%s\" не найдена\n"
-
-#: src/pacman/query.c:232
-msgid "no package file was specified for --file\n"
-msgstr "не указан файл пакета Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --file\n"
-
-#: src/pacman/query.c:236
-#, c-format
-msgid "failed to load package '%s' (%s)\n"
-msgstr "не удалоÑÑŒ загрузить пакет '%s' (%s)\n"
-
-#: src/pacman/query.c:273 src/pacman/query.c:305
-#, c-format
-msgid "package \"%s\" not found\n"
-msgstr "пакет \"%s\" не найден\n"
-
-#: src/pacman/remove.c:61 src/pacman/sync.c:568
-#, c-format
-msgid ":: group %s:\n"
-msgstr ":: группа %s:\n"
-
-#: src/pacman/remove.c:63
-msgid " Remove whole content? [Y/n] "
-msgstr " Удалить вÑе Ñодержимое? [Y/n] "
-
-#: src/pacman/remove.c:67
-#, c-format
-msgid ":: Remove %s from group %s? [Y/n] "
-msgstr ":: Удалить %s из группы %s? [Y/n] "
-
-#: src/pacman/remove.c:80 src/pacman/sync.c:480 src/pacman/sync.c:529
-#, c-format
-msgid "failed to init transaction (%s)\n"
-msgstr "не удалоÑÑŒ начать операцию (%s)\n"
-
-#: src/pacman/remove.c:92
-#, c-format
-msgid "failed to add target '%s' (%s)\n"
-msgstr "ну удалоÑÑŒ добавить цель '%s' (%s)\n"
-
-#: src/pacman/remove.c:106
-#, c-format
-msgid ":: %s is required by %s\n"
-msgstr ":: %s необходим Ð´Ð»Ñ %s\n"
-
-#: src/pacman/remove.c:128 src/pacman/util.c:324
-msgid "Targets:"
-msgstr "Цели:"
-
-#: src/pacman/remove.c:131
-msgid ""
-"\n"
-"Do you want to remove these packages? [Y/n] "
-msgstr ""
-"\n"
-"Хотите удалить Ñти пакеты? [Y/n] "
-
-#: src/pacman/sync.c:115
-msgid "Do you want to remove old packages from cache? [Y/n] "
-msgstr "Хотите удалить Ñтарые пакеты из кÑша? [Y/n] "
-
-#: src/pacman/sync.c:117
-msgid "removing old packages from cache... "
-msgstr "удалÑÑŽ Ñтарые пакеты из кÑша... "
-
-#: src/pacman/sync.c:120
-msgid "could not access cache directory\n"
-msgstr "нет доÑтупа к кÑш-директории\n"
-
-#: src/pacman/sync.c:181
-msgid "Do you want to remove all packages from cache? [Y/n] "
-msgstr "Хотите удалить вÑе пакеты из кÑша? [Y/n] "
-
-#: src/pacman/sync.c:183
-msgid "removing all packages from cache... "
-msgstr "удалÑÑŽ вÑе пакеты из кÑша... "
-
-#: src/pacman/sync.c:186
-msgid "could not remove cache directory\n"
-msgstr "не могу удалить кÑш-директорию\n"
-
-#: src/pacman/sync.c:191
-msgid "could not create new cache directory\n"
-msgstr "не могу Ñоздать новую директорию Ð´Ð»Ñ ÐºÑша\n"
-
-#: src/pacman/sync.c:218
-#, c-format
-msgid "failed to synchronize %s: %s\n"
-msgstr "не удалоÑÑŒ Ñинхронизировать %s: %s\n"
-
-#: src/pacman/sync.c:220
-#, c-format
-msgid "failed to update %s (%s)\n"
-msgstr "не удалоÑÑŒ обновить %s (%s)\n"
-
-#: src/pacman/sync.c:223
-#, c-format
-msgid " %s is up to date\n"
-msgstr " %s не уÑтарел\n"
-
-#: src/pacman/sync.c:345
-#, c-format
-msgid "repository '%s' does not exist\n"
-msgstr "репозиторий '%s' не ÑущеÑтвует\n"
-
-#: src/pacman/sync.c:361
-#, c-format
-msgid "package '%s' was not found in repository '%s'\n"
-msgstr "пакет '%s' не найден в репозитории '%s'\n"
-
-#: src/pacman/sync.c:381
-#, c-format
-msgid "package '%s' was not found\n"
-msgstr "пакет '%s' не найден\n"
-
-#: src/pacman/sync.c:418
-#, c-format
-msgid "repository \"%s\" was not found.\n"
-msgstr "репозиторий \"%s\" не найден.\n"
-
-#: src/pacman/sync.c:490
-msgid ":: Synchronizing package databases...\n"
-msgstr ":: Синхронизирую базу данных пакетов...\n"
-
-#: src/pacman/sync.c:491
-msgid "synchronizing package lists"
-msgstr "Ñинхронизирую ÑпиÑки пакетов"
-
-#: src/pacman/sync.c:493
-msgid "failed to synchronize any databases"
-msgstr "не удалоÑÑŒ Ñинхронизировать ни одну базу данных"
-
-#: src/pacman/sync.c:499
-msgid ":: Starting full system upgrade...\n"
-msgstr ":: Ðачинаю полное обновление ÑиÑтемы...\n"
-
-#: src/pacman/sync.c:500
-msgid "starting full system upgrade"
-msgstr "начинаю полное обновление ÑиÑтемы"
-
-#: src/pacman/sync.c:518
-msgid ""
-"\n"
-":: pacman has detected a newer version of the \"pacman\" package.\n"
-msgstr ""
-"\n"
-":: pacman обнаружил более новую верÑию пакета \"pacman\".\n"
-
-#: src/pacman/sync.c:519
-msgid ":: It is recommended that you allow pacman to upgrade itself\n"
-msgstr ":: Рекомендуем Вам Ñначала позволить pacman'у обновить ÑÐµÐ±Ñ Ñамого,\n"
-
-#: src/pacman/sync.c:520
-msgid ":: first, then you can re-run the operation with the newer version.\n"
-msgstr ":: поÑле чего перезапуÑтить операцию Ñ Ð¸Ñпользованием новой верÑии.\n"
-
-#: src/pacman/sync.c:522
-msgid ":: Upgrade pacman first? [Y/n] "
-msgstr ":: Обновить pacman в первую очередь? [Y/n] "
-
-#: src/pacman/sync.c:537
-#, c-format
-msgid "pacman: %s\n"
-msgstr "pacman: %s\n"
-
-#: src/pacman/sync.c:572
-msgid ":: Install whole content? [Y/n] "
-msgstr ":: УÑтановить в полном объеме? [Y/n] "
-
-#: src/pacman/sync.c:579
-#, c-format
-msgid ":: Install %s from group %s? [Y/n] "
-msgstr ":: УÑтановить %s из группы %s? [Y/n] "
-
-#: src/pacman/sync.c:603
-#, c-format
-msgid "'%s': not found in sync db\n"
-msgstr "'%s': не найдено в базе пакетов\n"
-
-#: src/pacman/sync.c:621
-msgid "requires"
-msgstr "требует"
-
-#: src/pacman/sync.c:663
-msgid " local database is up to date\n"
-msgstr " Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð±Ð°Ð·Ð° данных не уÑтарела\n"
-
-#: src/pacman/sync.c:672
-msgid ""
-"\n"
-"Beginning download...\n"
-msgstr ""
-"\n"
-"Ðачинаю загрузку...\n"
-
-#: src/pacman/sync.c:676
-msgid "Proceed with download? [Y/n] "
-msgstr "ПриÑтупить к загрузке? [Y/n] "
-
-#: src/pacman/sync.c:684
-msgid ""
-"\n"
-"Beginning upgrade process...\n"
-msgstr ""
-"\n"
-"Ðачинаю процеÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ...\n"
-
-#: src/pacman/sync.c:688
-msgid "Proceed with installation? [Y/n] "
-msgstr "ПриÑтупить к уÑтановке? [Y/n] "
-
-#: src/pacman/trans.c:55
-msgid "checking dependencies... "
-msgstr "проверÑÑŽ завиÑимоÑти... "
-
-#: src/pacman/trans.c:59
-msgid "checking for file conflicts... "
-msgstr "проверÑÑŽ возможные конфликты файлов... "
-
-#: src/pacman/trans.c:63
-msgid "cleaning up... "
-msgstr "убираем за Ñобой... "
-
-#: src/pacman/trans.c:66
-msgid "resolving dependencies... "
-msgstr "разрешаю завиÑимоÑти... "
-
-#: src/pacman/trans.c:69
-msgid "looking for inter-conflicts... "
-msgstr "проверÑÑŽ на взаимную неÑовмеÑтимоÑÑ‚ÑŒ... "
-
-#: src/pacman/trans.c:86
-#, c-format
-msgid "installing %s... "
-msgstr "уÑтанавливаю %s... "
-
-#: src/pacman/trans.c:93
-#, c-format
-msgid "installed %s (%s)"
-msgstr "уÑтановлено %s (%s)"
-
-#: src/pacman/trans.c:100
-#, c-format
-msgid "removing %s... "
-msgstr "удалÑÑŽ %s... "
-
-#: src/pacman/trans.c:107
-#, c-format
-msgid "removed %s (%s)"
-msgstr "удалено %s (%s)"
-
-#: src/pacman/trans.c:114
-#, c-format
-msgid "upgrading %s... "
-msgstr "обновлÑÑŽ %s... "
-
-#: src/pacman/trans.c:121
-#, c-format
-msgid "upgraded %s (%s -> %s)"
-msgstr "обновлено %s (%s -> %s)"
-
-#: src/pacman/trans.c:128
-msgid "checking package integrity... "
-msgstr "проверÑÑŽ целоÑтноÑÑ‚ÑŒ пакета... "
-
-#: src/pacman/trans.c:144
-msgid "failed.\n"
-msgstr "провал.\n"
-
-#: src/pacman/trans.c:151
-#, c-format
-msgid ":: Retrieving packages from %s...\n"
-msgstr ":: Получение пакетов Ñ %s...\n"
-
-#: src/pacman/trans.c:172
-#, c-format
-msgid ":: %1$s requires %2$s from IgnorePkg. Install %2$s? [Y/n] "
-msgstr ":: %1$s требует %2$s из IgnorePkg. УÑтановить %2$s? [Y/n] "
-
-#: src/pacman/trans.c:177
-#, c-format
-msgid ":: %s is in IgnorePkg. Install anyway? [Y/n] "
-msgstr ":: %s указан в IgnorePkg. Ð’ÑÑ‘ равно уÑтановить? [Y/n] "
-
-#: src/pacman/trans.c:190
-#, c-format
-msgid ":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "
-msgstr ":: %s указан в HoldPkg. Ð’ÑÑ‘ равно удалить? [Y/n] "
-
-#: src/pacman/trans.c:203
-#, c-format
-msgid ":: Replace %s with %s/%s? [Y/n] "
-msgstr ":: Заменить %s на %s/%s? [Y/n] "
-
-#: src/pacman/trans.c:218
-#, c-format
-msgid ":: %s conflicts with %s. Remove %s? [Y/n] "
-msgstr ":: %s конфликтует Ñ %s. Удалить %s? [Y/n] "
-
-#: src/pacman/trans.c:234
-#, c-format
-msgid ":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "
-msgstr ":: %s-%s: уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð½Ð¾Ð²ÐµÐµ. Ð’ÑÑ‘ равно обновить? [Y/n] "
-
-#: src/pacman/trans.c:252
-#, c-format
-msgid ":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "
-msgstr ":: %s-%s: уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð½Ðµ уÑтарела. Ð’ÑÑ‘ равно обновить? [Y/n] "
-
-#: src/pacman/trans.c:270
-#, c-format
-msgid ":: Archive %s is corrupted. Do you want to delete it? [Y/n] "
-msgstr ":: Ðрхив %s поврежден. Хотите его удалить? [Y/n] "
-
-#: src/pacman/trans.c:326
-msgid "installing"
-msgstr "уÑтановка"
-
-#: src/pacman/trans.c:329
-msgid "upgrading"
-msgstr "обновление"
-
-#: src/pacman/trans.c:332
-msgid "removing"
-msgstr "удаление"
-
-#: src/pacman/trans.c:335
-msgid "checking for file conflicts"
-msgstr "проверÑÑŽ возможные конфликты файлов"
-
-#: src/pacman/util.c:259
-#, c-format
-msgid "None\n"
-msgstr "Ðе указано\n"
-
-#: src/pacman/util.c:311
-msgid "Remove:"
-msgstr "Удалить:"
-
-#: src/pacman/util.c:319
-#, c-format
-msgid ""
-"\n"
-"Total Removed Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Итого удалено: %.2f МБ\n"
-
-#: src/pacman/util.c:330
-#, c-format
-msgid ""
-"\n"
-"Total Package Size: %.2f MB\n"
-msgstr ""
-"\n"
-"Суммарный размер пакетов: %.2f МБ\n"
-
-#: src/pacman/util.c:337
-#, c-format
-msgid "Total Installed Size: %.2f MB\n"
-msgstr "Итого уÑтановлено: %.2f МБ\n"
-
-#~ msgid "requires: %s"
-#~ msgstr "требуетÑÑ: %s"
-
-#~ msgid "'%s': %s\n"
-#~ msgstr "'%s': %s\n"
diff --git a/src/pacman/query.c b/src/pacman/query.c
index a6ebddb0..8a8765b6 100644
--- a/src/pacman/query.c
+++ b/src/pacman/query.c
@@ -1,8 +1,8 @@
/*
* query.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
+ * Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -26,7 +26,6 @@
#include <limits.h>
#include <string.h>
#include <sys/stat.h>
-#include <libintl.h>
#include <errno.h>
#include <unistd.h>
@@ -34,302 +33,392 @@
#include <alpm_list.h>
/* pacman */
-#include "query.h"
+#include "pacman.h"
#include "package.h"
-#include "log.h"
#include "conf.h"
-#include "sync.h"
#include "util.h"
-extern config_t *config;
extern pmdb_t *db_local;
static char *resolve_path(const char* file)
{
- char *copy, *p, *str = NULL;
+ char *str = NULL;
- if(!(copy = strdup(file))) {
+ str = calloc(PATH_MAX+1, sizeof(char));
+ if(!str) {
return(NULL);
}
- if((p = strrchr(copy, '/')) == NULL) {
- return(copy);
- } else {
- *p = '\0'; ++p;
+ if(!realpath(file, str)) {
+ free(str);
+ return(NULL);
+ }
+
+ return(str);
+}
+
+static int query_fileowner(alpm_list_t *targets)
+{
+ int ret = 0;
+ alpm_list_t *t;
- str = calloc(PATH_MAX+1, sizeof(char));
- if(!str) {
- /* null hmmm.... */
- return(NULL);
+ /* This code is here for safety only */
+ if(targets == NULL) {
+ fprintf(stderr, _("error: no file was specified for --owns\n"));
+ return(1);
+ }
+
+ for(t = targets; t; t = alpm_list_next(t)) {
+ int found = 0;
+ char *filename = alpm_list_getdata(t);
+ char *bname;
+ char *rpath;
+ struct stat buf;
+ alpm_list_t *i, *j;
+
+ if(stat(filename, &buf) == -1) {
+ fprintf(stderr, _("error: failed to read file '%s': %s\n"),
+ filename, strerror(errno));
+ ret++;
+ continue;
}
- if(!realpath(copy, str)) {
- return(NULL);
+ if(S_ISDIR(buf.st_mode)) {
+ fprintf(stderr, _("error: cannot determine ownership of a directory\n"));
+ ret++;
+ continue;
}
- str[strlen(str)] = '/';
- strcat(str, p);
+ bname = mbasename(filename);
+
+ if(!(rpath = resolve_path(filename))) {
+ fprintf(stderr, _("error: cannot determine real path for '%s': %s\n"),
+ filename, strerror(errno));
+ ret++;
+ continue;
+ }
+
+ for(i = alpm_db_getpkgcache(db_local); i && !found; i = alpm_list_next(i)) {
+ pmpkg_t *info = alpm_list_getdata(i);
+
+ for(j = alpm_pkg_get_files(info); j && !found; j = alpm_list_next(j)) {
+ char path[PATH_MAX], *ppath;
+ snprintf(path, PATH_MAX, "%s%s",
+ alpm_option_get_root(), (const char *)alpm_list_getdata(j));
+
+ /* avoid the costly resolve_path usage if the basenames don't match */
+ if(strcmp(mbasename(path), bname) != 0) {
+ continue;
+ }
+
+ ppath = resolve_path(path);
+
+ if(ppath && strcmp(ppath, rpath) == 0) {
+ printf(_("%s is owned by %s %s\n"), rpath,
+ alpm_pkg_get_name(info), alpm_pkg_get_version(info));
+ found = 1;
+ }
+ free(ppath);
+ }
+ }
+ if(!found) {
+ fprintf(stderr, _("error: No package owns %s\n"), filename);
+ ret++;
+ }
+ free(rpath);
}
- free(copy);
- return(str);
+ return ret;
}
-
-static void query_fileowner(pmdb_t *db, char *filename)
+/* search the local database for a matching package */
+static int query_search(alpm_list_t *targets)
{
- struct stat buf;
- int gotcha = 0;
- char *rpath;
- alpm_list_t *i, *j;
+ alpm_list_t *i, *searchlist;
+ int freelist;
- if(db == NULL) {
- return;
+ /* if we have a targets list, search for packages matching it */
+ if(targets) {
+ searchlist = alpm_db_search(db_local, targets);
+ freelist = 1;
+ } else {
+ searchlist = alpm_db_getpkgcache(db_local);
+ freelist = 0;
}
- if(filename == NULL || strlen(filename) == 0) {
- ERR(NL, _("no file was specified for --owns\n"));
- return;
+ if(searchlist == NULL) {
+ return(1);
}
- if(stat(filename, &buf) == -1) {
- ERR(NL, _("failed to read file '%s': %s"), filename, strerror(errno));
- return;
- }
-
- if(S_ISDIR(buf.st_mode)) {
- ERR(NL, _("cannot determine ownership of a directory"));
- return;
- }
+ for(i = searchlist; i; i = alpm_list_next(i)) {
+ char *group = NULL;
+ alpm_list_t *grp;
+ pmpkg_t *pkg = alpm_list_getdata(i);
- if(!(rpath = resolve_path(filename))) {
- ERR(NL, _("cannot determine real path for '%s': %s"), filename, strerror(errno));
- return;
- }
+ if (!config->quiet) {
+ printf("local/%s %s", alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
+ } else {
+ printf("%s", alpm_pkg_get_name(pkg));
+ }
- for(i = alpm_db_getpkgcache(db); i && !gotcha; i = alpm_list_next(i)) {
- pmpkg_t *info = alpm_list_getdata(i);
+ /* print the package size with the output if ShowSize option set */
+ if(config->showsize) {
+ /* Convert byte size to MB */
+ double mbsize = (double)alpm_pkg_get_size(pkg) / (1024.0 * 1024.0);
- for(j = alpm_pkg_get_files(info); j && !gotcha; j = alpm_list_next(j)) {
- char path[PATH_MAX], *ppath;
- snprintf(path, PATH_MAX, "%s%s", alpm_option_get_root(), (const char *)alpm_list_getdata(j));
+ printf(" [%.2f MB]", mbsize);
+ }
- ppath = resolve_path(path);
- if(ppath && strcmp(ppath, rpath) == 0) {
- printf(_("%s is owned by %s %s\n"), filename, alpm_pkg_get_name(info), alpm_pkg_get_version(info));
- gotcha = 1;
+ if (!config->quiet) {
+ if((grp = alpm_pkg_get_groups(pkg)) != NULL) {
+ group = alpm_list_getdata(grp);
+ printf(" (%s)", (char *)alpm_list_getdata(grp));
}
- free(ppath);
+ /* we need a newline and initial indent first */
+ printf("\n ");
+ indentprint(alpm_pkg_get_desc(pkg), 4);
}
- }
- if(!gotcha) {
- ERR(NL, _("No package owns %s\n"), filename);
+ printf("\n");
}
- free(rpath);
+ /* we only want to free if the list was a search list */
+ if(freelist) {
+ alpm_list_free(searchlist);
+ }
+ return(0);
}
-int pacman_query(alpm_list_t *targets)
+static int query_group(alpm_list_t *targets)
{
- alpm_list_t *sync_dbs = NULL, *i, *j, *k;
- pmpkg_t *info = NULL;
+ alpm_list_t *i, *j;
char *package = NULL;
- int done = 0;
-
- if(config->op_q_search) {
- alpm_list_t *ret = alpm_db_search(db_local, targets);
- if(ret == NULL) {
- return(0);
+ int ret = 0;
+ if(targets == NULL) {
+ for(j = alpm_db_getgrpcache(db_local); j; j = alpm_list_next(j)) {
+ pmgrp_t *grp = alpm_list_getdata(j);
+ const alpm_list_t *p, *pkgnames;
+ const char *grpname;
+
+ grpname = alpm_grp_get_name(grp);
+ pkgnames = alpm_grp_get_pkgs(grp);
+
+ for(p = pkgnames; p; p = alpm_list_next(p)) {
+ printf("%s %s\n", grpname, (char *)alpm_list_getdata(p));
+ }
}
- for(i = ret; i; i = alpm_list_next(i)) {
- char *group = NULL;
- alpm_list_t *grp;
- pmpkg_t *pkg = alpm_list_getdata(i);
-
- printf("local/%s %s", alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
-
- if((grp = alpm_pkg_get_groups(pkg)) != NULL) {
- group = alpm_list_getdata(grp);
- printf(" (%s)\n ", (char *)alpm_list_getdata(grp));
+ } else {
+ for(i = targets; i; i = alpm_list_next(i)) {
+ pmgrp_t *grp;
+ package = alpm_list_getdata(i);
+ grp = alpm_db_readgrp(db_local, package);
+ if(grp) {
+ const alpm_list_t *p, *pkgnames = alpm_grp_get_pkgs(grp);
+ for(p = pkgnames; p; p = alpm_list_next(p)) {
+ printf("%s %s\n", package, (char *)alpm_list_getdata(p));
+ }
} else {
- printf("\n ");
+ fprintf(stderr, _("error: group \"%s\" was not found\n"), package);
+ ret++;
}
-
- indentprint(alpm_pkg_get_desc(pkg), 4);
- printf("\n");
}
- alpm_list_free(ret);
+ }
+ return ret;
+}
+
+static int query_upgrades(void)
+{
+ alpm_list_t *syncpkgs = NULL;
+ printf(_("Checking for package upgrades... \n"));
+
+ alpm_list_t *syncdbs = alpm_option_get_syncdbs();
+ if(alpm_sync_sysupgrade(db_local, syncdbs, &syncpkgs) == -1) {
+ return(-1);
+ }
+ if(syncpkgs) {
+ display_targets(syncpkgs, db_local);
return(0);
}
- if(config->op_q_foreign) {
- sync_dbs = alpm_option_get_syncdbs();
+ printf(_("no upgrades found.\n"));
+ return(1);
+}
- if(sync_dbs == NULL || alpm_list_count(sync_dbs) == 0) {
- ERR(NL, _("no usable package repositories configured.\n"));
- return(1);
+static int is_foreign(pmpkg_t *pkg)
+{
+ const char *pkgname = alpm_pkg_get_name(pkg);
+ alpm_list_t *j;
+ alpm_list_t *sync_dbs = alpm_option_get_syncdbs();
+
+ int match = 0;
+ for(j = sync_dbs; j; j = alpm_list_next(j)) {
+ pmdb_t *db = alpm_list_getdata(j);
+ pmpkg_t *findpkg = alpm_db_get_pkg(db, pkgname);
+ if(findpkg) {
+ match = 1;
+ break;
}
}
+ if(match == 0) {
+ return(1);
+ }
+ return(0);
+}
+
+static int is_orphan(pmpkg_t *pkg)
+{
+ alpm_list_t *requiredby = alpm_pkg_compute_requiredby(pkg);
+ if(requiredby == NULL) {
+ return(1);
+ }
+ FREELIST(requiredby);
+ return(0);
+}
- if(config->op_q_upgrade) {
- MSG(NL, _("Checking for package upgrades..."));
- alpm_list_t *syncpkgs;
+static int filter(pmpkg_t *pkg)
+{
+ /* check if this package was explicitly installed */
+ if(config->op_q_explicit &&
+ alpm_pkg_get_reason(pkg) != PM_PKG_REASON_EXPLICIT) {
+ return(0);
+ }
+ /* check if this package was installed as a dependency */
+ if(config->op_q_deps &&
+ alpm_pkg_get_reason(pkg) != PM_PKG_REASON_DEPEND) {
+ return(0);
+ }
+ /* check if this pkg isn't in a sync DB */
+ if(config->op_q_foreign && !is_foreign(pkg)) {
+ return(0);
+ }
+ /* check if this pkg is orphaned */
+ if(config->op_q_orphans && !is_orphan(pkg)) {
+ return(0);
+ }
+ return(1);
+}
- if((syncpkgs = alpm_get_upgrades()) != NULL) {
- display_targets(syncpkgs);
- return(0);
+static void display(pmpkg_t *pkg)
+{
+ if(config->op_q_info) {
+ if(config->op_q_isfile) {
+ /* omit info that isn't applicable for a file package */
+ dump_pkg_full(pkg, 0);
} else {
- MSG(NL, _("no upgrades found"));
- return(1);
+ dump_pkg_full(pkg, config->op_q_info);
}
}
-
- for(i = targets; !done; i = (i ? alpm_list_next(i) : NULL)) {
- if(targets == NULL) {
- done = 1;
+ if(config->op_q_list) {
+ dump_pkg_files(pkg);
+ }
+ if(config->op_q_changelog) {
+ char changelog[PATH_MAX];
+ /* TODO should be done in the backend- no raw DB stuff up front */
+ snprintf(changelog, PATH_MAX, "%s/%s/%s-%s/changelog",
+ alpm_option_get_dbpath(),
+ alpm_db_get_name(db_local),
+ alpm_pkg_get_name(pkg),
+ alpm_pkg_get_version(pkg));
+ dump_pkg_changelog(changelog, alpm_pkg_get_name(pkg));
+ }
+ if(!config->op_q_info && !config->op_q_list && !config->op_q_changelog) {
+ if (!config->quiet) {
+ printf("%s %s\n", alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
} else {
- if(alpm_list_next(i) == NULL) {
- done = 1;
- }
- package = alpm_list_getdata(i);
+ printf("%s\n", alpm_pkg_get_name(pkg));
}
+ }
+}
+
+int pacman_query(alpm_list_t *targets)
+{
+ int ret = 0;
+ alpm_list_t *i;
- /* looking for groups */
- if(config->group) {
- if(targets == NULL) {
- for(j = alpm_db_getgrpcache(db_local); j; j = alpm_list_next(j)) {
- pmgrp_t *grp = alpm_list_getdata(j);
- alpm_list_t *p, *pkgnames;
- const char *grpname;
+ /* First: operations that do not require targets */
- grpname = alpm_grp_get_name(grp);
- pkgnames = alpm_grp_get_pkgs(grp);
+ /* search for a package */
+ if(config->op_q_search) {
+ ret = query_search(targets);
+ return(ret);
+ }
- for(p = pkgnames; p; p = alpm_list_next(p)) {
- MSG(NL, "%s %s\n", grpname, (char *)alpm_list_getdata(p));
- }
- }
- } else {
- pmgrp_t *grp = alpm_db_readgrp(db_local, package);
- if(grp) {
- alpm_list_t *p, *pkgnames = alpm_grp_get_pkgs(grp);
- for(p = pkgnames; p; p = alpm_list_next(p)) {
- MSG(NL, "%s %s\n", package, (char *)alpm_list_getdata(p));
- }
- } else {
- ERR(NL, _("group \"%s\" was not found\n"), package);
- /* do not return on query operations - let's just carry on */
- /*return(2);*/
- }
+ /* check for package upgrades */
+ if(config->op_q_upgrade) {
+ ret = query_upgrades();
+ return(ret);
+ }
+
+ /* looking for groups */
+ if(config->group) {
+ ret = query_group(targets);
+ return(ret);
+ }
+
+ if(config->op_q_foreign) {
+ /* ensure we have at least one valid sync db set up */
+ alpm_list_t *sync_dbs = alpm_option_get_syncdbs();
+ if(sync_dbs == NULL || alpm_list_count(sync_dbs) == 0) {
+ pm_printf(PM_LOG_ERROR, _("no usable package repositories configured.\n"));
+ return(-1);
+ }
+ }
+
+ /* operations on all packages in the local DB
+ * valid: no-op (plain -Q), list, info
+ * invalid: isfile, owns */
+ if(targets == NULL) {
+ if(config->op_q_isfile || config->op_q_owns) {
+ pm_printf(PM_LOG_ERROR, _("no targets specified (use -h for help)\n"));
+ return(1);
+ }
+
+ for(i = alpm_db_getpkgcache(db_local); i; i = alpm_list_next(i)) {
+ pmpkg_t *pkg = alpm_list_getdata(i);
+ if(filter(pkg)) {
+ display(pkg);
}
- continue;
}
+ return(0);
+ }
+
+ /* Second: operations that require target(s) */
+
+ /* determine the owner of a file */
+ if(config->op_q_owns) {
+ ret = query_fileowner(targets);
+ return(ret);
+ }
+
+ /* operations on named packages in the local DB
+ * valid: no-op (plain -Q), list, info */
+ for(i = targets; i; i = alpm_list_next(i)) {
+ char *strname = alpm_list_getdata(i);
+ pmpkg_t *pkg = NULL;
- /* output info for a .tar.gz package */
if(config->op_q_isfile) {
- if(package == NULL) {
- ERR(NL, _("no package file was specified for --file\n"));
- return(1);
- }
- if(alpm_pkg_load(package, &info) == -1) {
- ERR(NL, _("failed to load package '%s' (%s)\n"), package, alpm_strerror(pm_errno));
- return(1);
- }
- if(config->op_q_info) {
- dump_pkg_full(info, config->op_q_info);
- }
- if(config->op_q_list) {
- dump_pkg_files(info);
- }
- if(!config->op_q_info && !config->op_q_list) {
- MSG(NL, "%s %s\n", alpm_pkg_get_name(info),
- alpm_pkg_get_version(info));
- }
- FREEPKG(info);
- continue;
+ alpm_pkg_load(strname, 1, &pkg);
+ } else {
+ pkg = alpm_db_get_pkg(db_local, strname);
}
- /* determine the owner of a file */
- if(config->op_q_owns) {
- query_fileowner(db_local, package);
+ if(pkg == NULL) {
+ fprintf(stderr, _("error: package \"%s\" not found\n"), strname);
+ ret++;
continue;
}
- /* find packages in the db */
- if(package == NULL) {
- /* no target */
- for(i = alpm_db_getpkgcache(db_local); i; i = alpm_list_next(i)) {
- pmpkg_t *tmpp = alpm_list_getdata(i);
- const char *pkgname, *pkgver;
-
- pkgname = alpm_pkg_get_name(tmpp);
- pkgver = alpm_pkg_get_version(tmpp);
-
- if(config->op_q_list || config->op_q_orphans || config->op_q_foreign) {
- info = alpm_db_get_pkg(db_local, (char *)pkgname);
- if(info == NULL) {
- /* something weird happened */
- ERR(NL, _("package \"%s\" not found\n"), pkgname);
- continue;
- }
- }
- if(config->op_q_foreign) {
- int match = 0;
- for(j = sync_dbs; j; j = alpm_list_next(j)) {
- pmdb_t *db = (pmdb_t *)alpm_list_getdata(j);
- for(k = alpm_db_getpkgcache(db); k; k = alpm_list_next(k)) {
- pmpkg_t *pkg = alpm_list_getdata(k);
- if(strcmp(alpm_pkg_get_name(pkg), alpm_pkg_get_name(info)) == 0) {
- match = 1;
- }
- }
- }
- if(match==0) {
- MSG(NL, "%s %s\n", pkgname, pkgver);
- }
- } else if(config->op_q_list) {
- dump_pkg_files(info);
- } else if(config->op_q_orphans) {
- if(alpm_pkg_get_requiredby(info) == NULL
- && (long)alpm_pkg_get_reason(info) == PM_PKG_REASON_DEPEND) {
- MSG(NL, "%s %s\n", pkgname, pkgver);
- }
- } else {
- MSG(NL, "%s %s\n", pkgname, pkgver);
- }
- }
- } else {
- info = alpm_db_get_pkg(db_local, package);
- if(info == NULL) {
- ERR(NL, _("package \"%s\" not found\n"), package);
- continue;
- }
+ if(filter(pkg)) {
+ display(pkg);
+ }
- /* find a target */
- if(config->op_q_info) {
- dump_pkg_full(info, config->op_q_info);
- }
- if(config->op_q_list) {
- dump_pkg_files(info);
- }
- if(!config->op_q_info && !config->op_q_list) {
- MSG(NL, "%s %s\n", alpm_pkg_get_name(info),
- alpm_pkg_get_version(info));
- }
- if(config->op_q_changelog) {
- char changelog[PATH_MAX];
- snprintf(changelog, PATH_MAX, "%s%s/%s/%s-%s/changelog",
- alpm_option_get_root(), alpm_option_get_dbpath(),
- alpm_db_get_name(db_local),
- alpm_pkg_get_name(info),
- alpm_pkg_get_version(info));
- dump_pkg_changelog(changelog, alpm_pkg_get_name(info));
- }
+ if(config->op_q_isfile) {
+ alpm_pkg_free(pkg);
+ pkg = NULL;
}
}
- return(0);
+ return(ret);
}
/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/query.h b/src/pacman/query.h
deleted file mode 100644
index fa55c732..00000000
--- a/src/pacman/query.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * query.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-#ifndef _PM_QUERY_H
-#define _PM_QUERY_H
-
-#include <alpm_list.h>
-
-int pacman_query(alpm_list_t *targets);
-
-#endif /* _PM_QUERY_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/remove.c b/src/pacman/remove.c
index 9989f8e5..1028d9e8 100644
--- a/src/pacman/remove.c
+++ b/src/pacman/remove.c
@@ -1,8 +1,8 @@
/*
* remove.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -24,46 +24,63 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <libintl.h>
#include <alpm.h>
#include <alpm_list.h>
/* pacman */
-#include "remove.h"
+#include "pacman.h"
#include "util.h"
-#include "log.h"
-#include "trans.h"
+#include "callback.h"
#include "conf.h"
-extern config_t *config;
-
extern pmdb_t *db_local;
+/* Free the current transaction and print an error if unsuccessful */
+static int remove_cleanup(void)
+{
+ int ret = alpm_trans_release();
+ if(ret != 0) {
+ pm_printf(PM_LOG_ERROR, _("failed to release transaction (%s)\n"),
+ alpm_strerrorlast());
+ ret = 1;
+ }
+
+ return(ret);
+}
+
+/**
+ * @brief Remove a specified list of packages.
+ *
+ * @param targets a list of packages (as strings) to remove from the system
+ *
+ * @return 0 on success, 1 on failure
+ */
int pacman_remove(alpm_list_t *targets)
{
- alpm_list_t *data = NULL, *i, *j, *finaltargs = NULL;
+ alpm_list_t *i, *data = NULL, *finaltargs = NULL;
int retval = 0;
if(targets == NULL) {
- return(0);
+ pm_printf(PM_LOG_ERROR, _("no targets specified (use -h for help)\n"));
+ return(1);
}
- /* If the target is a group, ask if its packages should be removed
+ /* If the target is a group, ask if its packages should be removed
* (the library can't remove groups for now)
*/
for(i = targets; i; i = alpm_list_next(i)) {
pmgrp_t *grp = alpm_db_readgrp(db_local, alpm_list_getdata(i));
if(grp) {
int all;
- alpm_list_t *pkgnames = alpm_grp_get_pkgs(grp);
+ const alpm_list_t *p, *pkgnames = alpm_grp_get_pkgs(grp);
- MSG(NL, _(":: group %s:\n"), alpm_grp_get_name(grp));
+ printf(_(":: group %s:\n"), alpm_grp_get_name(grp));
list_display(" ", pkgnames);
all = yesno(_(" Remove whole content? [Y/n] "));
- for(j = pkgnames; j; j = alpm_list_next(j)) {
- char *pkg = alpm_list_getdata(j);
+ for(p = pkgnames; p; p = alpm_list_next(p)) {
+ char *pkg = alpm_list_getdata(p);
if(all || yesno(_(":: Remove %s from group %s? [Y/n] "), pkg, (char *)alpm_list_getdata(i))) {
finaltargs = alpm_list_add(finaltargs, strdup(pkg));
}
@@ -74,84 +91,93 @@ int pacman_remove(alpm_list_t *targets)
}
}
- /* Step 1: create a new transaction
- */
- if(alpm_trans_init(PM_TRANS_TYPE_REMOVE, config->flags, cb_trans_evt, cb_trans_conv, cb_trans_progress) == -1) {
- ERR(NL, _("failed to init transaction (%s)\n"), alpm_strerror(pm_errno));
+ /* Step 1: create a new transaction */
+ if(alpm_trans_init(PM_TRANS_TYPE_REMOVE, config->flags,
+ cb_trans_evt, cb_trans_conv, cb_trans_progress) == -1) {
+ fprintf(stderr, _("error: failed to init transaction (%s)\n"),
+ alpm_strerrorlast());
if(pm_errno == PM_ERR_HANDLE_LOCK) {
- MSG(NL, _(" if you're sure a package manager is not already running,\n"
- " you can remove %s%s\n"), alpm_option_get_root(), PM_LOCK);
+ printf(_(" if you're sure a package manager is not already\n"
+ " running, you can remove %s.\n"), alpm_option_get_lockfile());
}
FREELIST(finaltargs);
return(1);
}
- /* and add targets to it */
+
+ /* add targets to the created transaction */
+ printf(_("loading package data... "));
for(i = finaltargs; i; i = alpm_list_next(i)) {
char *targ = alpm_list_getdata(i);
if(alpm_trans_addtarget(targ) == -1) {
- ERR(NL, _("failed to add target '%s' (%s)\n"), targ, alpm_strerror(pm_errno));
- retval = 1;
- goto cleanup;
+ printf("failed.\n");
+ fprintf(stderr, _("error: failed to add target '%s' (%s)\n"), targ,
+ alpm_strerrorlast());
+ remove_cleanup();
+ FREELIST(finaltargs);
+ return(1);
}
}
+ printf(_("done.\n"));
- /* Step 2: prepare the transaction based on its type, targets and flags
- */
+ /* Step 2: prepare the transaction based on its type, targets and flags */
if(alpm_trans_prepare(&data) == -1) {
- ERR(NL, _("failed to prepare transaction (%s)\n"), alpm_strerror(pm_errno));
+ fprintf(stderr, _("error: failed to prepare transaction (%s)\n"),
+ alpm_strerrorlast());
switch(pm_errno) {
case PM_ERR_UNSATISFIED_DEPS:
for(i = data; i; i = alpm_list_next(i)) {
pmdepmissing_t *miss = alpm_list_getdata(i);
- MSG(NL, _(":: %s is required by %s\n"), alpm_dep_get_target(miss),
- alpm_dep_get_name(miss));
+ pmdepend_t *dep = alpm_miss_get_dep(miss);
+ char *depstring = alpm_dep_get_string(dep);
+ printf(_(":: %s: requires %s\n"), alpm_miss_get_target(miss),
+ depstring);
+ free(depstring);
}
+ alpm_list_free_inner(data, free);
alpm_list_free(data);
- break;
+ break;
default:
- break;
+ break;
}
- retval = 1;
- goto cleanup;
+ remove_cleanup();
+ FREELIST(finaltargs);
+ return(1);
}
- /* Warn user in case of dangerous operation
- */
- if(config->flags & PM_TRANS_FLAG_RECURSE || config->flags & PM_TRANS_FLAG_CASCADE) {
+ /* Warn user in case of dangerous operation */
+ if(config->flags & PM_TRANS_FLAG_RECURSE ||
+ config->flags & PM_TRANS_FLAG_CASCADE) {
/* list transaction targets */
alpm_list_t *lst = NULL;
+ /* create a new list of package names only */
for(i = alpm_trans_get_pkgs(); i; i = alpm_list_next(i)) {
pmpkg_t *pkg = alpm_list_getdata(i);
lst = alpm_list_add(lst, strdup(alpm_pkg_get_name(pkg)));
}
- MSG(NL, "\n");
+ printf("\n");
list_display(_("Targets:"), lst);
FREELIST(lst);
/* get confirmation */
if(yesno(_("\nDo you want to remove these packages? [Y/n] ")) == 0) {
- retval = 1;
- goto cleanup;
+ remove_cleanup();
+ FREELIST(finaltargs);
+ return(1);
}
- MSG(NL, "\n");
+ printf("\n");
}
- /* Step 3: actually perform the removal
- */
+ /* Step 3: actually perform the removal */
if(alpm_trans_commit(NULL) == -1) {
- ERR(NL, _("failed to commit transaction (%s)\n"), alpm_strerror(pm_errno));
- retval = 1;
- goto cleanup;
+ fprintf(stderr, _("error: failed to commit transaction (%s)\n"),
+ alpm_strerrorlast());
+ remove_cleanup();
+ FREELIST(finaltargs);
+ return(1);
}
- /* Step 4: release transaction resources
- */
-cleanup:
+ /* Step 4: release transaction resources */
+ retval = remove_cleanup();
FREELIST(finaltargs);
- if(alpm_trans_release() == -1) {
- ERR(NL, _("failed to release transaction (%s)\n"), alpm_strerror(pm_errno));
- retval = 1;
- }
-
return(retval);
}
diff --git a/src/pacman/remove.h b/src/pacman/remove.h
deleted file mode 100644
index 33a2d20d..00000000
--- a/src/pacman/remove.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * remove.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-#ifndef _PM_REMOVE_H
-#define _PM_REMOVE_H
-
-#include <alpm_list.h>
-
-int pacman_remove(alpm_list_t *targets);
-
-#endif /* _PM_REMOVE_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index ca95fe63..77939623 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -1,8 +1,8 @@
/*
* sync.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
+ * Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -24,16 +24,9 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sys/stat.h>
-#if defined(__APPLE__) || defined(__OpenBSD__)
-#include <sys/syslimits.h>
-#endif
+#include <limits.h>
#include <unistd.h>
#include <dirent.h>
-#include <libintl.h>
-#ifdef CYGWIN
-#include <limits.h> /* PATH_MAX */
-#endif
#include <alpm.h>
#include <alpm_list.h>
@@ -42,158 +35,163 @@
* remove it from Makefile.am on the pacman side */
/* pacman */
-#include "sync.h"
+#include "pacman.h"
#include "util.h"
-#include "log.h"
-#include "downloadprog.h"
#include "package.h"
-#include "trans.h"
+#include "callback.h"
#include "conf.h"
-extern config_t *config;
+extern pmdb_t *db_local;
-/* splits package name into its respective parts */
-static int split_pkgname(char *target, char *name, char *version)
-{
- char tmp[512];
- char *p, *q;
+static int sync_cleandb(const char *dbpath) {
+ DIR *dir;
+ struct dirent *ent;
- if(target == NULL) {
- return(-1);
+ dir = opendir(dbpath);
+ if(dir == NULL) {
+ fprintf(stderr, _("error: could not access database directory\n"));
+ return(1);
}
- /* trim path name (if any) */
- if((p = strrchr(target, '/')) == NULL) {
- p = target;
- } else {
- p++;
- }
- strncpy(tmp, p, 512);
- /* trim file extension (if any) */
- if((p = strstr(tmp, PM_EXT_PKG))) {
- *p = '\0';
- }
- /* trim architecture */
- if((p = alpm_pkg_name_hasarch(tmp))) {
- *p = '\0';
- }
+ rewinddir(dir);
+ /* step through the directory one file at a time */
+ while((ent = readdir(dir)) != NULL) {
+ char path[PATH_MAX];
+ alpm_list_t *syncdbs = NULL, *i;
+ int found = 0;
+ char *dname = ent->d_name;
+
+ if(!strcmp(dname, ".") || !strcmp(dname, "..")) {
+ continue;
+ }
+ /* skip the local and sync directories */
+ if(!strcmp(dname, "sync") || !strcmp(dname, "local")) {
+ continue;
+ }
+ syncdbs = alpm_option_get_syncdbs();
+ for(i = syncdbs; i && !found; i = alpm_list_next(i)) {
+ pmdb_t *db = alpm_list_getdata(i);
+ found = !strcmp(dname, alpm_db_get_name(db));
+ }
+
+ /* We have a directory that doesn't match any syncdb.
+ * Ask the user if he wants to remove it. */
+ if(!found) {
+ /* build the full path */
+ snprintf(path, PATH_MAX, "%s%s", dbpath, ent->d_name);
+
+ if(!yesno(_("Do you want to remove %s? [Y/n] "), path)) {
+ continue;
+ }
- p = tmp + strlen(tmp);
+ if(rmrf(path)) {
+ fprintf(stderr, _("error: could not remove repository directory\n"));
+ return(1);
+ }
+ }
- for(q = --p; *q && *q != '-'; q--);
- if(*q != '-' || q == tmp) {
- return(-1);
}
- for(p = --q; *p && *p != '-'; p--);
- if(*p != '-' || p == tmp) {
- return(-1);
+ return(0);
+}
+
+static int sync_cleandb_all(void) {
+ const char *dbpath = alpm_option_get_dbpath();
+ char newdbpath[PATH_MAX];
+
+ printf(_("Database directory: %s\n"), dbpath);
+ if(!yesno(_("Do you want to remove unused repositories? [Y/n] "))) {
+ return(0);
}
- strncpy(version, p+1, 64);
- *p = '\0';
+ /* The sync dbs were previously put in dbpath, but are now in dbpath/sync,
+ * so we will clean both directories */
+ sync_cleandb(dbpath);
- strncpy(name, tmp, 256);
+ sprintf(newdbpath, "%s%s", dbpath, "sync/");
+ sync_cleandb(newdbpath);
+ printf(_("Database directory cleaned up\n"));
return(0);
}
static int sync_cleancache(int level)
{
- const char *root, *cachedir;
- char dirpath[PATH_MAX];
-
- root = alpm_option_get_root();
- cachedir = alpm_option_get_cachedir();
-
- snprintf(dirpath, PATH_MAX, "%s%s", root, cachedir);
+ /* TODO for now, just mess with the first cache directory */
+ alpm_list_t* cachedirs = alpm_option_get_cachedirs();
+ const char *cachedir = alpm_list_getdata(cachedirs);
if(level == 1) {
- /* incomplete cleanup: we keep latest packages and partial downloads */
+ /* incomplete cleanup */
DIR *dir;
struct dirent *ent;
- alpm_list_t *cache = NULL, *clean = NULL, *i, *j;
-
- if(!yesno(_("Do you want to remove old packages from cache? [Y/n] ")))
+ /* Let's vastly improve the way this is done. Before, we went by package
+ * name. Instead, let's only keep packages we have installed. Open up each
+ * package and see if it has an entry in the local DB; if not, delete it.
+ */
+ printf(_("Cache directory: %s\n"), cachedir);
+ if(!yesno(_("Do you want to remove uninstalled packages from cache? [Y/n] "))) {
return(0);
- MSG(NL, _("removing old packages from cache... "));
- dir = opendir(dirpath);
+ }
+ printf(_("removing old packages from cache... "));
+
+ dir = opendir(cachedir);
if(dir == NULL) {
- ERR(NL, _("could not access cache directory\n"));
+ fprintf(stderr, _("error: could not access cache directory\n"));
return(1);
}
+
rewinddir(dir);
+ /* step through the directory one file at a time */
while((ent = readdir(dir)) != NULL) {
+ char path[PATH_MAX];
+ pmpkg_t *localpkg = NULL, *dbpkg = NULL;
+
if(!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, "..")) {
continue;
}
- cache = alpm_list_add(cache, strdup(ent->d_name));
- }
- closedir(dir);
-
- for(i = cache; i; i = alpm_list_next(i)) {
- char *str = alpm_list_getdata(i);
- char name[256], version[64];
+ /* build the full filepath */
+ snprintf(path, PATH_MAX, "%s/%s", cachedir, ent->d_name);
- if(strstr(str, PM_EXT_PKG) == NULL) {
- clean = alpm_list_add(clean, strdup(str));
- continue;
- }
- /* we keep partially downloaded files */
- if(strstr(str, PM_EXT_PKG ".part")) {
- continue;
- }
- if(split_pkgname(str, name, version) != 0) {
- clean = alpm_list_add(clean, strdup(str));
+ /* attempt to load the package, skip file on failures as we may have
+ * files here that aren't valid packages. we also don't need a full
+ * load of the package, just the metadata. */
+ if(alpm_pkg_load(path, 0, &localpkg) != 0 || localpkg == NULL) {
continue;
}
- for(j = alpm_list_next(i); j; j = alpm_list_next(j)) {
- char *s = alpm_list_getdata(j);
- char n[256], v[64];
-
- if(strstr(s, PM_EXT_PKG) == NULL) {
- continue;
- }
- if(strstr(s, PM_EXT_PKG ".part")) {
- continue;
- }
- if(split_pkgname(s, n, v) != 0) {
- continue;
- }
- /* TODO Do not remove the currently installed version EITHER */
- if(!strcmp(name, n)) {
- char *ptr = (alpm_pkg_vercmp(version, v) < 0) ? str : s;
- if(!alpm_list_find_str(clean, ptr)) {
- clean = alpm_list_add(clean, strdup(ptr));
- }
- }
+ /* check if this package is in the local DB */
+ dbpkg = alpm_db_get_pkg(db_local, alpm_pkg_get_name(localpkg));
+ if(dbpkg == NULL) {
+ /* delete package, not present in local DB */
+ unlink(path);
+ } else if(alpm_pkg_vercmp(alpm_pkg_get_version(localpkg),
+ alpm_pkg_get_version(dbpkg)) != 0) {
+ /* delete package, it was found but version differs */
+ unlink(path);
}
+ /* else version was the same, so keep the package */
+ /* free the local file package */
+ alpm_pkg_free(localpkg);
}
- FREELIST(cache);
-
- for(i = clean; i; i = alpm_list_next(i)) {
- char path[PATH_MAX];
-
- snprintf(path, PATH_MAX, "%s/%s", dirpath, (char *)alpm_list_getdata(i));
- unlink(path);
- }
- FREELIST(clean);
+ printf(_("done.\n"));
} else {
/* full cleanup */
- if(!yesno(_("Do you want to remove all packages from cache? [Y/n] ")))
+ printf(_("Cache directory: %s\n"), cachedir);
+ if(!yesno(_("Do you want to remove ALL packages from cache? [Y/n] "))) {
return(0);
- MSG(NL, _("removing all packages from cache... "));
+ }
+ printf(_("removing all packages from cache... "));
- if(rmrf(dirpath)) {
- ERR(NL, _("could not remove cache directory\n"));
+ if(rmrf(cachedir)) {
+ fprintf(stderr, _("error: could not remove cache directory\n"));
return(1);
}
- if(makepath(dirpath)) {
- ERR(NL, _("could not create new cache directory\n"));
+ if(makepath(cachedir)) {
+ fprintf(stderr, _("error: could not create new cache directory\n"));
return(1);
}
+ printf(_("done.\n"));
}
- MSG(CL, _("done.\n"));
return(0);
}
@@ -215,12 +213,14 @@ static int sync_synctree(int level, alpm_list_t *syncs)
* Yes. This will be here until we add a nice pacman "pm_errstr" or
* something, OR add all libdownload error codes into the pm_error enum
*/
- ERR(NL, _("failed to synchronize %s: %s\n"), alpm_db_get_name(db), downloadLastErrString);
+ fprintf(stderr, _("error: failed to synchronize %s: %s\n"),
+ alpm_db_get_name(db), downloadLastErrString);
} else {
- ERR(NL, _("failed to update %s (%s)\n"), alpm_db_get_name(db), alpm_strerror(pm_errno));
+ fprintf(stderr, _("error: failed to update %s (%s)\n"),
+ alpm_db_get_name(db), alpm_strerrorlast());
}
} else if(ret == 1) {
- MSG(NL, _(" %s is up to date\n"), alpm_db_get_name(db));
+ printf(_(" %s is up to date\n"), alpm_db_get_name(db));
success++;
} else {
success++;
@@ -234,48 +234,68 @@ static int sync_synctree(int level, alpm_list_t *syncs)
return(success > 0);
}
+/* search the sync dbs for a matching package */
static int sync_search(alpm_list_t *syncs, alpm_list_t *targets)
{
alpm_list_t *i, *j, *ret;
+ int freelist;
+ int found = 0;
for(i = syncs; i; i = alpm_list_next(i)) {
- pmdb_t *db = (pmdb_t *)alpm_list_getdata(i);
+ pmdb_t *db = alpm_list_getdata(i);
+ /* if we have a targets list, search for packages matching it */
if(targets) {
ret = alpm_db_search(db, targets);
- if(ret == NULL) {
- continue;
- }
- for(j = ret; j; j = alpm_list_next(j)) {
- char *group = NULL;
- alpm_list_t *grp;
- pmpkg_t *pkg = alpm_list_getdata(j);
+ freelist = 1;
+ } else {
+ ret = alpm_db_getpkgcache(db);
+ freelist = 0;
+ }
+ if(ret == NULL) {
+ continue;
+ } else {
+ found = 1;
+ }
+ for(j = ret; j; j = alpm_list_next(j)) {
+ /* print repo/name (group) info about each package in our list */
+ char *group = NULL;
+ alpm_list_t *grp;
+ pmpkg_t *pkg = alpm_list_getdata(j);
+ if (!config->quiet) {
printf("%s/%s %s", alpm_db_get_name(db), alpm_pkg_get_name(pkg),
- alpm_pkg_get_version(pkg));
+ alpm_pkg_get_version(pkg));
+ } else {
+ printf("%s", alpm_pkg_get_name(pkg));
+ }
+
+ /* print the package size with the output if ShowSize option set */
+ if(config->showsize) {
+ /* Convert byte size to MB */
+ double mbsize = alpm_pkg_get_size(pkg) / (1024.0 * 1024.0);
+
+ printf(" [%.2f MB]", mbsize);
+ }
+ if (!config->quiet) {
if((grp = alpm_pkg_get_groups(pkg)) != NULL) {
- group = alpm_list_getdata(grp);
- printf(" (%s)\n ", (char *)alpm_list_getdata(grp));
- } else {
- printf("\n ");
+ group = alpm_list_getdata(grp);
+ printf(" (%s)", (char *)alpm_list_getdata(grp));
}
-
- indentprint(alpm_pkg_get_desc(pkg), 4);
- printf("\n");
- }
- alpm_list_free(ret);
- } else {
- for(j = alpm_db_getpkgcache(db); j; j = alpm_list_next(j)) {
- pmpkg_t *pkg = alpm_list_getdata(j);
- MSG(NL, "%s/%s %s\n ", alpm_db_get_name(db), alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
+ /* we need a newline and initial indent first */
+ printf("\n ");
indentprint(alpm_pkg_get_desc(pkg), 4);
- MSG(NL, "\n");
}
+ printf("\n");
+ }
+ /* we only want to free if the list was a search list */
+ if(freelist) {
+ alpm_list_free(ret);
}
}
- return(0);
+ return(!found);
}
static int sync_group(int level, alpm_list_t *syncs, alpm_list_t *targets)
@@ -291,7 +311,7 @@ static int sync_group(int level, alpm_list_t *syncs, alpm_list_t *targets)
if(grp) {
/* TODO this should be a lot cleaner, why two outputs? */
- MSG(NL, "%s\n", (char *)alpm_grp_get_name(grp));
+ printf("%s\n", (char *)alpm_grp_get_name(grp));
list_display(" ", alpm_grp_get_pkgs(grp));
}
}
@@ -303,7 +323,7 @@ static int sync_group(int level, alpm_list_t *syncs, alpm_list_t *targets)
for(j = alpm_db_getgrpcache(db); j; j = alpm_list_next(j)) {
pmgrp_t *grp = alpm_list_getdata(j);
- MSG(NL, "%s\n", (char *)alpm_grp_get_name(grp));
+ printf("%s\n", (char *)alpm_grp_get_name(grp));
if(grp && level > 1) {
list_display(" ", alpm_grp_get_pkgs(grp));
}
@@ -317,6 +337,7 @@ static int sync_group(int level, alpm_list_t *syncs, alpm_list_t *targets)
static int sync_info(alpm_list_t *syncs, alpm_list_t *targets)
{
alpm_list_t *i, *j, *k;
+ int ret = 0;
if(targets) {
for(i = targets; i; i = alpm_list_next(i)) {
@@ -340,29 +361,29 @@ static int sync_info(alpm_list_t *syncs, alpm_list_t *targets)
}
db = NULL;
}
-
+
if(!db) {
- ERR(NL, _("repository '%s' does not exist\n"), repo);
+ fprintf(stderr, _("error: repository '%s' does not exist\n"), repo);
return(1);
}
-
+
for(k = alpm_db_getpkgcache(db); k; k = alpm_list_next(k)) {
pmpkg_t *pkg = alpm_list_getdata(k);
if(strcmp(alpm_pkg_get_name(pkg), pkgstr) == 0) {
dump_pkg_sync(pkg, alpm_db_get_name(db));
- MSG(NL, "\n");
foundpkg = 1;
break;
}
}
-
+
if(!foundpkg) {
- ERR(NL, _("package '%s' was not found in repository '%s'\n"), pkgstr, repo);
+ fprintf(stderr, _("error: package '%s' was not found in repository '%s'\n"), pkgstr, repo);
+ ret++;
}
} else {
pkgstr = target;
-
+
for(j = syncs; j; j = alpm_list_next(j)) {
pmdb_t *db = alpm_list_getdata(j);
@@ -371,29 +392,28 @@ static int sync_info(alpm_list_t *syncs, alpm_list_t *targets)
if(strcmp(alpm_pkg_get_name(pkg), pkgstr) == 0) {
dump_pkg_sync(pkg, alpm_db_get_name(db));
- MSG(NL, "\n");
foundpkg = 1;
break;
}
}
}
if(!foundpkg) {
- ERR(NL, _("package '%s' was not found\n"), pkgstr);
+ fprintf(stderr, _("error: package '%s' was not found\n"), pkgstr);
+ ret++;
}
}
}
} else {
for(i = syncs; i; i = alpm_list_next(i)) {
pmdb_t *db = alpm_list_getdata(i);
-
+
for(j = alpm_db_getpkgcache(db); j; j = alpm_list_next(j)) {
dump_pkg_sync(alpm_list_getdata(j), alpm_db_get_name(db));
- MSG(NL, "\n");
}
}
}
- return(0);
+ return(ret);
}
static int sync_list(alpm_list_t *syncs, alpm_list_t *targets)
@@ -415,7 +435,7 @@ static int sync_list(alpm_list_t *syncs, alpm_list_t *targets)
}
if(db == NULL) {
- ERR(NL, _("repository \"%s\" was not found.\n"),repo);
+ fprintf(stderr, _("error: repository \"%s\" was not found.\n"),repo);
alpm_list_free(ls);
return(1);
}
@@ -431,7 +451,12 @@ static int sync_list(alpm_list_t *syncs, alpm_list_t *targets)
for(j = alpm_db_getpkgcache(db); j; j = alpm_list_next(j)) {
pmpkg_t *pkg = alpm_list_getdata(j);
- MSG(NL, "%s %s %s\n", alpm_db_get_name(db), alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
+ if (!config->quiet) {
+ printf("%s %s %s\n", alpm_db_get_name(db), alpm_pkg_get_name(pkg),
+ alpm_pkg_get_version(pkg));
+ } else {
+ printf("%s\n", alpm_pkg_get_name(pkg));
+ }
}
}
@@ -442,99 +467,82 @@ static int sync_list(alpm_list_t *syncs, alpm_list_t *targets)
return(0);
}
-int pacman_sync(alpm_list_t *targets)
+int sync_trans(alpm_list_t *targets, int sync_only)
{
- int confirm = 0;
int retval = 0;
- alpm_list_t *packages, *data = NULL, *i, *j, *k, *sync_dbs;
-
- sync_dbs = alpm_option_get_syncdbs();
- if(sync_dbs == NULL || alpm_list_count(sync_dbs) == 0) {
- ERR(NL, _("no usable package repositories configured.\n"));
- return(1);
- }
-
- if(config->op_s_clean) {
- return(sync_cleancache(config->op_s_clean));
- }
-
- if(config->op_s_search) {
- return(sync_search(sync_dbs, targets));
- }
-
- if(config->group) {
- return(sync_group(config->group, sync_dbs, targets));
- }
-
- if(config->op_s_info) {
- return(sync_info(sync_dbs, targets));
- }
-
- if(config->op_q_list) {
- return(sync_list(sync_dbs, targets));
- }
-
- /* Step 1: create a new transaction...
- */
- if(alpm_trans_init(PM_TRANS_TYPE_SYNC, config->flags, cb_trans_evt, cb_trans_conv, cb_trans_progress) == -1) {
- ERR(NL, _("failed to init transaction (%s)\n"), alpm_strerror(pm_errno));
+ alpm_list_t *data = NULL;
+ alpm_list_t *sync_dbs = alpm_option_get_syncdbs();
+
+ /* Step 1: create a new transaction... */
+ if(alpm_trans_init(PM_TRANS_TYPE_SYNC, config->flags, cb_trans_evt,
+ cb_trans_conv, cb_trans_progress) == -1) {
+ fprintf(stderr, _("error: failed to init transaction (%s)\n"),
+ alpm_strerrorlast());
if(pm_errno == PM_ERR_HANDLE_LOCK) {
- MSG(NL, _(" if you're sure a package manager is not already running,\n"
- " you can remove %s%s\n"), alpm_option_get_root(), PM_LOCK);
+ printf(_(" if you're sure a package manager is not already\n"
+ " running, you can remove %s.\n"), alpm_option_get_lockfile());
}
return(1);
}
if(config->op_s_sync) {
/* grab a fresh package list */
- MSG(NL, _(":: Synchronizing package databases...\n"));
- alpm_logaction(_("synchronizing package lists"));
+ printf(_(":: Synchronizing package databases...\n"));
+ alpm_logaction("synchronizing package lists\n");
if(!sync_synctree(config->op_s_sync, sync_dbs)) {
- ERR(NL, _("failed to synchronize any databases"));
- return(1);
+ fprintf(stderr, _("error: failed to synchronize any databases\n"));
+ retval = 1;
+ goto cleanup;
+ }
+ if(sync_only) {
+ goto cleanup;
}
}
if(config->op_s_upgrade) {
- MSG(NL, _(":: Starting full system upgrade...\n"));
- alpm_logaction(_("starting full system upgrade"));
+ alpm_list_t *pkgs, *i;
+
+ printf(_(":: Starting full system upgrade...\n"));
+ alpm_logaction("starting full system upgrade\n");
if(alpm_trans_sysupgrade() == -1) {
- ERR(NL, "%s\n", alpm_strerror(pm_errno));
+ fprintf(stderr, _("error: %s\n"), alpm_strerrorlast());
retval = 1;
goto cleanup;
}
- /* check if pacman itself is one of the packages to upgrade. If so, we
- * we should upgrade ourselves first and then re-exec as the new version.
- *
+ /* check if pacman itself is one of the packages to upgrade.
* this can prevent some of the "syntax error" problems users can have
* when sysupgrade'ing with an older version of pacman.
*/
- data = alpm_trans_get_pkgs();
- for(i = data; i; i = alpm_list_next(i)) {
+ pkgs = alpm_trans_get_pkgs();
+ for(i = pkgs; i; i = alpm_list_next(i)) {
pmsyncpkg_t *sync = alpm_list_getdata(i);
pmpkg_t *spkg = alpm_sync_get_pkg(sync);
- if(strcmp("pacman", alpm_pkg_get_name(spkg)) == 0 && alpm_list_count(data) > 1) {
- MSG(NL, _("\n:: pacman has detected a newer version of the \"pacman\" package.\n"));
- MSG(NL, _(":: It is recommended that you allow pacman to upgrade itself\n"));
- MSG(NL, _(":: first, then you can re-run the operation with the newer version.\n"));
- MSG(NL, "::\n");
- if(yesno(_(":: Upgrade pacman first? [Y/n] "))) {
+ /* TODO pacman name should probably not be hardcoded. In addition, we
+ * have problems on an -Syu if pacman has to pull in deps, so recommend
+ * an '-S pacman' operation */
+ if(strcmp("pacman", alpm_pkg_get_name(spkg)) == 0) {
+ printf("\n");
+ printf(_(":: pacman has detected a newer version of itself.\n"
+ ":: It is recommended that you upgrade pacman by itself\n"
+ ":: using 'pacman -S pacman', and then rerun the current\n"
+ ":: operation. If you wish to continue the operation and\n"
+ ":: not upgrade pacman separately, answer no.\n"));
+ if(yesno(_(":: Cancel current operation? [Y/n] "))) {
if(alpm_trans_release() == -1) {
- ERR(NL, _("failed to release transaction (%s)\n"), alpm_strerror(pm_errno));
+ fprintf(stderr, _("error: failed to release transaction (%s)\n"),
+ alpm_strerrorlast());
retval = 1;
goto cleanup;
}
- if(alpm_trans_init(PM_TRANS_TYPE_SYNC, config->flags, cb_trans_evt, cb_trans_conv, cb_trans_progress) == -1) {
- ERR(NL, _("failed to init transaction (%s)\n"), alpm_strerror(pm_errno));
- if(pm_errno == PM_ERR_HANDLE_LOCK) {
- MSG(NL, _(" if you're sure a package manager is not already running,\n"
- " you can remove %s%s\n"), alpm_option_get_root(), PM_LOCK);
- }
+ if(alpm_trans_init(PM_TRANS_TYPE_SYNC, config->flags,
+ cb_trans_evt, cb_trans_conv, cb_trans_progress) == -1) {
+ fprintf(stderr, _("error: failed to init transaction (%s)\n"),
+ alpm_strerrorlast());
return(1);
}
if(alpm_trans_addtarget("pacman") == -1) {
- ERR(NL, _("pacman: %s\n"), alpm_strerror(pm_errno));
+ fprintf(stderr, _("error: pacman: %s\n"), alpm_strerrorlast());
retval = 1;
goto cleanup;
}
@@ -543,31 +551,39 @@ int pacman_sync(alpm_list_t *targets)
}
}
} else {
+ alpm_list_t *i;
+
/* process targets */
for(i = targets; i; i = alpm_list_next(i)) {
char *targ = alpm_list_getdata(i);
if(alpm_trans_addtarget(targ) == -1) {
pmgrp_t *grp = NULL;
int found=0;
+ alpm_list_t *j;
+
if(pm_errno == PM_ERR_TRANS_DUP_TARGET) {
/* just ignore duplicate targets */
continue;
}
if(pm_errno != PM_ERR_PKG_NOT_FOUND) {
- ERR(NL, "'%s': %s\n", (char *)i->data, alpm_strerror(pm_errno));
+ fprintf(stderr, _("error: '%s': %s\n"),
+ (char *)i->data, alpm_strerrorlast());
retval = 1;
goto cleanup;
}
/* target not found: check if it's a group */
-
- for(j = alpm_option_get_syncdbs(); j; j = alpm_list_next(j)) {
+
+ for(j = sync_dbs; j; j = alpm_list_next(j)) {
pmdb_t *db = alpm_list_getdata(j);
grp = alpm_db_readgrp(db, targ);
if(grp) {
+ alpm_list_t *k;
+
found++;
- MSG(NL, _(":: group %s:\n"), targ);
+ printf(_(":: group %s:\n"), targ);
/* remove dupe entries in case a package exists in multiple repos */
- alpm_list_t *pkgs = alpm_list_remove_dupes(alpm_grp_get_pkgs(grp));
+ const alpm_list_t *grppkgs = alpm_grp_get_pkgs(grp);
+ alpm_list_t *pkgs = alpm_list_remove_dupes(grppkgs);
list_display(" ", pkgs);
if(yesno(_(":: Install whole content? [Y/n] "))) {
for(k = pkgs; k; k = alpm_list_next(k)) {
@@ -585,108 +601,70 @@ int pacman_sync(alpm_list_t *targets)
}
}
if(!found) {
- /* targ not found in sync db, searching for providers... */
- const char *pname = NULL;
- for(j = alpm_option_get_syncdbs(); j; j = alpm_list_next(j)) {
- pmdb_t *db = alpm_list_getdata(j);
- alpm_list_t *prov = alpm_db_whatprovides(db, targ);
- if(prov) {
- pmpkg_t *pkg = alpm_list_getdata(prov);
- pname = alpm_pkg_get_name(pkg);
- break;
- }
- }
- if(pname != NULL) {
- /* targ is provided by pname */
- targets = alpm_list_add(targets, strdup(pname));
- } else {
- ERR(NL, _("'%s': not found in sync db\n"), targ);
- retval = 1;
- goto cleanup;
- }
+ fprintf(stderr, _("error: '%s': not found in sync db\n"), targ);
+ retval = 1;
+ goto cleanup;
}
}
}
}
- /* Step 2: "compute" the transaction based on targets and flags
- */
+ /* Step 2: "compute" the transaction based on targets and flags */
if(alpm_trans_prepare(&data) == -1) {
- long long *pkgsize, *freespace;
- ERR(NL, _("failed to prepare transaction (%s)\n"), alpm_strerror(pm_errno));
+ fprintf(stderr, _("error: failed to prepare transaction (%s)\n"),
+ alpm_strerrorlast());
switch(pm_errno) {
+ alpm_list_t *i;
case PM_ERR_UNSATISFIED_DEPS:
for(i = data; i; i = alpm_list_next(i)) {
pmdepmissing_t *miss = alpm_list_getdata(i);
- MSG(NL, ":: %s %s %s", alpm_dep_get_target(miss), _("requires"),
- alpm_dep_get_name(miss));
- switch(alpm_dep_get_mod(miss)) {
- case PM_DEP_MOD_ANY:
- break;
- case PM_DEP_MOD_EQ:
- MSG(CL, "=%s", alpm_dep_get_version(miss));
- break;
- case PM_DEP_MOD_GE:
- MSG(CL, ">=%s", alpm_dep_get_version(miss));
- break;
- case PM_DEP_MOD_LE:
- MSG(CL, "<=%s", alpm_dep_get_version(miss));
- break;
- }
- MSG(CL, "\n");
+ pmdepend_t *dep = alpm_miss_get_dep(miss);
+ char *depstring = alpm_dep_get_string(dep);
+ printf(_(":: %s: requires %s\n"), alpm_miss_get_target(miss),
+ depstring);
+ free(depstring);
}
- break;
+ break;
case PM_ERR_CONFLICTING_DEPS:
for(i = data; i; i = alpm_list_next(i)) {
- pmdepmissing_t *miss = alpm_list_getdata(i);
-
- MSG(NL, _(":: %s: conflicts with %s"),
- alpm_dep_get_target(miss), alpm_dep_get_name(miss));
+ pmconflict_t *conflict = alpm_list_getdata(i);
+ printf(_(":: %s: conflicts with %s\n"),
+ alpm_conflict_get_package1(conflict), alpm_conflict_get_package2(conflict));
}
- break;
- case PM_ERR_DISK_FULL:
- pkgsize = alpm_list_getdata(data);
- freespace = alpm_list_getdata(alpm_list_next(data));
- MSG(NL, _(":: %.1f MB required, have %.1f MB"),
- (double)(*pkgsize / 1048576.0), (double)(*freespace / 1048576.0));
- break;
+ break;
default:
- break;
+ break;
}
retval = 1;
goto cleanup;
}
- packages = alpm_trans_get_pkgs();
+ alpm_list_t *packages = alpm_trans_get_pkgs();
if(packages == NULL) {
/* nothing to do: just exit without complaining */
- MSG(NL, _(" local database is up to date\n"));
+ printf(_(" local database is up to date\n"));
goto cleanup;
}
if(!(alpm_trans_get_flags() & PM_TRANS_FLAG_PRINTURIS)) {
- display_targets(packages);
+ int confirm;
+
+ display_targets(packages, db_local);
+ printf("\n");
if(config->op_s_downloadonly) {
if(config->noconfirm) {
- MSG(NL, _("\nBeginning download...\n"));
+ printf(_("Beginning download...\n"));
confirm = 1;
} else {
- MSG(NL, "\n");
confirm = yesno(_("Proceed with download? [Y/n] "));
}
} else {
- /* don't get any confirmation if we're called from makepkg */
- if(config->op_d_resolve) {
+ if(config->noconfirm) {
+ printf(_("Beginning upgrade process...\n"));
confirm = 1;
} else {
- if(config->noconfirm) {
- MSG(NL, _("\nBeginning upgrade process...\n"));
- confirm = 1;
- } else {
- MSG(NL, "\n");
- confirm = yesno(_("Proceed with installation? [Y/n] "));
- }
+ confirm = yesno(_("Proceed with installation? [Y/n] "));
}
}
if(!confirm) {
@@ -694,55 +672,115 @@ int pacman_sync(alpm_list_t *targets)
}
}/* else 'print uris' requested. We're done at this point */
- /* Step 3: actually perform the installation
- */
+ /* Step 3: actually perform the installation */
if(alpm_trans_commit(&data) == -1) {
- ERR(NL, _("failed to commit transaction (%s)\n"), alpm_strerror(pm_errno));
+ fprintf(stderr, _("error: failed to commit transaction (%s)\n"),
+ alpm_strerrorlast());
switch(pm_errno) {
- case PM_ERR_FILE_CONFLICTS:
- for(i = data; i; i = alpm_list_next(i)) {
- pmconflict_t *conflict = alpm_list_getdata(i);
- switch(alpm_conflict_get_type(conflict)) {
- case PM_CONFLICT_TYPE_TARGET:
- MSG(NL, _("%s exists in both '%s' and '%s'\n"),
- alpm_conflict_get_file(conflict),
- alpm_conflict_get_target(conflict),
- alpm_conflict_get_ctarget(conflict));
- break;
- case PM_CONFLICT_TYPE_FILE:
- MSG(NL, _("%s: %s exists in filesystem\n"),
- alpm_conflict_get_target(conflict),
- alpm_conflict_get_file(conflict));
- break;
+ alpm_list_t *i;
+ case PM_ERR_FILE_CONFLICTS:
+ for(i = data; i; i = alpm_list_next(i)) {
+ pmfileconflict_t *conflict = alpm_list_getdata(i);
+ switch(alpm_fileconflict_get_type(conflict)) {
+ case PM_FILECONFLICT_TARGET:
+ printf(_("%s exists in both '%s' and '%s'\n"),
+ alpm_fileconflict_get_file(conflict),
+ alpm_fileconflict_get_target(conflict),
+ alpm_fileconflict_get_ctarget(conflict));
+ break;
+ case PM_FILECONFLICT_FILESYSTEM:
+ printf(_("%s: %s exists in filesystem\n"),
+ alpm_fileconflict_get_target(conflict),
+ alpm_fileconflict_get_file(conflict));
+ break;
+ }
}
- }
- MSG(NL, _("\nerrors occurred, no packages were upgraded.\n"));
- break;
- case PM_ERR_PKG_CORRUPTED:
- for(i = data; i; i = alpm_list_next(i)) {
- MSG(NL, "%s", (char*)alpm_list_getdata(i));
- }
- MSG(NL, _("\nerrors occurred, no packages were upgraded.\n"));
- break;
- default:
- break;
+ break;
+ case PM_ERR_PKG_CORRUPTED:
+ for(i = data; i; i = alpm_list_next(i)) {
+ printf("%s", (char*)alpm_list_getdata(i));
+ }
+ break;
+ default:
+ break;
}
+ /* TODO: stderr? */
+ printf(_("Errors occurred, no packages were upgraded.\n"));
retval = 1;
goto cleanup;
}
- /* Step 4: release transaction resources
- */
+ /* Step 4: release transaction resources */
cleanup:
if(data) {
+ alpm_list_free_inner(data, free);
alpm_list_free(data);
}
if(alpm_trans_release() == -1) {
- ERR(NL, _("failed to release transaction (%s)\n"), alpm_strerror(pm_errno));
+ fprintf(stderr, _("error: failed to release transaction (%s)\n"),
+ alpm_strerrorlast());
retval = 1;
}
return(retval);
}
+int pacman_sync(alpm_list_t *targets)
+{
+ alpm_list_t *sync_dbs = NULL;
+ int sync_only = 0;
+
+ /* clean the cache */
+ if(config->op_s_clean) {
+ int ret = sync_cleancache(config->op_s_clean);
+ ret += sync_cleandb_all();
+ return(ret);
+ }
+
+ /* ensure we have at least one valid sync db set up */
+ sync_dbs = alpm_option_get_syncdbs();
+ if(sync_dbs == NULL || alpm_list_count(sync_dbs) == 0) {
+ pm_printf(PM_LOG_ERROR, _("no usable package repositories configured.\n"));
+ return(1);
+ }
+
+ if(config->op_s_search || config->group
+ || config->op_s_info || config->op_q_list) {
+ sync_only = 1;
+ } else if(targets == NULL && !(config->op_s_sync || config->op_s_upgrade)) {
+ /* don't proceed here unless we have an operation that doesn't require
+ * a target list */
+ pm_printf(PM_LOG_ERROR, _("no targets specified (use -h for help)\n"));
+ return(1);
+ }
+
+ if(needs_transaction()) {
+ if(sync_trans(targets, sync_only) == 1) {
+ return(1);
+ }
+ }
+
+ /* search for a package */
+ if(config->op_s_search) {
+ return(sync_search(sync_dbs, targets));
+ }
+
+ /* look for groups */
+ if(config->group) {
+ return(sync_group(config->group, sync_dbs, targets));
+ }
+
+ /* get package info */
+ if(config->op_s_info) {
+ return(sync_info(sync_dbs, targets));
+ }
+
+ /* get a listing of files in sync DBs */
+ if(config->op_q_list) {
+ return(sync_list(sync_dbs, targets));
+ }
+
+ return(0);
+}
+
/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/sync.h b/src/pacman/sync.h
deleted file mode 100644
index 7175577f..00000000
--- a/src/pacman/sync.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * sync.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-#ifndef _PM_SYNC_H
-#define _PM_SYNC_H
-
-#include <alpm_list.h>
-
-int pacman_sync(alpm_list_t *targets);
-
-#endif /* _PM_SYNC_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/trans.c b/src/pacman/trans.c
deleted file mode 100644
index 7f5c61c8..00000000
--- a/src/pacman/trans.c
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * trans.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <dirent.h>
-#include <libintl.h>
-#include <wchar.h>
-
-#include <alpm.h>
-
-/* pacman */
-#include "trans.h"
-#include "util.h"
-#include "log.h"
-#include "conf.h"
-
-#define LOG_STR_LEN 256
-
-extern config_t *config;
-
-static int prevpercent=0; /* for less progressbar output */
-
-/* Callback to handle transaction events
- */
-void cb_trans_evt(pmtransevt_t event, void *data1, void *data2)
-{
- char str[LOG_STR_LEN] = "";
-
- switch(event) {
- case PM_TRANS_EVT_CHECKDEPS_START:
- MSG(NL, _("checking dependencies... "));
- break;
- case PM_TRANS_EVT_FILECONFLICTS_START:
- if(config->noprogressbar) {
- MSG(NL, _("checking for file conflicts... "));
- }
- break;
- case PM_TRANS_EVT_CLEANUP_START:
- MSG(NL, _("cleaning up... "));
- break;
- case PM_TRANS_EVT_RESOLVEDEPS_START:
- MSG(NL, _("resolving dependencies... "));
- break;
- case PM_TRANS_EVT_INTERCONFLICTS_START:
- MSG(NL, _("looking for inter-conflicts... "));
- break;
- case PM_TRANS_EVT_FILECONFLICTS_DONE:
- if(config->noprogressbar) {
- MSG(CL, _("done.\n"));
- }
- break;
- case PM_TRANS_EVT_CHECKDEPS_DONE:
- case PM_TRANS_EVT_CLEANUP_DONE:
- case PM_TRANS_EVT_RESOLVEDEPS_DONE:
- case PM_TRANS_EVT_INTERCONFLICTS_DONE:
- MSG(CL, _("done.\n"));
- break;
- case PM_TRANS_EVT_EXTRACT_DONE:
- break;
- case PM_TRANS_EVT_ADD_START:
- if(config->noprogressbar) {
- MSG(NL, _("installing %s... "), alpm_pkg_get_name(data1));
- }
- break;
- case PM_TRANS_EVT_ADD_DONE:
- if(config->noprogressbar) {
- MSG(CL, _("done.\n"));
- }
- snprintf(str, LOG_STR_LEN, _("installed %s (%s)"),
- alpm_pkg_get_name(data1),
- alpm_pkg_get_version(data1));
- alpm_logaction(str);
- break;
- case PM_TRANS_EVT_REMOVE_START:
- if(config->noprogressbar) {
- MSG(NL, _("removing %s... "), alpm_pkg_get_name(data1));
- }
- break;
- case PM_TRANS_EVT_REMOVE_DONE:
- if(config->noprogressbar) {
- MSG(CL, _("done.\n"));
- }
- snprintf(str, LOG_STR_LEN, _("removed %s (%s)"),
- alpm_pkg_get_name(data1),
- alpm_pkg_get_version(data1));
- alpm_logaction(str);
- break;
- case PM_TRANS_EVT_UPGRADE_START:
- if(config->noprogressbar) {
- MSG(NL, _("upgrading %s... "), alpm_pkg_get_name(data1));
- }
- break;
- case PM_TRANS_EVT_UPGRADE_DONE:
- if(config->noprogressbar) {
- MSG(CL, _("done.\n"));
- }
- snprintf(str, LOG_STR_LEN, _("upgraded %s (%s -> %s)"),
- (char *)alpm_pkg_get_name(data1),
- (char *)alpm_pkg_get_version(data2),
- (char *)alpm_pkg_get_version(data1));
- alpm_logaction(str);
- break;
- case PM_TRANS_EVT_INTEGRITY_START:
- MSG(NL, _("checking package integrity... "));
- break;
- case PM_TRANS_EVT_INTEGRITY_DONE:
- MSG(CL, _("done.\n"));
- break;
- case PM_TRANS_EVT_SCRIPTLET_INFO:
- MSG(NL, "%s\n", (char*)data1);
- break;
- case PM_TRANS_EVT_SCRIPTLET_START:
- MSG(NL, (char*)data1);
- MSG(CL, "...");
- break;
- case PM_TRANS_EVT_SCRIPTLET_DONE:
- if(!(long)data1) {
- MSG(CL, _("done.\n"));
- } else {
- MSG(CL, _("failed.\n"));
- }
- break;
- case PM_TRANS_EVT_PRINTURI:
- MSG(NL, "%s/%s\n", (char*)data1, (char*)data2);
- break;
- case PM_TRANS_EVT_RETRIEVE_START:
- MSG(NL, _(":: Retrieving packages from %s...\n"), (char*)data1);
- fflush(stdout);
- break;
- }
-}
-
-void cb_trans_conv(pmtransconv_t event, void *data1, void *data2,
- void *data3, int *response)
-{
- char str[LOG_STR_LEN] = "";
-
- switch(event) {
- case PM_TRANS_CONV_INSTALL_IGNOREPKG:
- if(config->noask) {
- if(config->ask & PM_TRANS_CONV_INSTALL_IGNOREPKG) {
- *response = 1;
- } else {
- *response = 0;
- }
- } else if(data2) {
- /* TODO we take this route based on data2 being not null? WTF */
- snprintf(str, LOG_STR_LEN, _(":: %1$s requires %2$s from IgnorePkg. Install %2$s? [Y/n] "),
- alpm_pkg_get_name(data1),
- alpm_pkg_get_name(data2));
- *response = yesno(str);
- } else {
- snprintf(str, LOG_STR_LEN, _(":: %s is in IgnorePkg. Install anyway? [Y/n] "),
- alpm_pkg_get_name(data1));
- *response = yesno(str);
- }
- break;
- case PM_TRANS_CONV_REMOVE_HOLDPKG:
- if(config->noask) {
- if(config->ask & PM_TRANS_CONV_REMOVE_HOLDPKG) {
- *response = 1;
- } else {
- *response = 0;
- }
- } else {
- snprintf(str, LOG_STR_LEN, _(":: %s is designated as a HoldPkg. Remove anyway? [Y/n] "),
- alpm_pkg_get_name(data1));
- *response = yesno(str);
- }
- break;
- case PM_TRANS_CONV_REPLACE_PKG:
- if(config->noask) {
- if(config->ask & PM_TRANS_CONV_REPLACE_PKG) {
- *response = 1;
- } else {
- *response = 0;
- }
- } else {
- snprintf(str, LOG_STR_LEN, _(":: Replace %s with %s/%s? [Y/n] "),
- alpm_pkg_get_name(data1),
- (char *)data3,
- alpm_pkg_get_name(data2));
- *response = yesno(str);
- }
- break;
- case PM_TRANS_CONV_CONFLICT_PKG:
- if(config->noask) {
- if(config->ask & PM_TRANS_CONV_CONFLICT_PKG) {
- *response = 1;
- } else {
- *response = 0;
- }
- } else {
- snprintf(str, LOG_STR_LEN, _(":: %s conflicts with %s. Remove %s? [Y/n] "),
- (char *)data1,
- (char *)data2,
- (char *)data2);
- *response = yesno(str);
- }
- break;
- case PM_TRANS_CONV_LOCAL_NEWER:
- if(config->noask) {
- if(config->ask & PM_TRANS_CONV_LOCAL_NEWER) {
- *response = 1;
- } else {
- *response = 0;
- }
- } else {
- if(!config->op_s_downloadonly) {
- snprintf(str, LOG_STR_LEN, _(":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "),
- alpm_pkg_get_name(data1),
- alpm_pkg_get_version(data1));
- *response = yesno(str);
- } else {
- *response = 1;
- }
- }
- break;
- case PM_TRANS_CONV_LOCAL_UPTODATE:
- if(config->noask) {
- if(config->ask & PM_TRANS_CONV_LOCAL_UPTODATE) {
- *response = 1;
- } else {
- *response = 0;
- }
- } else {
- if(!config->op_s_downloadonly) {
- snprintf(str, LOG_STR_LEN, _(":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "),
- alpm_pkg_get_name(data1),
- alpm_pkg_get_version(data1));
- *response = yesno(str);
- } else {
- *response = 1;
- }
- }
- break;
- case PM_TRANS_CONV_CORRUPTED_PKG:
- if(config->noask) {
- if(config->ask & PM_TRANS_CONV_CORRUPTED_PKG) {
- *response = 1;
- } else {
- *response = 0;
- }
- } else {
- if(!config->noconfirm) {
- snprintf(str, LOG_STR_LEN, _(":: Archive %s is corrupted. Do you want to delete it? [Y/n] "),
- (char *)data1);
- *response = yesno(str);
- } else {
- *response = 1;
- }
- }
- break;
- }
-}
-
-void cb_trans_progress(pmtransprog_t event, const char *pkgname, int percent,
- int howmany, int remain)
-{
- float timediff;
-
- /* size of line to allocate for text printing (e.g. not progressbar) */
- const int infolen = 50;
- int tmp, digits, oprlen, textlen, pkglen;
- char *opr = NULL;
- wchar_t *wcopr = NULL;
-
- if(config->noprogressbar) {
- return;
- }
-
- /* XXX: big fat hack: due to the fact that we switch out printf/pm_fprintf,
- * not everything honors our 'neednl' newline hackery. This forces a newline
- * if we need one before drawing the progress bar */
- MSG(NL,NULL);
-
- if(percent == 0) {
- set_output_padding(1); /* turn on output padding with ' ' */
- timediff = get_update_timediff(1);
- } else {
- timediff = get_update_timediff(0);
- }
-
- if(percent > 0 && percent < 100 && !timediff) {
- /* only update the progress bar when
- * a) we first start
- * b) we end the progress
- * c) it has been long enough since the last call
- */
- return;
- }
-
- /* if no pkgname, percent is too high or unchanged, then return */
- if(!pkgname || percent == prevpercent) {
- return;
- }
-
- prevpercent=percent;
- /* set text of message to display */
- switch (event) {
- case PM_TRANS_PROGRESS_ADD_START:
- opr = _("installing");
- break;
- case PM_TRANS_PROGRESS_UPGRADE_START:
- opr = _("upgrading");
- break;
- case PM_TRANS_PROGRESS_REMOVE_START:
- opr = _("removing");
- break;
- case PM_TRANS_PROGRESS_CONFLICTS_START:
- opr = _("checking for file conflicts");
- break;
- }
- /* convert above strings to wide chars */
- oprlen = strlen(opr);
- wcopr = (wchar_t*)calloc(oprlen, sizeof(wchar_t));
- if(!wcopr) {
- fprintf(stderr, "malloc failure: could not allocate %d bytes\n",
- strlen(opr) * sizeof(wchar_t));
- }
- oprlen = mbstowcs(wcopr, opr, oprlen);
-
- /* find # of digits in package counts to scale output */
- digits = 1;
- tmp = howmany;
- while((tmp /= 10)) {
- ++digits;
- }
-
- /* determine room left for non-digits text [not ( 1/12) part] */
- textlen = infolen - 3 - (2 * digits);
- /* room left for package name */
- pkglen = textlen - oprlen - 1;
-
- switch (event) {
- case PM_TRANS_PROGRESS_ADD_START:
- case PM_TRANS_PROGRESS_UPGRADE_START:
- case PM_TRANS_PROGRESS_REMOVE_START:
- printf("(%2$*1$d/%3$*1$d) %4$s %6$-*5$.*5$s", digits, remain, howmany,
- opr, pkglen, pkgname);
- break;
- case PM_TRANS_PROGRESS_CONFLICTS_START:
- printf("(%2$*1$d/%3$*1$d) %5$-*4$s", digits, remain, howmany,
- textlen, opr);
- break;
- }
-
- free(wcopr);
-
- /* call refactored fill progress function */
- fill_progress(percent, getcols() - infolen);
-
- if(percent >= 100) {
- set_output_padding(0); /* restore padding */
- }
-
-}
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/util.c b/src/pacman/util.c
index 9c79cf5f..89313c83 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -1,8 +1,8 @@
/*
* util.c
- *
+ *
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,32 +15,27 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#include "config.h"
-#if defined(__APPLE__) || defined(__OpenBSD__)
-#include <sys/syslimits.h>
-#include <sys/stat.h>
-#endif
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/time.h>
+#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
+#include <stdarg.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <ctype.h>
#include <dirent.h>
#include <unistd.h>
-#include <libintl.h>
-#ifdef CYGWIN
-#include <limits.h> /* PATH_MAX */
-#endif
+#include <limits.h>
#include <alpm.h>
#include <alpm_list.h>
@@ -48,9 +43,21 @@
/* pacman */
#include "util.h"
#include "conf.h"
-#include "log.h"
-extern config_t *config;
+int needs_transaction()
+{
+ if(config->op != PM_OP_MAIN && config->op != PM_OP_QUERY && config->op != PM_OP_DEPTEST) {
+ if((config->op == PM_OP_SYNC && !config->op_s_sync &&
+ (config->op_s_search || config->group || config->op_q_list || config->op_q_info))
+ || config->op == PM_OP_DEPTEST) {
+ /* special case: PM_OP_SYNC can be used w/ config->op_s_search by any user */
+ return(0);
+ } else {
+ return(1);
+ }
+ }
+ return(0);
+}
/* gets the current screen column width */
int getcols()
@@ -86,10 +93,10 @@ int getcols()
}
/* does the same thing as 'mkdir -p' */
-int makepath(char *path)
+int makepath(const char *path)
{
char *orig, *str, *ptr;
- char full[PATH_MAX] = "";
+ char full[PATH_MAX+1] = "";
mode_t oldmask;
oldmask = umask(0000);
@@ -100,6 +107,7 @@ int makepath(char *path)
if(strlen(ptr)) {
struct stat buf;
+ /* TODO we should use strncat */
strcat(full, "/");
strcat(full, ptr);
if(stat(full, &buf)) {
@@ -117,7 +125,7 @@ int makepath(char *path)
}
/* does the same thing as 'rm -rf' */
-int rmrf(char *path)
+int rmrf(const char *path)
{
int errflag = 0;
struct dirent *dp;
@@ -159,6 +167,28 @@ int rmrf(char *path)
}
}
+/** Parse the basename of a program from a path.
+* Grabbed from the uClibc source.
+* @param path path to parse basename from
+*
+* @return everything following the final '/'
+*/
+char *mbasename(const char *path)
+{
+ const char *s;
+ const char *p;
+
+ p = s = path;
+
+ while (*s) {
+ if (*s++ == '/') {
+ p = s;
+ }
+ }
+
+ return (char *)p;
+}
+
/* output a string, but wrap words properly with a specified indentation
*/
void indentprint(const char *str, int indent)
@@ -169,12 +199,12 @@ void indentprint(const char *str, int indent)
while(*p) {
if(*p == ' ') {
const char *next = NULL;
- unsigned int len;
+ int len;
p++;
if(p == NULL || *p == ' ') continue;
next = strchr(p, ' ');
if(next == NULL) {
- next = p + strlen(p);
+ next = p + mbstowcs(NULL, p, 0);
}
len = next - p;
if(len > (getcols() - cidx - 1)) {
@@ -214,34 +244,133 @@ char *strtoupper(char *str)
char *strtrim(char *str)
{
char *pch = str;
+
+ if(str == NULL || *str == '\0') {
+ /* string is empty, so we're done. */
+ return(str);
+ }
+
while(isspace(*pch)) {
pch++;
}
if(pch != str) {
memmove(str, pch, (strlen(pch) + 1));
}
-
- pch = (char *)(str + (strlen(str) - 1));
+
+ /* check if there wasn't anything but whitespace in the string. */
+ if(*str == '\0') {
+ return(str);
+ }
+
+ pch = (str + (strlen(str) - 1));
while(isspace(*pch)) {
pch--;
}
*++pch = '\0';
- return str;
+ return(str);
+}
+
+/* Helper function for strreplace */
+static void _strnadd(char **str, const char *append, unsigned int count)
+{
+ if(*str) {
+ *str = realloc(*str, strlen(*str) + count + 1);
+ } else {
+ *str = calloc(sizeof(char), count + 1);
+ }
+
+ strncat(*str, append, count);
+}
+
+/* Replace all occurances of 'needle' with 'replace' in 'str', returning
+ * a new string (must be free'd) */
+char *strreplace(const char *str, const char *needle, const char *replace)
+{
+ const char *p, *q;
+ p = q = str;
+
+ char *newstr = NULL;
+ unsigned int needlesz = strlen(needle),
+ replacesz = strlen(replace);
+
+ while (1) {
+ q = strstr(p, needle);
+ if(!q) { /* not found */
+ if(*p) {
+ /* add the rest of 'p' */
+ _strnadd(&newstr, p, strlen(p));
+ }
+ break;
+ } else { /* found match */
+ if(q > p){
+ /* add chars between this occurance and last occurance, if any */
+ _strnadd(&newstr, p, q - p);
+ }
+ _strnadd(&newstr, replace, replacesz);
+ p = q + needlesz;
+ }
+ }
+
+ return newstr;
+}
+
+/** Splits a string into a list of strings using the chosen character as
+ * a delimiter.
+ *
+ * @param str the string to split
+ * @param splitchar the character to split at
+ *
+ * @return a list containing the duplicated strings
+ */
+alpm_list_t *strsplit(const char *str, const char splitchar)
+{
+ alpm_list_t *list = NULL;
+ const char *prev = str;
+ char *dup = NULL;
+
+ while((str = strchr(str, splitchar))) {
+ dup = strndup(prev, str - prev);
+ if(dup == NULL) {
+ return(NULL);
+ }
+ list = alpm_list_add(list, dup);
+
+ str++;
+ prev = str;
+ }
+
+ dup = strdup(prev);
+ if(dup == NULL) {
+ return(NULL);
+ }
+ list = alpm_list_add(list, strdup(prev));
+
+ return(list);
}
-void list_display(const char *title, alpm_list_t *list)
+void string_display(const char *title, const char *string)
{
- alpm_list_t *i;
+ printf("%s ", title);
+ if(string == NULL || string[0] == '\0') {
+ printf(_("None\n"));
+ } else {
+ printf("%s\n", string);
+ }
+}
+
+void list_display(const char *title, const alpm_list_t *list)
+{
+ const alpm_list_t *i;
int cols, len;
- len = strlen(title);
+ len = mbstowcs(NULL, title, 0);
printf("%s ", title);
if(list) {
for(i = list, cols = len; i; i = alpm_list_next(i)) {
char *str = alpm_list_getdata(i);
- int s = strlen(str) + 2;
+ int s = mbstowcs(NULL, str, 0) + 2;
int maxcols = getcols();
if(s + cols >= maxcols) {
int i;
@@ -264,14 +393,15 @@ void list_display(const char *title, alpm_list_t *list)
* `pkgs` should be a list of pmsyncpkg_t's,
* retrieved from a transaction object
*/
-void display_targets(alpm_list_t *syncpkgs)
+/* TODO move to output.c? or just combine util and output */
+void display_targets(const alpm_list_t *syncpkgs, pmdb_t *db_local)
{
char *str;
- alpm_list_t *i, *j;
+ const alpm_list_t *i, *j;
alpm_list_t *targets = NULL, *to_remove = NULL;
/* TODO these are some messy variable names */
- unsigned long size = 0, isize = 0, rsize = 0;
- double mbsize = 0.0, mbisize = 0.0, mbrsize = 0.0;
+ unsigned long isize = 0, rsize = 0, dispsize = 0, dlsize = 0;
+ double mbisize = 0.0, mbrsize = 0.0, mbdispsize = 0.0, mbdlsize = 0.0;
for(i = syncpkgs; i; i = alpm_list_next(i)) {
pmsyncpkg_t *sync = alpm_list_getdata(i);
@@ -282,7 +412,7 @@ void display_targets(alpm_list_t *syncpkgs)
* installed. */
if(alpm_sync_get_type(sync) == PM_SYNC_TYPE_REPLACE) {
alpm_list_t *to_replace = alpm_sync_get_data(sync);
-
+
for(j = to_replace; j; j = alpm_list_next(j)) {
pmpkg_t *rp = alpm_list_getdata(j);
const char *name = alpm_pkg_get_name(rp);
@@ -294,153 +424,178 @@ void display_targets(alpm_list_t *syncpkgs)
}
}
- size += alpm_pkg_get_size(pkg);
+ dispsize = alpm_pkg_get_size(pkg);
+ dlsize += alpm_pkg_download_size(pkg, db_local);
isize += alpm_pkg_get_isize(pkg);
- asprintf(&str, "%s-%s", alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
+ /* print the package size with the output if ShowSize option set */
+ if(config->showsize) {
+ /* Convert byte size to MB */
+ mbdispsize = dispsize / (1024.0 * 1024.0);
+
+ asprintf(&str, "%s-%s [%.2f MB]", alpm_pkg_get_name(pkg),
+ alpm_pkg_get_version(pkg), mbdispsize);
+ } else {
+ asprintf(&str, "%s-%s", alpm_pkg_get_name(pkg),
+ alpm_pkg_get_version(pkg));
+ }
targets = alpm_list_add(targets, str);
}
/* Convert byte sizes to MB */
- mbsize = (double)(size) / (1024.0 * 1024.0);
- mbisize = (double)(isize) / (1024.0 * 1024.0);
- mbrsize = (double)(rsize) / (1024.0 * 1024.0);
+ mbisize = isize / (1024.0 * 1024.0);
+ mbrsize = rsize / (1024.0 * 1024.0);
+ mbdlsize = dlsize / (1024.0 * 1024.0);
+
+ /* start displaying information */
+ printf("\n");
if(to_remove) {
- MSG(NL, "\n"); /* TODO ugly hack. printing a single NL should be easy */
list_display(_("Remove:"), to_remove);
+ printf("\n");
FREELIST(to_remove);
-
- if(mbrsize > 0) {
- /* round up if size is really small */
- if(mbrsize < 0.1) {
- mbrsize = 0.1;
- }
- MSG(NL, _("\nTotal Removed Size: %.2f MB\n"), mbrsize);
- }
+
+ printf(_("Total Removed Size: %.2f MB\n"), mbrsize);
+ printf("\n");
}
- MSG(NL, "\n"); /* TODO ugly hack. printing a single NL should be easy */
list_display(_("Targets:"), targets);
+ printf("\n");
- /* round up if size is really small */
- if(mbsize < 0.1) {
- mbsize = 0.1;
- }
- MSG(NL, _("\nTotal Package Size: %.2f MB\n"), mbsize);
-
- if(mbisize > mbsize) {
- /*round up if size is really small */
- if(mbisize < 0.1) {
- mbisize = 0.1;
- }
- MSG(NL, _("Total Installed Size: %.2f MB\n"), mbisize);
+ printf(_("Total Download Size: %.2f MB\n"), mbdlsize);
+
+ /* TODO because all pkgs don't include isize, this is a crude hack */
+ if(mbisize > mbdlsize) {
+ printf(_("Total Installed Size: %.2f MB\n"), mbisize);
}
FREELIST(targets);
}
-/* Silly little helper function, determines if the caller needs a visual update
- * since the last time this function was called.
- * This is made for the two progress bar functions, to prevent flicker
- *
- * first_call indicates if this is the first time it is called, for
- * initialization purposes */
-float get_update_timediff(int first_call)
+/* presents a prompt and gets a Y/N answer */
+/* TODO there must be a better way */
+int yesno(char *fmt, ...)
{
- float retval = 0.0;
- static struct timeval last_time = {0};
+ char response[32];
+ va_list args;
- /* on first call, simply set the last time and return */
- if(first_call) {
- gettimeofday(&last_time, NULL);
- } else {
- struct timeval this_time;
- float diff_sec, diff_usec;
+ if(config->noconfirm) {
+ return(1);
+ }
- gettimeofday(&this_time, NULL);
- diff_sec = this_time.tv_sec - last_time.tv_sec;
- diff_usec = this_time.tv_usec - last_time.tv_usec;
+ va_start(args, fmt);
+ /* Use stderr so questions are always displayed when redirecting output */
+ vfprintf(stderr, fmt, args);
+ va_end(args);
- retval = diff_sec + (diff_usec / 1000000.0);
+ if(fgets(response, 32, stdin)) {
+ if(strlen(response) != 0) {
+ strtrim(response);
+ }
- /* return 0 and do not update last_time if interval was too short */
- if(retval < UPDATE_SPEED_SEC) {
- retval = 0.0;
- } else {
- last_time = this_time;
- /* printf("\nupdate retval: %f\n", retval); DEBUG*/
+ if(!strcasecmp(response, _("Y")) || !strcasecmp(response, _("YES")) || strlen(response) == 0) {
+ return(1);
}
}
-
- return(retval);
+ return(0);
}
-/* refactored from cb_trans_progress */
-void fill_progress(const int percent, const int proglen)
+int pm_printf(pmloglevel_t level, const char *format, ...)
{
- const unsigned short chomp = alpm_option_get_chomp();
- const unsigned int hashlen = proglen - 8;
- const unsigned int hash = percent * hashlen / 100;
- static unsigned int lasthash = 0, mouth = 0;
- unsigned int i;
+ int ret;
+ va_list args;
- /* printf("\ndebug: proglen: %i\n", proglen); DEBUG*/
+ /* print the message using va_arg list */
+ va_start(args, format);
+ ret = pm_vfprintf(stdout, level, format, args);
+ va_end(args);
- if(percent == 0) {
- lasthash = 0;
- mouth = 0;
- }
+ return(ret);
+}
- /* magic numbers, how I loathe thee */
- if(proglen > 8) {
- printf(" [");
- for(i = hashlen; i > 1; --i) {
- /* if special progress bar enabled */
- if(chomp) {
- if(i > hashlen - hash) {
- printf("-");
- } else if(i == hashlen - hash) {
- if(lasthash == hash) {
- if(mouth) {
- printf("\033[1;33mC\033[m");
- } else {
- printf("\033[1;33mc\033[m");
- }
- } else {
- lasthash = hash;
- mouth = mouth == 1 ? 0 : 1;
- if(mouth) {
- printf("\033[1;33mC\033[m");
- } else {
- printf("\033[1;33mc\033[m");
- }
- }
- } else if(i%3 == 0) {
- printf("\033[0;37mo\033[m");
- } else {
- printf("\033[0;37m \033[m");
- }
- } /* else regular progress bar */
- else if(i > hashlen - hash) {
- printf("#");
- } else {
- printf("-");
- }
- }
- printf("]");
+int pm_fprintf(FILE *stream, pmloglevel_t level, const char *format, ...)
+{
+ int ret;
+ va_list args;
+
+ /* print the message using va_arg list */
+ va_start(args, format);
+ ret = pm_vfprintf(stream, level, format, args);
+ va_end(args);
+
+ return(ret);
+}
+
+int pm_vfprintf(FILE *stream, pmloglevel_t level, const char *format, va_list args)
+{
+ int ret = 0;
+
+ /* if current logmask does not overlap with level, do not print msg */
+ if(!(config->logmask & level)) {
+ return ret;
}
- /* print percent after progress bar */
- if(proglen > 5) {
- printf(" %3d%%", percent);
+
+#if defined(PACMAN_DEBUG)
+ /* If debug is on, we'll timestamp the output */
+ if(config->logmask & PM_LOG_DEBUG) {
+ time_t t;
+ struct tm *tmp;
+ char timestr[10] = {0};
+
+ t = time(NULL);
+ tmp = localtime(&t);
+ strftime(timestr, 9, "%H:%M:%S", tmp);
+ timestr[8] = '\0';
+
+ printf("[%s] ", timestr);
}
+#endif
- if(percent == 100) {
- printf("\n");
- } else {
- printf("\r");
+ /* print a prefix to the message */
+ switch(level) {
+ case PM_LOG_DEBUG:
+ fprintf(stream, _("debug: "));
+ break;
+ case PM_LOG_ERROR:
+ fprintf(stream, _("error: "));
+ break;
+ case PM_LOG_WARNING:
+ fprintf(stream, _("warning: "));
+ break;
+ case PM_LOG_FUNCTION:
+ /* TODO we should increase the indent level when this occurs so we can see
+ * program flow easier. It'll be fun */
+ fprintf(stream, _("function: "));
+ break;
+ default:
+ break;
}
- fflush(stdout);
+
+ /* print the message using va_arg list */
+ ret = vfprintf(stream, format, args);
+ return(ret);
+}
+
+#ifndef HAVE_STRNDUP
+/* A quick and dirty implementation derived from glibc */
+static size_t strnlen(const char *s, size_t max)
+{
+ register const char *p;
+ for(p = s; *p && max--; ++p);
+ return(p - s);
}
+char *strndup(const char *s, size_t n)
+{
+ size_t len = strnlen(s, n);
+ char *new = (char *) malloc(len + 1);
+
+ if (new == NULL)
+ return NULL;
+
+ new[len] = '\0';
+ return (char *) memcpy(new, s, len);
+}
+#endif
+
/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/util.h b/src/pacman/util.h
index 6eba38fe..0295d7e5 100644
--- a/src/pacman/util.h
+++ b/src/pacman/util.h
@@ -1,8 +1,8 @@
/*
* util.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
+ * Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,52 +15,50 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _PM_UTIL_H
#define _PM_UTIL_H
#include <stdlib.h>
+#include <stdarg.h>
#include <string.h>
-#include <libintl.h>
#include <alpm_list.h>
-#define MALLOC(p, b) do { \
- if((b) > 0) { \
- p = malloc(b); \
- if (!(p)) { \
- fprintf(stderr, "malloc failure: could not allocate %d bytes\n", (int)b); \
- exit(EXIT_FAILURE); \
- } \
- } else { \
- p = NULL; \
- } \
-} while(0)
-
-#define FREE(p) do { if (p) { free(p); (p) = NULL; }} while(0)
-
-#define STRNCPY(s1, s2, len) do { \
- strncpy(s1, s2, (len)-1); \
- s1[(len)-1] = 0; \
-} while(0)
+#ifdef ENABLE_NLS
+#include <libintl.h> /* here so it doesn't need to be included elsewhere */
+/* define _() as shortcut for gettext() */
+#define _(str) gettext(str)
+#else
+#define _(str) str
+#endif
/* update speed for the fill_progress based functions */
#define UPDATE_SPEED_SEC 0.2f
-#define _(str) gettext(str)
+int needs_transaction();
int getcols();
-int makepath(char *path);
-int rmrf(char *path);
+int makepath(const char *path);
+int rmrf(const char *path);
+char *mbasename(const char *path);
void indentprint(const char *str, int indent);
char *strtoupper(char *str);
char *strtrim(char *str);
-int reg_match(char *string, char *pattern);
-void list_display(const char *title, alpm_list_t *list);
-void display_targets(alpm_list_t *syncpkgs);
-float get_update_timediff(int first_call);
-void fill_progress(const int percent, const int proglen);
+char *strreplace(const char *str, const char *needle, const char *replace);
+alpm_list_t *strsplit(const char *str, const char splitchar);
+void string_display(const char *title, const char *string);
+void list_display(const char *title, const alpm_list_t *list);
+void display_targets(const alpm_list_t *syncpkgs, pmdb_t *db_local);
+int yesno(char *fmt, ...);
+int pm_printf(pmloglevel_t level, const char *format, ...) __attribute__((format(printf,2,3)));
+int pm_fprintf(FILE *stream, pmloglevel_t level, const char *format, ...) __attribute__((format(printf,3,4)));
+int pm_vfprintf(FILE *stream, pmloglevel_t level, const char *format, va_list args) __attribute__((format(printf,3,0)));
+
+#ifndef HAVE_STRNDUP
+char *strndup(const char *s, size_t n);
+#endif
#endif /* _PM_UTIL_H */
diff --git a/src/util/.gitignore b/src/util/.gitignore
index 8bfb0085..36688806 100644
--- a/src/util/.gitignore
+++ b/src/util/.gitignore
@@ -1,6 +1,5 @@
.deps
.libs
-Makefile
-Makefile.in
vercmp
testpkg
+testdb
diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index e79e726d..97a0ffa1 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -1,9 +1,27 @@
-bin_PROGRAMS = vercmp testpkg
+# paths set at make time
+conffile = ${sysconfdir}/pacman.conf
+dbpath = ${localstatedir}/lib/pacman/
+cachedir = ${localstatedir}/cache/pacman/pkg/
+bin_PROGRAMS = vercmp testpkg testdb
+
+DEFS = -DLOCALEDIR=\"@localedir@\" \
+ -DCONFFILE=\"$(conffile)\" \
+ -DROOTDIR=\"$(ROOTDIR)\" \
+ -DDBPATH=\"$(dbpath)\" \
+ -DCACHEDIR=\"$(cachedir)\" \
+ @DEFS@
INCLUDES = -I$(top_srcdir)/lib/libalpm
+AM_CFLAGS = -pedantic -D_GNU_SOURCE
+
vercmp_SOURCES = vercmp.c
vercmp_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la
testpkg_SOURCES = testpkg.c
testpkg_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la
+
+testdb_SOURCES = testdb.c
+testdb_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la
+
+# vim:set ts=2 sw=2 noet:
diff --git a/src/util/testdb.c b/src/util/testdb.c
new file mode 100644
index 00000000..31b4ff0d
--- /dev/null
+++ b/src/util/testdb.c
@@ -0,0 +1,154 @@
+/*
+ * testdb.c : Test a pacman local database for validity
+ *
+ * Copyright (c) 2007 by Aaron Griffin <aaronmgriffin@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <limits.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <libgen.h>
+
+#include <alpm.h>
+#include <alpm_list.h>
+
+#define BASENAME "testdb"
+
+int str_cmp(const void *s1, const void *s2)
+{
+ return(strcmp(s1, s2));
+}
+
+static void cleanup(int signum) {
+ if(alpm_release() == -1) {
+ fprintf(stderr, "error releasing alpm: %s\n", alpm_strerrorlast());
+ }
+
+ exit(signum);
+}
+
+void output_cb(pmloglevel_t level, char *fmt, va_list args)
+{
+ if(strlen(fmt)) {
+ switch(level) {
+ case PM_LOG_ERROR: printf("error: "); break;
+ case PM_LOG_WARNING: printf("warning: "); break;
+ default: return;
+ }
+ vprintf(fmt, args);
+ printf("\n");
+ }
+}
+
+static int db_test(char *dbpath)
+{
+ struct dirent *ent;
+ char path[PATH_MAX];
+ struct stat buf;
+ int ret = 0;
+
+ DIR *dir;
+
+ if(!(dir = opendir(dbpath))) {
+ fprintf(stderr, "error : %s : %s\n", dbpath, strerror(errno));
+ return(1);
+ }
+
+ while ((ent = readdir(dir)) != NULL) {
+ if(!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, "..")) {
+ continue;
+ }
+ /* check for desc, depends, and files */
+ snprintf(path, PATH_MAX, "%s/%s/desc", dbpath, ent->d_name);
+ if(stat(path, &buf)) {
+ printf("%s: description file is missing\n", ent->d_name);
+ ret++;
+ }
+ snprintf(path, PATH_MAX, "%s/%s/depends", dbpath, ent->d_name);
+ if(stat(path, &buf)) {
+ printf("%s: dependency file is missing\n", ent->d_name);
+ ret++;
+ }
+ snprintf(path, PATH_MAX, "%s/%s/files", dbpath, ent->d_name);
+ if(stat(path, &buf)) {
+ printf("%s: file list is missing\n", ent->d_name);
+ ret++;
+ }
+ }
+ return(ret);
+}
+
+int main(int argc, char **argv)
+{
+ int retval = 0; /* default = false */
+ pmdb_t *db = NULL;
+ char *dbpath;
+ char localdbpath[PATH_MAX];
+ alpm_list_t *i;
+
+ if(argc == 1) {
+ dbpath = DBPATH;
+ } else if(argc == 3 && strcmp(argv[1], "-b") == 0) {
+ dbpath = argv[2];
+ } else {
+ fprintf(stderr, "usage: %s -b <pacman db>\n", BASENAME);
+ return(1);
+ }
+
+ snprintf(localdbpath, PATH_MAX, "%s/local", dbpath);
+ retval = db_test(localdbpath);
+ if(retval) {
+ return(retval);
+ }
+
+ if(alpm_initialize() == -1) {
+ fprintf(stderr, "cannot initialize alpm: %s\n", alpm_strerrorlast());
+ return(1);
+ }
+
+ /* let us get log messages from libalpm */
+ alpm_option_set_logcb(output_cb);
+
+ alpm_option_set_dbpath(dbpath);
+
+ db = alpm_db_register_local();
+ if(db == NULL) {
+ fprintf(stderr, "error: could not register 'local' database (%s)\n",
+ alpm_strerrorlast());
+ cleanup(EXIT_FAILURE);
+ }
+
+ /* check dependencies */
+ alpm_list_t *data;
+ data = alpm_checkdeps(db, 0, alpm_db_getpkgcache(db), NULL);
+ for(i = data; i; i = alpm_list_next(i)) {
+ pmdepmissing_t *miss = alpm_list_getdata(i);
+ pmdepend_t *dep = alpm_miss_get_dep(miss);
+ char *depstring = alpm_dep_get_string(dep);
+ printf("missing dependency for %s : %s\n", alpm_miss_get_target(miss),
+ depstring);
+ free(depstring);
+ }
+
+ cleanup(retval);
+}
diff --git a/src/util/testpkg.c b/src/util/testpkg.c
index a64e6b34..d724bb8a 100644
--- a/src/util/testpkg.c
+++ b/src/util/testpkg.c
@@ -2,7 +2,7 @@
* testpkg.c : Test a pacman package for validity
*
* Copyright (c) 2007 by Aaron Griffin <aaronmgriffin@gmail.com>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,27 +15,29 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#include "config.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <libgen.h>
+#include <stdio.h> /* printf */
+#include <stdarg.h> /* va_list */
+#include <string.h> /* strlen */
#include <alpm.h>
-void output_cb(unsigned short level, char *msg)
+#define BASENAME "testpkg"
+
+static void output_cb(pmloglevel_t level, char *fmt, va_list args)
{
- if(strlen(msg)) {
+ if(strlen(fmt)) {
switch(level) {
case PM_LOG_ERROR: printf("error: "); break;
case PM_LOG_WARNING: printf("warning: "); break;
+ default: break;
}
- puts(msg);
+ vprintf(fmt, args);
}
}
@@ -45,27 +47,27 @@ int main(int argc, char **argv)
pmpkg_t *pkg = NULL;
if(argc != 2) {
- fprintf(stderr, "usage: %s <package file>\n", basename(argv[0]));
+ fprintf(stderr, "usage: %s <package file>\n", BASENAME);
return(1);
}
if(alpm_initialize() == -1) {
- fprintf(stderr, "cannot initilize alpm: %s\n", alpm_strerror(pm_errno));
+ fprintf(stderr, "cannot initilize alpm: %s\n", alpm_strerrorlast());
return(1);
}
/* let us get log messages from libalpm */
alpm_option_set_logcb(output_cb);
- if(alpm_pkg_load(argv[1], &pkg) == -1 || pkg == NULL) {
+ if(alpm_pkg_load(argv[1], 1, &pkg) == -1 || pkg == NULL) {
retval = 1;
} else {
alpm_pkg_free(pkg);
retval = 0;
}
-
+
if(alpm_release() == -1) {
- fprintf(stderr, "error releasing alpm: %s\n", alpm_strerror(pm_errno));
+ fprintf(stderr, "error releasing alpm: %s\n", alpm_strerrorlast());
}
return(retval);
diff --git a/src/util/vercmp.c b/src/util/vercmp.c
index cc951988..29ab121d 100644
--- a/src/util/vercmp.c
+++ b/src/util/vercmp.c
@@ -1,8 +1,8 @@
/*
* vercmp.c
- *
+ *
* Copyright (c) 2002-2005 by Judd Vinet <jvinet@zeroflux.org>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,40 +15,58 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#include "config.h"
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-#include <limits.h>
-/* TODO this is probably not the best way to do this */
-#ifndef PATH_MAX
-#define PATH_MAX 1024
-#endif
+#include <stdio.h> /* printf */
+#include <string.h> /* strncpy */
#include <alpm.h>
+#define BASENAME "vercmp"
+
+#define MAX_LEN 255
+
+static void usage()
+{
+ fprintf(stderr, "usage: %s <ver1> <ver2>\n\n", BASENAME);
+ fprintf(stderr, "return values:\n");
+ fprintf(stderr, " < 0 : if ver1 < ver2\n");
+ fprintf(stderr, " 0 : if ver1 == ver2\n");
+ fprintf(stderr, " > 0 : if ver1 > ver2\n");
+}
+
int main(int argc, char *argv[])
{
- char s1[255] = "";
- char s2[255] = "";
+ char s1[MAX_LEN] = "";
+ char s2[MAX_LEN] = "";
int ret;
+ if(argc == 1) {
+ usage();
+ return(2);
+ }
+ if(argc > 1 &&
+ (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0
+ || strcmp(argv[1], "--usage") == 0)) {
+ usage();
+ return(0);
+ }
if(argc > 1) {
- strncpy(s1, argv[1], 255);
+ strncpy(s1, argv[1], MAX_LEN);
+ s1[MAX_LEN -1] = '\0';
}
if(argc > 2) {
- strncpy(s2, argv[2], 255);
+ strncpy(s2, argv[2], MAX_LEN);
+ s2[MAX_LEN -1] = '\0';
} else {
printf("0\n");
return(0);
}
-
+
ret = alpm_pkg_vercmp(s1, s2);
printf("%d\n", ret);
return(ret);
diff --git a/submitting-patches b/submitting-patches
index 0fe54ef6..725b1ea1 100644
--- a/submitting-patches
+++ b/submitting-patches
@@ -9,10 +9,15 @@ NOTE: Much of this is paraphrased from the kernel documentation's
Creating your patch:
+Most of this was more relevant before we switched to GIT for version control.
+However, much of it is still applicable and should be followed. Some notes
+have been added to make this a bit more up-to-date with the GIT workflow.
+
* Use "diff -up" or "diff -uprN" to create patches.
These options make the diff easier to read for those of us who try to review
- submitted patches.
+ submitted patches. If you are working on your own git branch, then GIT
+ formatted patches are perfectly acceptable.
* Please try to make patches "p1 applicable"
@@ -23,7 +28,8 @@ Creating your patch:
--- ORIGINAL_DIR/lib/libalpm/alpm.h
+++ NEW_DIR/lib/libalpm/alpm.h
- With '-p1' the ORIGINAL_DIR and NEW_DIR arguments are stripped.
+ With '-p1' the ORIGINAL_DIR and NEW_DIR arguments are stripped. GIT produces
+ p1 formatted patches by default.
Submitting your patch:
@@ -48,7 +54,9 @@ Submitting your patch:
Before the actual diff begins, it helps if you describe the changes in the
patch. This allows others to see what you intended so as to compare it to
- what was actually done, and allows better feedback
+ what was actually done, and allows better feedback. If you use
+ 'git-format-patch' to create your patch, then your commit message will
+ be shown above the patch by default.
* Credit yourself
@@ -58,7 +66,7 @@ Submitting your patch:
Signed-off-by: Aaron Griffin <aaron@archlinux.org>
Please use your real name and email address. Feel free to "scramble" the
- address if you're afraid of spam.
+ address if you're afraid of spam. 'git commit -s' makes this easy.
After you submit:
@@ -66,3 +74,7 @@ After you submit:
Any feedback you get, positive or negative, has nothing to do with you. If a
patch is rejected, try taking the suggestions into account and re-submitting.
+ We welcome most submissions here, and some may take a bit longer to get
+ looked over than others. If you think your patch got lost in the shuffle,
+ send another email to the list in reply to the original asking if anyone has
+ looked at it yet.
diff --git a/valgrind.supp b/valgrind.supp
index 0aa8251f..20227349 100644
--- a/valgrind.supp
+++ b/valgrind.supp
@@ -26,5 +26,6 @@
pacman-dlrelocate
Memcheck:Cond
fun:_dl_relocate_object
- obj:*ld-2.5.so
+ obj:*ld-2.?.so
}
+