curl_version_info: provide librtmp version
Ref: https://github.com/curl/curl/pull/13364#issuecomment-2054151942 Reported-by: talregev on github Closes #13368
This commit is contained in:
parent
e1f1ec028a
commit
dde4b3855e
@ -104,6 +104,9 @@ typedef struct {
|
|||||||
/* when 'age' is CURLVERSION_ELEVENTH or higher (>= 7.87.0), the members
|
/* when 'age' is CURLVERSION_ELEVENTH or higher (>= 7.87.0), the members
|
||||||
below exist */
|
below exist */
|
||||||
const char *const *feature_names; /* Feature names. */
|
const char *const *feature_names; /* Feature names. */
|
||||||
|
/* when 'age' is CURLVERSION_TWELFTH or higher (>= 8.8.0), the members
|
||||||
|
below exist */
|
||||||
|
const char *const *rtmp_version; /* human readable string */
|
||||||
} curl_version_info_data;
|
} curl_version_info_data;
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
@ -380,4 +383,3 @@ Added in 7.10
|
|||||||
# RETURN VALUE
|
# RETURN VALUE
|
||||||
|
|
||||||
A pointer to a curl_version_info_data struct.
|
A pointer to a curl_version_info_data struct.
|
||||||
curl_version(3)
|
|
||||||
|
|||||||
@ -1130,6 +1130,7 @@ CURLVERSION_SEVENTH 7.70.0
|
|||||||
CURLVERSION_SIXTH 7.66.0
|
CURLVERSION_SIXTH 7.66.0
|
||||||
CURLVERSION_TENTH 7.77.0
|
CURLVERSION_TENTH 7.77.0
|
||||||
CURLVERSION_THIRD 7.12.0
|
CURLVERSION_THIRD 7.12.0
|
||||||
|
CURLVERSION_TWELFTH 8.8.0
|
||||||
CURLWARNING 7.66.0
|
CURLWARNING 7.66.0
|
||||||
CURLWS_BINARY 7.86.0
|
CURLWS_BINARY 7.86.0
|
||||||
CURLWS_CLOSE 7.86.0
|
CURLWS_CLOSE 7.86.0
|
||||||
|
|||||||
@ -3038,17 +3038,18 @@ CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *share);
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
CURLVERSION_FIRST,
|
CURLVERSION_FIRST, /* 7.10 */
|
||||||
CURLVERSION_SECOND,
|
CURLVERSION_SECOND, /* 7.11.1 */
|
||||||
CURLVERSION_THIRD,
|
CURLVERSION_THIRD, /* 7.12.0 */
|
||||||
CURLVERSION_FOURTH,
|
CURLVERSION_FOURTH, /* 7.16.1 */
|
||||||
CURLVERSION_FIFTH,
|
CURLVERSION_FIFTH, /* 7.57.0 */
|
||||||
CURLVERSION_SIXTH,
|
CURLVERSION_SIXTH, /* 7.66.0 */
|
||||||
CURLVERSION_SEVENTH,
|
CURLVERSION_SEVENTH, /* 7.70.0 */
|
||||||
CURLVERSION_EIGHTH,
|
CURLVERSION_EIGHTH, /* 7.72.0 */
|
||||||
CURLVERSION_NINTH,
|
CURLVERSION_NINTH, /* 7.75.0 */
|
||||||
CURLVERSION_TENTH,
|
CURLVERSION_TENTH, /* 7.77.0 */
|
||||||
CURLVERSION_ELEVENTH,
|
CURLVERSION_ELEVENTH, /* 7.87.0 */
|
||||||
|
CURLVERSION_TWELFTH, /* 8.8.0 */
|
||||||
CURLVERSION_LAST /* never actually use this */
|
CURLVERSION_LAST /* never actually use this */
|
||||||
} CURLversion;
|
} CURLversion;
|
||||||
|
|
||||||
@ -3057,7 +3058,7 @@ typedef enum {
|
|||||||
meant to be a built-in version number for what kind of struct the caller
|
meant to be a built-in version number for what kind of struct the caller
|
||||||
expects. If the struct ever changes, we redefine the NOW to another enum
|
expects. If the struct ever changes, we redefine the NOW to another enum
|
||||||
from above. */
|
from above. */
|
||||||
#define CURLVERSION_NOW CURLVERSION_ELEVENTH
|
#define CURLVERSION_NOW CURLVERSION_TWELFTH
|
||||||
|
|
||||||
struct curl_version_info_data {
|
struct curl_version_info_data {
|
||||||
CURLversion age; /* age of the returned struct */
|
CURLversion age; /* age of the returned struct */
|
||||||
@ -3117,6 +3118,9 @@ struct curl_version_info_data {
|
|||||||
/* These fields were added in CURLVERSION_ELEVENTH */
|
/* These fields were added in CURLVERSION_ELEVENTH */
|
||||||
/* feature_names is terminated by an entry with a NULL feature name */
|
/* feature_names is terminated by an entry with a NULL feature name */
|
||||||
const char * const *feature_names;
|
const char * const *feature_names;
|
||||||
|
|
||||||
|
/* These fields were added in CURLVERSION_TWELFTH */
|
||||||
|
const char *rtmp_version; /* human readable string. */
|
||||||
};
|
};
|
||||||
typedef struct curl_version_info_data curl_version_info_data;
|
typedef struct curl_version_info_data curl_version_info_data;
|
||||||
|
|
||||||
|
|||||||
@ -35,8 +35,10 @@
|
|||||||
#include "warnless.h"
|
#include "warnless.h"
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
#include <librtmp/rtmp.h>
|
#include <librtmp/rtmp.h>
|
||||||
|
|
||||||
|
/* The last 3 #include files should be in this order */
|
||||||
|
#include "curl_printf.h"
|
||||||
#include "curl_memory.h"
|
#include "curl_memory.h"
|
||||||
/* The last #include file should be: */
|
|
||||||
#include "memdebug.h"
|
#include "memdebug.h"
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(USE_LWIPSOCK)
|
#if defined(_WIN32) && !defined(USE_LWIPSOCK)
|
||||||
@ -341,4 +343,20 @@ static ssize_t rtmp_send(struct Curl_easy *data, int sockindex,
|
|||||||
|
|
||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Curl_rtmp_version(char *version, size_t len)
|
||||||
|
{
|
||||||
|
char suff[2];
|
||||||
|
if(RTMP_LIB_VERSION & 0xff) {
|
||||||
|
suff[0] = (RTMP_LIB_VERSION & 0xff) + 'a' - 1;
|
||||||
|
suff[1] = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
suff[0] = '\0';
|
||||||
|
|
||||||
|
msnprintf(version, len, "librtmp/%d.%d%s",
|
||||||
|
RTMP_LIB_VERSION >> 16, (RTMP_LIB_VERSION >> 8) & 0xff,
|
||||||
|
suff);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* USE_LIBRTMP */
|
#endif /* USE_LIBRTMP */
|
||||||
|
|||||||
@ -30,6 +30,8 @@ extern const struct Curl_handler Curl_handler_rtmpe;
|
|||||||
extern const struct Curl_handler Curl_handler_rtmpte;
|
extern const struct Curl_handler Curl_handler_rtmpte;
|
||||||
extern const struct Curl_handler Curl_handler_rtmps;
|
extern const struct Curl_handler Curl_handler_rtmps;
|
||||||
extern const struct Curl_handler Curl_handler_rtmpts;
|
extern const struct Curl_handler Curl_handler_rtmpts;
|
||||||
|
|
||||||
|
void Curl_rtmp_version(char *version, size_t len);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* HEADER_CURL_RTMP_H */
|
#endif /* HEADER_CURL_RTMP_H */
|
||||||
|
|||||||
@ -55,6 +55,7 @@
|
|||||||
|
|
||||||
#ifdef USE_LIBRTMP
|
#ifdef USE_LIBRTMP
|
||||||
#include <librtmp/rtmp.h>
|
#include <librtmp/rtmp.h>
|
||||||
|
#include "curl_rtmp.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_LIBZ
|
#ifdef HAVE_LIBZ
|
||||||
@ -238,20 +239,8 @@ char *curl_version(void)
|
|||||||
src[i++] = h3_version;
|
src[i++] = h3_version;
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_LIBRTMP
|
#ifdef USE_LIBRTMP
|
||||||
{
|
Curl_rtmp_version(rtmp_version, sizeof(rtmp_version));
|
||||||
char suff[2];
|
src[i++] = rtmp_version;
|
||||||
if(RTMP_LIB_VERSION & 0xff) {
|
|
||||||
suff[0] = (RTMP_LIB_VERSION & 0xff) + 'a' - 1;
|
|
||||||
suff[1] = '\0';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
suff[0] = '\0';
|
|
||||||
|
|
||||||
msnprintf(rtmp_version, sizeof(rtmp_version), "librtmp/%d.%d%s",
|
|
||||||
RTMP_LIB_VERSION >> 16, (RTMP_LIB_VERSION >> 8) & 0xff,
|
|
||||||
suff);
|
|
||||||
src[i++] = rtmp_version;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_HYPER
|
#ifdef USE_HYPER
|
||||||
msnprintf(hyper_buf, sizeof(hyper_buf), "Hyper/%s", hyper_version());
|
msnprintf(hyper_buf, sizeof(hyper_buf), "Hyper/%s", hyper_version());
|
||||||
@ -568,7 +557,8 @@ static curl_version_info_data version_info = {
|
|||||||
NULL, /* zstd version */
|
NULL, /* zstd version */
|
||||||
NULL, /* Hyper version */
|
NULL, /* Hyper version */
|
||||||
NULL, /* gsasl version */
|
NULL, /* gsasl version */
|
||||||
feature_names
|
feature_names,
|
||||||
|
NULL /* rtmp version */
|
||||||
};
|
};
|
||||||
|
|
||||||
curl_version_info_data *curl_version_info(CURLversion stamp)
|
curl_version_info_data *curl_version_info(CURLversion stamp)
|
||||||
@ -676,5 +666,13 @@ curl_version_info_data *curl_version_info(CURLversion stamp)
|
|||||||
feature_names[n] = NULL; /* Terminate array. */
|
feature_names[n] = NULL; /* Terminate array. */
|
||||||
version_info.features = features;
|
version_info.features = features;
|
||||||
|
|
||||||
|
#ifdef USE_LIBRTMP
|
||||||
|
{
|
||||||
|
static char rtmp_version[30];
|
||||||
|
Curl_rtmp_version(rtmp_version, sizeof(rtmp_version));
|
||||||
|
version_info.rtmp_version = rtmp_version;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return &version_info;
|
return &version_info;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user