Tarantool development patches archive
 help / color / mirror / Atom feed
From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
To: Yaroslav Dynnikov <yaroslav.dynnikov@tarantool.org>,
	tarantool-patches@dev.tarantool.org
Cc: Alexander Turenko <alexander.turenko@tarantool.org>
Subject: Re: [Tarantool-patches] [PATCH] Ensure all curl symbols are exported
Date: Tue, 11 Aug 2020 00:49:50 +0200	[thread overview]
Message-ID: <4a43127c-6e11-8f28-27ee-62e24fa65a4b@tarantool.org> (raw)
In-Reply-To: <20200806131955.3400088-1-yaroslav.dynnikov@tarantool.org>

Hi! Thanks for the patch!

> diff --git a/test/box-tap/gh-5223-curl-exports.test.lua b/test/box-tap/gh-5223-curl-exports.test.lua
> new file mode 100755
> index 000000000..300d60b07
> --- /dev/null
> +++ b/test/box-tap/gh-5223-curl-exports.test.lua
> @@ -0,0 +1,177 @@
> +#!/usr/bin/env tarantool
> +
> +local tap = require('tap')
> +local ffi = require('ffi')
> +ffi.cdef([[
> +    void *dlsym(void *handle, const char *symbol);
> +    struct curl_version_info_data {

1. I don't think you need to copy-paste the entire structure. Anyway it is
returned from curl_version_info() by pointer, so you can just announce the
pointer type. And in the test check that ffi.C.curl_version_info(7) returned
something not nil. I don't think you need to access any fields of this
struct. It is going to lead to UB in case the struct will change anyhow in
the sources.

> +        int age;                  /* see description below */
> +        const char *version;      /* human readable string */
> +        unsigned int version_num; /* numeric representation */
> +        const char *host;         /* human readable string */
> +        int features;             /* bitmask, see below */
> +        char *ssl_version;        /* human readable string */
> +        long ssl_version_num;     /* not used, always zero */
> +        const char *libz_version; /* human readable string */
> +        const char * const *protocols; /* protocols */
> +
> +        /* when 'age' is CURLVERSION_SECOND or higher, the members below exist */
> +        const char *ares;         /* human readable string */
> +        int ares_num;             /* number */
> +
> +        /* when 'age' is CURLVERSION_THIRD or higher, the members below exist */
> +        const char *libidn;       /* human readable string */
> +
> +        /* when 'age' is CURLVERSION_FOURTH or higher (>= 7.16.1), the members
> +           below exist */
> +        int iconv_ver_num;       /* '_libiconv_version' if iconv support enabled */
> +
> +        const char *libssh_version; /* human readable string */
> +
> +        /* when 'age' is CURLVERSION_FIFTH or higher (>= 7.57.0), the members
> +           below exist */
> +        unsigned int brotli_ver_num; /* Numeric Brotli version
> +                                        (MAJOR << 24) | (MINOR << 12) | PATCH */
> +        const char *brotli_version; /* human readable string. */
> +
> +        /* when 'age' is CURLVERSION_SIXTH or higher (>= 7.66.0), the members
> +           below exist */
> +        unsigned int nghttp2_ver_num; /* Numeric nghttp2 version
> +                                         (MAJOR << 16) | (MINOR << 8) | PATCH */
> +        const char *nghttp2_version; /* human readable string. */
> +
> +        const char *quic_version;    /* human readable quic (+ HTTP/3) library +
> +                                        version or NULL */
> +
> +        /* when 'age' is CURLVERSION_SEVENTH or higher (>= 7.70.0), the members
> +           below exist */
> +        const char *cainfo;          /* the built-in default CURLOPT_CAINFO, might
> +                                        be NULL */
> +        const char *capath;          /* the built-in default CURLOPT_CAPATH, might
> +                                        be NULL */
> +    };
> +
> +    struct curl_version_info_data *curl_version_info(int age);
> +]])
> +
> +local info = ffi.C.curl_version_info(7)

2. Why '7'?

> +local test = tap.test('curl-features')
> +test:plan(3)
> +

  parent reply	other threads:[~2020-08-10 22:49 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-06 13:19 Yaroslav Dynnikov
2020-08-06 15:06 ` Timur Safin
2020-08-10 22:49 ` Vladislav Shpilevoy [this message]
2020-08-12 12:59   ` Yaroslav Dynnikov
2020-08-12 20:10     ` Vladislav Shpilevoy
2020-08-13 11:48 ` Kirill Yukhin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4a43127c-6e11-8f28-27ee-62e24fa65a4b@tarantool.org \
    --to=v.shpilevoy@tarantool.org \
    --cc=alexander.turenko@tarantool.org \
    --cc=tarantool-patches@dev.tarantool.org \
    --cc=yaroslav.dynnikov@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH] Ensure all curl symbols are exported' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox