From: Daniel Stenberg Date: Mon, 15 Apr 2024 06:31:59 +0000 (+0200) Subject: curl_version_info: provide librtmp version X-Git-Tag: curl-8_8_0~229 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dde4b3855e96c9b24b307bbafa54873fdb364233;p=thirdparty%2Fcurl.git curl_version_info: provide librtmp version Ref: https://github.com/curl/curl/pull/13364#issuecomment-2054151942 Reported-by: talregev on github Closes #13368 --- diff --git a/docs/libcurl/curl_version_info.md b/docs/libcurl/curl_version_info.md index b086a39a73..1eb77345ec 100644 --- a/docs/libcurl/curl_version_info.md +++ b/docs/libcurl/curl_version_info.md @@ -104,6 +104,9 @@ typedef struct { /* when 'age' is CURLVERSION_ELEVENTH or higher (>= 7.87.0), the members below exist */ 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; ~~~ @@ -380,4 +383,3 @@ Added in 7.10 # RETURN VALUE A pointer to a curl_version_info_data struct. -curl_version(3) diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions index a627dd68b6..5f810b8028 100644 --- a/docs/libcurl/symbols-in-versions +++ b/docs/libcurl/symbols-in-versions @@ -1130,6 +1130,7 @@ CURLVERSION_SEVENTH 7.70.0 CURLVERSION_SIXTH 7.66.0 CURLVERSION_TENTH 7.77.0 CURLVERSION_THIRD 7.12.0 +CURLVERSION_TWELFTH 8.8.0 CURLWARNING 7.66.0 CURLWS_BINARY 7.86.0 CURLWS_CLOSE 7.86.0 diff --git a/include/curl/curl.h b/include/curl/curl.h index c79003885f..bb9a423baf 100644 --- a/include/curl/curl.h +++ b/include/curl/curl.h @@ -3038,17 +3038,18 @@ CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *share); */ typedef enum { - CURLVERSION_FIRST, - CURLVERSION_SECOND, - CURLVERSION_THIRD, - CURLVERSION_FOURTH, - CURLVERSION_FIFTH, - CURLVERSION_SIXTH, - CURLVERSION_SEVENTH, - CURLVERSION_EIGHTH, - CURLVERSION_NINTH, - CURLVERSION_TENTH, - CURLVERSION_ELEVENTH, + CURLVERSION_FIRST, /* 7.10 */ + CURLVERSION_SECOND, /* 7.11.1 */ + CURLVERSION_THIRD, /* 7.12.0 */ + CURLVERSION_FOURTH, /* 7.16.1 */ + CURLVERSION_FIFTH, /* 7.57.0 */ + CURLVERSION_SIXTH, /* 7.66.0 */ + CURLVERSION_SEVENTH, /* 7.70.0 */ + CURLVERSION_EIGHTH, /* 7.72.0 */ + CURLVERSION_NINTH, /* 7.75.0 */ + CURLVERSION_TENTH, /* 7.77.0 */ + CURLVERSION_ELEVENTH, /* 7.87.0 */ + CURLVERSION_TWELFTH, /* 8.8.0 */ CURLVERSION_LAST /* never actually use this */ } CURLversion; @@ -3057,7 +3058,7 @@ typedef enum { 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 from above. */ -#define CURLVERSION_NOW CURLVERSION_ELEVENTH +#define CURLVERSION_NOW CURLVERSION_TWELFTH struct curl_version_info_data { CURLversion age; /* age of the returned struct */ @@ -3117,6 +3118,9 @@ struct curl_version_info_data { /* These fields were added in CURLVERSION_ELEVENTH */ /* feature_names is terminated by an entry with a NULL feature name */ 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; diff --git a/lib/curl_rtmp.c b/lib/curl_rtmp.c index c1fd981b78..b9ddf7c56f 100644 --- a/lib/curl_rtmp.c +++ b/lib/curl_rtmp.c @@ -35,8 +35,10 @@ #include "warnless.h" #include #include + +/* The last 3 #include files should be in this order */ +#include "curl_printf.h" #include "curl_memory.h" -/* The last #include file should be: */ #include "memdebug.h" #if defined(_WIN32) && !defined(USE_LWIPSOCK) @@ -341,4 +343,20 @@ static ssize_t rtmp_send(struct Curl_easy *data, int sockindex, 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 */ diff --git a/lib/curl_rtmp.h b/lib/curl_rtmp.h index 9b93ee060b..339d3a4384 100644 --- a/lib/curl_rtmp.h +++ b/lib/curl_rtmp.h @@ -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_rtmps; extern const struct Curl_handler Curl_handler_rtmpts; + +void Curl_rtmp_version(char *version, size_t len); #endif #endif /* HEADER_CURL_RTMP_H */ diff --git a/lib/version.c b/lib/version.c index f0fc5ea7ba..8273386148 100644 --- a/lib/version.c +++ b/lib/version.c @@ -55,6 +55,7 @@ #ifdef USE_LIBRTMP #include +#include "curl_rtmp.h" #endif #ifdef HAVE_LIBZ @@ -238,20 +239,8 @@ char *curl_version(void) src[i++] = h3_version; #endif #ifdef USE_LIBRTMP - { - char suff[2]; - 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; - } + Curl_rtmp_version(rtmp_version, sizeof(rtmp_version)); + src[i++] = rtmp_version; #endif #ifdef USE_HYPER 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, /* Hyper version */ NULL, /* gsasl version */ - feature_names + feature_names, + NULL /* rtmp version */ }; 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. */ 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; }