On 05/24/14 at 03:49pm, Olivier Brunel wrote:
Much like with events, instead of using a bunch of void* arguments for all questions, we now send one pointer to an alpm_question_t struct. This contains the type of question that was triggered.
With this information, the pointer can then be typecasted to the question-specific struct in order to get additional arguments.
Signed-off-by: Olivier Brunel <jjk@jjacky.com> --- lib/libalpm/alpm.h | 92 +++++++++++++++++++++++++++++++++++++++-- lib/libalpm/deps.c | 38 ++++++++++------- lib/libalpm/handle.h | 4 +- lib/libalpm/signing.c | 12 ++++-- lib/libalpm/sync.c | 60 +++++++++++++++++---------- src/pacman/callback.c | 110 +++++++++++++++++++++++++++----------------------- src/pacman/callback.h | 3 +- 7 files changed, 222 insertions(+), 97 deletions(-)
The generic to specific struct casts cause Clang to fail when pacman is configured with --enable-warningflags: callback.c:377:44: error: cast from 'alpm_question_t *' (aka 'struct _alpm_question_t *') to 'alpm_question_install_ignorepkg_t *' (aka 'struct _alpm_question_install_ignorepkg_t *') increases required alignment from 4 to 8 [-Werror,-Wcast-align] ...*q = (alpm_question_install_ignorepkg_t *) question; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The earlier changes to the event callback have the same issue and also give errors about using non-literal strings with vprintf: testdb.c:53:11: error: format string is not a string literal [-Werror,-Wformat-nonliteral] vprintf(event->fmt, event->args); ^~~~~~~~~~ apg