If a path length exceeds the PATH_MAX value, then it gets truncated
when building the path of the file to delete. This could (in a very
unlikely case...) result in the wrong file being deleted. Check the
path fittedin the buffer before removing files.
Signed-off-by: Allan McRae <allan@archlinux.org>
It does very little, is only used in one place, and can't easily be
reused for other server types due to the inclusion of an error message.
Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
Passing a path with a trailing slash to --root or --rootdir can lead to a
double slash at the start of paths. e.g.
$ pacman --root / -v 2>1 | grep " //"
Log File : //var/log/pacman.log
In MSYS2, paths starting with // will hit the network and fail.
Avoid this be explicitly stripping the trailing / from paths passed to these
flags.
Signed-off-by: Allan McRae <allan@archlinux.org>
Add provides "%P" and replaces "%R" as format attribute.
Signed-off-by: Jelle van der Waa <jelle@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
Replace concat_alpm_depends() with concat_list() which takes an
additional parameter to handle the formatting of non-string
data types.
Signed-off-by: Allan McRae <allan@archlinux.org>
When ever pacman prints a conflict, it now prints pkgname-version,
instead of just pkgname.
alpm_conflict_t now carries *alpm_pkg_ts instead of just the
names of each package.
Fixes FS#12536 (point 2)
For some terminal widths, the "C"/"c" character does not alternate at
regular intervals, but may look like it is stuck at either lowercase or
uppercase.
The previous behavior toggled based on the character position, while this
new behavior toggles the chomp alternation based on the progress percentage value.
This leads to slightly improved chomping.
Signed-off-by: Alexander F. Rødseth <xyproto@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
The fill_progress function is called from two locations,
and both locations pass in the same percentage value twice.
This patch modifies the function signature to to receive the
percentage value just once.
Signed-off-by: Alexander F. Rødseth <xyproto@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
It's possible that the cursor does not reappear after pressing ^C during
shutdown. In my case, I noticed this when pressing ^C after getting
results from `pacman -F` -- this can reasonably reliably be triggered by
issuing a file query and pressing ^C shortly after results are shown.
There are two reasons for this issue:
1. The graceful SIGINT handler is removed at the start of cleanup(), but
the window from entering cleanup() to reaching exit() is non trivial.
The main offender is FREELIST(pm_targets), which on my T14s takes
>0.1s to execute. This means that if you are unlucky enough to press
^C while there, the cursor isn't coming back, because we haven't
issued any command to show the cursor again yet, and the userspace
signal handler is already blown away.
2. Moving console_cursor_show() to earlier in cleanup() only half solves
the issue. While it's fine not to flush after _hiding_ the cursor,
since it will at least make itself apparent before any other text
reaches the screen, _showing_ the cursor must be followed by flushing
stdout, because once the graceful SIGINT handler is gone, if you
press ^C, no flush will be triggered (and thus there will be no
cursor).
This fixes the issue by always starting out by showing the cursor again
at cleanup() time. This means that no matter where we get caught at ^C,
we will not end up leaving the terminal without its beloved ensign.
Signed-off-by: Chris Down <chris@chrisdown.name>
Signed-off-by: Allan McRae <allan@archlinux.org>
Extend print-format with checkdepends, depends and makedepends.
Signed-off-by: Jelle van der Waa <jelle@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
alpm_pkg_get_builddate() and alpm_pkg_get_installdate() both return -1 on
error. Correctly handle the error condition in pacman.
Signed-off-by: Allan McRae <allan@archlinux.org>
Extend --print-format with all expac format strings which can be easily
added without conversions and through a simple C macro.
Signed-off-by: Jelle van der Waa <jelle@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
This allows for parsing the output of:
pacman --upgrade --print-format '<format>' pkg.zst
without having to remove info messages from it.
Signed-off-by: Allan McRae <allan@archlinux.org>
Adds the %a format specifier to allow printing of a target's arch
when using --print-format.
Signed-off-by: Jonathan Sköld <arch@skold.dev>
Signed-off-by: Allan McRae <allan@archlinux.org>
Prints extra information provided by file conflict or corrupt package messages
to stderr instead of stdout
Signed-off-by: Oskar Roesler (bionade24) <o.roesler@oscloud.info>
Signed-off-by: Allan McRae <allan@archlinux.org>
The current backup printing does not fit in with the rest of the info at
all. Change to be more consistant.
Old:
Backup Files :
MODIFIED /etc/pacman.conf
UNMODIFIED /etc/makepkg.conf
New:
Backup Files : /etc/pacman.conf [modified]
/etc/makepkg.conf [unmodified]
Signed-off-by: morganamilo <morganamilo@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
Previously, when printing a package changelog to stdout, we would write
chunks of data that were not necessarily nul-terminated to stdout using
a function (fputs) which requires the input string to be nul-terminated.
On my system, this would result in occasional garbage characters showing
up in the "pacman -Qc" output.
Fix this by never nul-terminating the chunk, and using the fwrite()
function which takes an explicit input size and does not require a
nul-terminated string.
Signed-off-by: Carlo Teubner <carlo@cteubner.net>
--dbonly is meant to only touch the database and not the actual system.
However hooks still run which can leave files in place or run commands
you may not want.
The hooks being run also means `fakeroot pacman -S --dbpath test/ foo --dbonly`
fails because alpm tries to chroot for hooks which requires real root.
Signed-off-by: Allan McRae <allan@archlinux.org>
When constructing an import question we never really used a proper gpg
key. We just zero initialize the key, set the uid and fingerprint, and
sent that to the front end.
Instead lets just give the import question a uid and fingerprint field.
Signed-off-by: Allan McRae <allan@archlinux.org>
When a download fails on one mirror a new download is started on the
next mirror. This causes the ammount downloaded to reset, confusing the
rate math and making it display a negative rate.
This is further complicated by the fact that a download may be resumed
from where it is or started over.
To account for this we alert the frontend that the download was
restarted. Pacman then starts the progress bar over.
Signed-off-by: Allan McRae <allan@archlinux.org>