<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-private/private-output.cc, branch 3.2.0</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=3.2.0</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=3.2.0'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-03-26T14:45:15Z</updated>
<entry>
<title>Respect custom LESS/MORE/LV variables</title>
<updated>2025-03-26T14:45:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-26T14:42:57Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=a452d3a9f526f6545981664712b45f709545e6fa'/>
<id>urn:sha1:a452d3a9f526f6545981664712b45f709545e6fa</id>
<content type='text'>
Use setenv() to avoid overriding user defined variables.

LP: #2103921
</content>
</entry>
<entry>
<title>Be more strict about which PAGER to execvp() directly</title>
<updated>2024-12-19T16:56:49Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-12-19T16:49:59Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f6198e45b4cd924f390f977077d96b4545da0c91'/>
<id>urn:sha1:f6198e45b4cd924f390f977077d96b4545da0c91</id>
<content type='text'>
There could be | or ; or other stuff in PAGER that needs
special handling, let's encode a list of known-good characters
instead. This covers all known pagers.

You could also try to execvp() PAGER in its entirety and if
it fails with ENOENT fall back to the shell but then you
don't get correct error handling if the pager really doesn't
exist (in which case we should abort trying to page).
</content>
</entry>
<entry>
<title>Introduce automatic pager for read commands</title>
<updated>2024-12-18T09:25:24Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2024-12-16T16:05:40Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6e260e26e4cd671f781151e24d89a17b29a55530'/>
<id>urn:sha1:6e260e26e4cd671f781151e24d89a17b29a55530</id>
<content type='text'>
Automatically show the output of `show`, `policy`, `list`,
`search`, `showsrc` in a pager.

The pager setup is inspired by git's pager setup. Notably,
the pager is found using APT_PAGER and PAGER variables.

We wait for the pager to be setup somewhat correctly by
using a notify pipe to figure out whether execvp() was
succesful - then the pipe will read EOF as the other end
got closed by CLOEXEC during exec - or not, then the pipe
will contain an errno.

We set up the correct handlers for signals and exit to close
the fds and wait for the pager. Notably inside the signal
handler we cannot flush our streams, only close them, so
there is some duplication.

We call the InitOutputPager() function from inside the
various Do...() functions rather than setting it up
generally in InitOutput(). Doing so allows us to first
render the progress without a pager, and then setup
the pager for the content only which improves user
experience.

When we setup a pager we also take care to disable
standard input, as we should not be prompting users
while a pager is running (the pager will be reading
from the tty directly). We do this by dup2-ing() a
/dev/null over it; if we just close()d the fd, another
open() might reuse the fd number and problems could
occur.
</content>
</entry>
<entry>
<title>Replace std::bind with lambdas</title>
<updated>2024-11-11T20:40:20Z</updated>
<author>
<name>наб</name>
<email>nabijaczleweli@nabijaczleweli.xyz</email>
</author>
<published>2024-11-11T20:40:07Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=14353ab9a1b03eff5ebb4927f254928ee21a2f90'/>
<id>urn:sha1:14353ab9a1b03eff5ebb4927f254928ee21a2f90</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Show prompt reply if input is from non-terminal</title>
<updated>2024-09-29T12:14:19Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2024-09-29T12:14:19Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c4de80035d4164d86ec5f15a7568598993b504b6'/>
<id>urn:sha1:c4de80035d4164d86ec5f15a7568598993b504b6</id>
<content type='text'>
In the unlikely case input is not a terminal (but not in some way
assumed with command line flags) we should print the string we act on
after the prompt so that people can see what is happening rather
than having the prompt "mysteriously" hidden on terminals or
prepended to the first line of the download progress in logs.
</content>
</entry>
<entry>
<title>Ignore pending input before confirmation prompts</title>
<updated>2024-09-29T11:53:48Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2024-09-29T11:53:48Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=a44bd300f006b74c09a74aff419b43912e114e0c'/>
<id>urn:sha1:a44bd300f006b74c09a74aff419b43912e114e0c</id>
<content type='text'>
Pressing ENTER for too long lets it end up in the input buffer which the
confirmation prompt happily picks up and accepts as confirmation for
deleting potentially half your system or doing other silly things.
Ironically, this confirmation will also be silent in terms of output as
it is likely erased by future progress reporting.

Closes: #1082956
</content>
</entry>
<entry>
<title>Show installed version (not candidate version) while removing a package</title>
<updated>2024-07-05T04:27:32Z</updated>
<author>
<name>sid</name>
<email>sidtosh4@gmail.com</email>
</author>
<published>2024-07-03T09:20:32Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c575648f41ff09e72988976f8150e9bb51781cd4'/>
<id>urn:sha1:c575648f41ff09e72988976f8150e9bb51781cd4</id>
<content type='text'>
Showing a package version which was never installed in removals is
confusing.
</content>
</entry>
<entry>
<title>Separate columns by 2 spaces in lists</title>
<updated>2024-04-30T08:16:08Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-04-30T08:13:51Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=bfa55b7e0516196bace4ea93f4f40bee37393d54'/>
<id>urn:sha1:bfa55b7e0516196bace4ea93f4f40bee37393d54</id>
<content type='text'>
This improves readability a bit more as it's visually easier
to tell "  " and "-" apart than " " and "-".

Closes: #1070064
</content>
</entry>
<entry>
<title>Highlight essential removals with action::remove color</title>
<updated>2024-04-23T18:32:30Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-04-23T18:32:17Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=d4889a909632f38418c630f257c00ccc595ba572'/>
<id>urn:sha1:d4889a909632f38418c630f257c00ccc595ba572</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'ui-2.9.2' into 'main'</title>
<updated>2024-04-22T17:31:46Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2024-04-22T17:31:46Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=20ab001670226e92ca8a74f1e2308197111a8420'/>
<id>urn:sha1:20ab001670226e92ca8a74f1e2308197111a8420</id>
<content type='text'>
UI changes for 2.9.2

See merge request apt-team/apt!343</content>
</entry>
</feed>
