Message ID | CADxeRwkjTZV1epWLJFvGm0n0UJrpU_d=+uH-OpVK06qe+v6xhw@mail.gmail.com |
---|---|
State | Superseded |
Headers | show |
ignore it please, i will fix some problem 2016-09-16 0:30 GMT+08:00 Steven Liu <lingjiujianke@gmail.com>: > > > 2016-09-16 0:21 GMT+08:00 Clément Bœsch <u@pkh.me>: > >> On Fri, Sep 16, 2016 at 12:04:34AM +0800, Steven Liu wrote: >> > 2016-09-15 23:42 GMT+08:00 Clément Bœsch <u@pkh.me>: >> > >> > > On Thu, Sep 15, 2016 at 05:39:25PM +0200, Nicolas George wrote: >> > > > Le decadi 30 fructidor, an CCXXIV, Clement Boesch a écrit : >> > > > > Yes, surrounded by the #ifdefery so it will go away with the >> option. >> > > > > >> > > > > Note: use av_strdup() to transfer from one field to the other >> > > > >> > > > Another possibility would be to implement AV_OPT_FLAG_DEPRECATED >> and let >> > > the >> > > > options system itself print the warning. >> > > > >> > > >> > > That's not a bad idea; you might need to add a field to redirect to >> > > the new option though. >> > > >> > > -- >> > > Clément B. >> > > _______________________________________________ >> > > >> > >> > >> > Hi guys, >> > >> > are you mean like this? >> > >> > localhost:xxx StevenLiu$ make >> > CC libavformat/http.o >> > src/libavformat/http.c:1041:27: warning: 'user_agent_deprecated' is >> > deprecated [-Wdeprecated-declarations] >> > if (av_strncasecmp(s->user_agent_deprecated, DEFAULT_USER_AGENT, >> > strlen(DEFAULT_USER_AGENT))) { >> > ^ >> > src/libavformat/http.c:74:32: note: 'user_agent_deprecated' has been >> > explicitly marked deprecated here >> > attribute_deprecated char *user_agent_deprecated; >> > ^ >> > src/libavformat/http.c:1043:38: warning: 'user_agent_deprecated' is >> > deprecated [-Wdeprecated-declarations] >> > s->user_agent = av_strdup(s->user_agent_deprecated); >> > ^ >> > src/libavformat/http.c:74:32: note: 'user_agent_deprecated' has been >> > explicitly marked deprecated here >> > attribute_deprecated char *user_agent_deprecated; >> > ^ >> > 2 warnings generated. >> > AR libavformat/libavformat.a >> > >> > >> > and the modify like this? >> > >> > >> > localhost:xxx StevenLiu$ git diff >> > diff --git a/libavformat/http.c b/libavformat/http.c >> > index adb3d92..df9cf1a 100644 >> > --- a/libavformat/http.c >> > +++ b/libavformat/http.c >> > @@ -71,6 +71,7 @@ typedef struct HTTPContext { >> > char *headers; >> > char *mime_type; >> > char *user_agent; >> > + attribute_deprecated char *user_agent_deprecated; >> >> not attribute_deprecated >> >> #if FF_API_HTTP_USER_AGENT >> char *user_agent_deprecated; >> #endif >> >> > char *content_type; >> > /* Set if the server correctly handles Connection: close and will >> close >> > * the connection after feeding us the content. */ >> > @@ -130,7 +131,7 @@ static const AVOption options[] = { >> > { "http_proxy", "set HTTP proxy to tunnel through", >> > OFFSET(http_proxy), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D | E }, >> > { "headers", "set custom HTTP headers, can override built in >> default >> > headers", OFFSET(headers), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D >> | E >> > }, >> > { "content_type", "set a specific content type for the POST >> messages", >> > OFFSET(content_type), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D | E >> }, >> > - { "user_agent", "override User-Agent header", OFFSET(user_agent), >> > AV_OPT_TYPE_STRING, { .str = DEFAULT_USER_AGENT }, 0, 0, D }, >> > + { "user_agent", "override User-Agent header", >> >> You want to deprecate user-agent, not user_agent. >> >> #if FF_API_HTTP_USER_AGENT >> { "user-agent", "override User-Agent header", ... >> #endif >> >> > OFFSET(user_agent_deprecated), AV_OPT_TYPE_STRING, { .str = >> > DEFAULT_USER_AGENT }, 0, 0, D }, >> > { "user-agent", "override User-Agent header", OFFSET(user_agent), >> > AV_OPT_TYPE_STRING, { .str = DEFAULT_USER_AGENT }, 0, 0, D }, >> > { "multiple_requests", "use persistent connections", >> > OFFSET(multiple_requests), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, D | E >> }, >> > { "post_data", "set custom HTTP post data", OFFSET(post_data), >> > AV_OPT_TYPE_BINARY, .flags = D | E }, >> > @@ -1037,6 +1038,10 @@ static int http_connect(URLContext *h, const char >> > *path, const char *local_path, >> > send_expect_100 = 1; >> > } >> > >> > + if (av_strncasecmp(s->user_agent_deprecated, DEFAULT_USER_AGENT, >> > strlen(DEFAULT_USER_AGENT))) { >> >> - you need to check s->user_agent, not s->user_agent_deprecated >> - strcmp() is enough >> >> > + av_log(s, AV_LOG_WARNING, "the user_agent option is deprecated, >> > please use user-agent option\n"); >> >> the other way around >> >> > + s->user_agent = av_strdup(s->user_agent_deprecated); >> > + } >> >> -- >> Clément B. >> _______________________________________________ >> > > > > > > patch update > > > > > add a FF_OPT_FLAG_DEPRECATED define for compile. > add a new variable for user_agent to give a deprecated warning message > --- > doc/protocols.texi | 4 +++- > libavformat/http.c | 14 ++++++++++++-- > libavformat/version.h | 3 +++ > 3 files changed, 18 insertions(+), 3 deletions(-) > > diff --git a/doc/protocols.texi b/doc/protocols.texi > index 470c99c..3acdc78 100644 > --- a/doc/protocols.texi > +++ b/doc/protocols.texi > @@ -292,10 +292,12 @@ Use persistent connections if set to 1, default is 0. > Set custom HTTP post data. > > @item user-agent > -@item user_agent > Override the User-Agent header. If not specified the protocol will use a > string describing the libavformat build. ("Lavf/<version>") > > +@item user_agent > +This is a deprecated option, you can use user-agent instead it. > + > @item timeout > Set timeout in microseconds of socket I/O operations used by the > underlying low level > operation. By default it is set to -1, which means that the timeout is > diff --git a/libavformat/http.c b/libavformat/http.c > index adb3d92..7dbe614 100644 > --- a/libavformat/http.c > +++ b/libavformat/http.c > @@ -71,6 +71,9 @@ typedef struct HTTPContext { > char *headers; > char *mime_type; > char *user_agent; > +#ifdef FF_OPT_FLAG_DEPRECATED > + attribute_deprecated char *user_agent_deprecated; > +#endif > char *content_type; > /* Set if the server correctly handles Connection: close and will > close > * the connection after feeding us the content. */ > @@ -130,7 +133,9 @@ static const AVOption options[] = { > { "http_proxy", "set HTTP proxy to tunnel through", > OFFSET(http_proxy), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D | E }, > { "headers", "set custom HTTP headers, can override built in default > headers", OFFSET(headers), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D | E > }, > { "content_type", "set a specific content type for the POST > messages", OFFSET(content_type), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, > D | E }, > - { "user_agent", "override User-Agent header", OFFSET(user_agent), > AV_OPT_TYPE_STRING, { .str = DEFAULT_USER_AGENT }, 0, 0, D }, > +#ifdef FF_OPT_FLAG_DEPRECATED > + { "user_agent", "override User-Agent header", > OFFSET(user_agent_deprecated), AV_OPT_TYPE_STRING, { .str = > DEFAULT_USER_AGENT }, 0, 0, D }, > +#endif > { "user-agent", "override User-Agent header", OFFSET(user_agent), > AV_OPT_TYPE_STRING, { .str = DEFAULT_USER_AGENT }, 0, 0, D }, > { "multiple_requests", "use persistent connections", > OFFSET(multiple_requests), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, D | E }, > { "post_data", "set custom HTTP post data", OFFSET(post_data), > AV_OPT_TYPE_BINARY, .flags = D | E }, > @@ -1036,7 +1041,12 @@ static int http_connect(URLContext *h, const char > *path, const char *local_path, > s->http_code != 401) > send_expect_100 = 1; > } > - > +#ifdef FF_OPT_FLAG_DEPRECATED > + if (av_strncmp(s->user_agent_deprecated, DEFAULT_USER_AGEN)) { > + av_log(s, AV_LOG_WARNING, "the user_agent option is deprecated, > please use user-agent option\n"); > + s->user_agent = av_strdup(s->user_agent_deprecated); > + } > +#endif > /* set default headers if needed */ > if (!has_header(s->headers, "\r\nUser-Agent: ")) > len += av_strlcatf(headers + len, sizeof(headers) - len, > diff --git a/libavformat/version.h b/libavformat/version.h > index 34226ca..518aac7 100644 > --- a/libavformat/version.h > +++ b/libavformat/version.h > @@ -82,6 +82,9 @@ > #ifndef FF_API_NOCONST_GET_SIDE_DATA > #define FF_API_NOCONST_GET_SIDE_DATA (LIBAVFORMAT_VERSION_MAJOR < 58) > #endif > +#ifndef FF_OPT_FLAG_DEPRECATED > +#define FF_OPT_FLAG_DEPRECATED (LIBAVFORMAT_VERSION_MAJOR < 58) > +#endif > > #ifndef FF_API_R_FRAME_RATE > #define FF_API_R_FRAME_RATE 1 > -- > 2.7.4 (Apple Git-66) >
diff --git a/doc/protocols.texi b/doc/protocols.texi index 470c99c..3acdc78 100644 --- a/doc/protocols.texi +++ b/doc/protocols.texi @@ -292,10 +292,12 @@ Use persistent connections if set to 1, default is 0. Set custom HTTP post data. @item user-agent -@item user_agent Override the User-Agent header. If not specified the protocol will use a string describing the libavformat build. ("Lavf/<version>") +@item user_agent +This is a deprecated option, you can use user-agent instead it. + @item timeout Set timeout in microseconds of socket I/O operations used by the underlying low level operation. By default it is set to -1, which means that the timeout is diff --git a/libavformat/http.c b/libavformat/http.c index adb3d92..7dbe614 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -71,6 +71,9 @@ typedef struct HTTPContext { char *headers; char *mime_type; char *user_agent; +#ifdef FF_OPT_FLAG_DEPRECATED + attribute_deprecated char *user_agent_deprecated; +#endif char *content_type; /* Set if the server correctly handles Connection: close and will close * the connection after feeding us the content. */ @@ -130,7 +133,9 @@ static const AVOption options[] = { { "http_proxy", "set HTTP proxy to tunnel through", OFFSET(http_proxy), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D | E }, { "headers", "set custom HTTP headers, can override built in default headers", OFFSET(headers), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D | E }, { "content_type", "set a specific content type for the POST messages", OFFSET(content_type), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D | E }, - { "user_agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, { .str = DEFAULT_USER_AGENT }, 0, 0, D }, +#ifdef FF_OPT_FLAG_DEPRECATED + { "user_agent", "override User-Agent header", OFFSET(user_agent_deprecated), AV_OPT_TYPE_STRING, { .str = DEFAULT_USER_AGENT }, 0, 0, D }, +#endif { "user-agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, { .str = DEFAULT_USER_AGENT }, 0, 0, D }, { "multiple_requests", "use persistent connections", OFFSET(multiple_requests), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, D | E }, { "post_data", "set custom HTTP post data", OFFSET(post_data), AV_OPT_TYPE_BINARY, .flags = D | E }, @@ -1036,7 +1041,12 @@ static int http_connect(URLContext *h, const char *path, const char *local_path, s->http_code != 401) send_expect_100 = 1; } - +#ifdef FF_OPT_FLAG_DEPRECATED + if (av_strncmp(s->user_agent_deprecated, DEFAULT_USER_AGEN)) { + av_log(s, AV_LOG_WARNING, "the user_agent option is deprecated, please use user-agent option\n"); + s->user_agent = av_strdup(s->user_agent_deprecated); + } +#endif /* set default headers if needed */ if (!has_header(s->headers, "\r\nUser-Agent: ")) len += av_strlcatf(headers + len, sizeof(headers) - len, diff --git a/libavformat/version.h b/libavformat/version.h index 34226ca..518aac7 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -82,6 +82,9 @@ #ifndef FF_API_NOCONST_GET_SIDE_DATA #define FF_API_NOCONST_GET_SIDE_DATA (LIBAVFORMAT_VERSION_MAJOR < 58) #endif +#ifndef FF_OPT_FLAG_DEPRECATED +#define FF_OPT_FLAG_DEPRECATED (LIBAVFORMAT_VERSION_MAJOR < 58) +#endif #ifndef FF_API_R_FRAME_RATE #define FF_API_R_FRAME_RATE 1