On 16/04/13 13:42, Connor Behan wrote:
There are currently 8 questions that libalpm may ask the user. Each of them has a "pacman default" and a "libalpm default". The pacman default is the response that gets used if the user presses enter without typing anything. Equivalently it is the response when --noconfirm is passed. The libalpm default is what happens when --print is passed and the question callback never even executes. This commit forces pacman to specify responses for --print and therefore never rely on the libalpm default. The following states how each question is handled:
ALPM_QUESTION_INSTALL_IGNOREPKG: The pacman default is 1 and the libalpm default is 0. The latter was agreed to be a bug so we return 1 on print.
ALPM_QUESTION_REPLACE_PKG: The pacman default is 1 and the libalpm default is 0. We return 0 on print.
ALPM_QUESTION_CONFLICT_PKG: The pacman default is 0 and the libalpm default is 0. We return 0 on print even though print should not encounter this.
ALPM_QUESTION_REMOVE_PKGS: The pacman default is 0 and the libalpm default is 0. We return 0 on print.
ALPM_QUESTION_SELECT_PROVIDER: The pacman default is 0 and the libalpm default is 0. We return 0 on print.
ALPM_QUESTION_LOCAL_NEWER: The pacman default is 1 and this is dead code so there is no libalpm default. We return 1 on print.
ALPM_QUESTION_CORRUPTED_PKG: The pacman default is 1 and the libalpm default is 0. We return 0 on print even though print should not encounter this.
ALPM_QUESTION_IMPORT_KEY: The pacman default is 1 and the libalpm default is 0. We return 0 on print even though print should not encounter this.
So... I get here and I have to go back and re-read this several times to understand what the actual change is. You provide details for many things that are not changed at all by the patch. Just detail what is changed (ALPM_QUESTION_INSTALL_IGNOREPKG). Something like: Unify front and backend responses for --print When libalpm asks the user a question, there are two possible defaults. One default for pacman (used when the user presses enter without typing and for --noconfirm) and the libalpm default. Currently the libalpm default gets used for the pacman "--print" option. This affects the printing of ignored packages as "ALPM_QUESTION_INSTALL_IGNOREPKG" as the defaults differ. Adjust the response of this case when using --print so pacman acts consistently.
Signed-off-by: Connor Behan <connor.behan@gmail.com> --- src/pacman/callback.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/src/pacman/callback.c b/src/pacman/callback.c index 71d9d04..711d116 100644 --- a/src/pacman/callback.c +++ b/src/pacman/callback.c @@ -309,6 +309,14 @@ void cb_question(alpm_question_t event, void *data1, void *data2, void *data3, int *response) { if(config->print) { + switch(event) { + case ALPM_QUESTION_INSTALL_IGNOREPKG: + case ALPM_QUESTION_LOCAL_NEWER:
If that is dead code, why propagate it? It should just be removed altogether (in another commit...). Which would leave a fairly redundant case statement.
+ *response = 1; + break; + default: + *response = 0; + } return; } switch(event) {