Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Does not build on ArchLinux #13

Open
s3rg3 opened this issue Aug 23, 2024 · 3 comments
Open

Does not build on ArchLinux #13

s3rg3 opened this issue Aug 23, 2024 · 3 comments

Comments

@s3rg3
Copy link

s3rg3 commented Aug 23, 2024

Hello,

As a proud owner of a WB Electronics' Infinity USB Unlimited card reader, i tried to build OpenCT for ArchLinux, since there was a community recipe at https://aur.archlinux.org/packages/openct, i choosed the easy way and decided to launch it, this resulted with this error:

ifdhandler.c: Dans la fonction « ifdhandler_run »:
ifdhandler.c:239:52: erreur: passage de l'argument 2 de « ifd_get_eventfd » depuis un type pointeur incompatible [-Wincompatible-pointer-types]
  239 |                 sock->fd = ifd_get_eventfd(reader, &sock->events);
      |                                                    ^~~~~~~~~~~~~
      |                                                    |
      |                                                    int *
Dans le fichier inclus depuis internal.h:17,
                 depuis ifdhandler.c:7:
../../src/include/openct/ifd.h:182:65: note: « short int * » attendu mais l'argument est de type « int * »
  182 | tern int                      ifd_get_eventfd(ifd_reader_t *, short *);
      |                                                               ^~~~~~~

make[3]: *** [Makefile:1044: ifdhandler-ifdhandler.o] Error 1

I will buy a newer device, but nevertheless i want to see if someone could help me here before.

Thank you.

@saper
Copy link
Member

saper commented Aug 26, 2024

Can you check if #12 fixes the build for you?

@s3rg3
Copy link
Author

s3rg3 commented Aug 26, 2024

I tested it previously from the fork but it gives me this error:

process.c:461:61: error: passing argument 4 of 'ct_tlv_get_opaque' from incompatible pointer type [-Wincompatible-pointer-types]
  461 |             || !ct_tlv_get_opaque(args, CT_TAG_DATA, &data, &data_len))
      |                                                             ^~~~~~~~~
      |                                                             |
      |                                                             unsigned int *
In file included from process.c:20:
../../src/include/openct/tlv.h:40:62: note: expected 'size_t *' {aka 'long unsigned int *'} but argument is of type 'unsigned int *'
   40 |                                 ifd_tag_t, unsigned char **, size_t *);
      |                                                              ^~~~~~~~
make[3]: *** [Makefile:752: libifd_la-process.lo] Error 1

@JF-soft
Copy link

JF-soft commented Oct 6, 2024

Two fixes are needed for this package to build in Archlinux:

  1. Cast pointer to integer to pointer to short (you would loose information though, but changing to int would require a lot of effort) in ifdhandler.c
    sock->fd = ifd_get_eventfd(reader, (short *) &sock->events);

  2. Declare data_len with appropriate data type (size_t data_len) in process.c:
    `/*

  • Synchronous ICC read/write
    */
    static int do_memory_write(ifd_reader_t * reader, int unit,
    ct_tlv_parser_t * args, ct_tlv_builder_t * resp)
    {
    unsigned char *data;
    size_t data_len; // <= Change data type!
    unsigned int address;
    int rc;

    if (unit > reader->nslots)
    return IFD_ERROR_INVALID_SLOT;

    if (ct_tlv_get_int(args, CT_TAG_ADDRESS, &address) == 0
    || !ct_tlv_get_opaque(args, CT_TAG_DATA, &data, &data_len))
    return IFD_ERROR_MISSING_ARG;

    rc = ifd_card_write_memory(reader, unit, address, data, data_len);
    if (rc < 0)
    return rc;

    return 0;
    }`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants