From be12bfa84cbb027a943e94fc4ec2418b155e9c43 Mon Sep 17 00:00:00 2001 From: Thomas Guillem Date: Thu, 19 Jul 2018 14:01:58 +0200 Subject: [PATCH] strings: add an input_item_t arg to vlc_strfinput() Now, this helper can be used with just an input_item_t. Few formats won't be able to work without the input_thread_t, like rate for example. --- include/vlc_strings.h | 7 ++++--- modules/gui/macosx/VLCCoreInteraction.m | 2 +- modules/gui/macosx/VLCMainWindow.m | 2 +- modules/gui/qt/input_manager.cpp | 2 +- modules/gui/skins2/src/vlcproc.cpp | 2 +- src/input/input.c | 2 +- src/text/strings.c | 7 ++++--- src/video_output/snapshot.c | 2 +- 8 files changed, 14 insertions(+), 12 deletions(-) diff --git a/include/vlc_strings.h b/include/vlc_strings.h index af5df4f6d6..3f0c169e68 100644 --- a/include/vlc_strings.h +++ b/include/vlc_strings.h @@ -139,12 +139,13 @@ VLC_API char *vlc_strftime( const char * ); * * Formats input and input item meta-informations into a heap-allocated string. */ -VLC_API char *vlc_strfinput( input_thread_t *, const char * ); +VLC_API char *vlc_strfinput( input_thread_t *, input_item_t *, const char * ); -static inline char *str_format( input_thread_t *input, const char *fmt ) +static inline char *str_format( input_thread_t *input, input_item_t *item, + const char *fmt ) { char *s1 = vlc_strftime( fmt ); - char *s2 = vlc_strfinput( input, s1 ); + char *s2 = vlc_strfinput( input, item, s1 ); free( s1 ); return s2; } diff --git a/modules/gui/macosx/VLCCoreInteraction.m b/modules/gui/macosx/VLCCoreInteraction.m index ce66f8df23..f127844b57 100644 --- a/modules/gui/macosx/VLCCoreInteraction.m +++ b/modules/gui/macosx/VLCCoreInteraction.m @@ -320,7 +320,7 @@ static int BossCallback(vlc_object_t *p_this, const char *psz_var, NSString *o_name = @""; char *format = var_InheritString(getIntf(), "input-title-format"); if (format) { - char *formated = vlc_strfinput(p_input, format); + char *formated = vlc_strfinput(p_input, NULL, format); free(format); o_name = toNSStr(formated); free(formated); diff --git a/modules/gui/macosx/VLCMainWindow.m b/modules/gui/macosx/VLCMainWindow.m index c49af65e18..bcf03eca5f 100644 --- a/modules/gui/macosx/VLCMainWindow.m +++ b/modules/gui/macosx/VLCMainWindow.m @@ -587,7 +587,7 @@ static const float f_min_window_height = 307.; if (!config_GetPsz("video-title")) { char *format = var_InheritString(getIntf(), "input-title-format"); if (format) { - char *formated = vlc_strfinput(p_input, format); + char *formated = vlc_strfinput(p_input, NULL, format); free(format); aString = toNSStr(formated); free(formated); diff --git a/modules/gui/qt/input_manager.cpp b/modules/gui/qt/input_manager.cpp index 98e3f81f22..e191b0dcfc 100644 --- a/modules/gui/qt/input_manager.cpp +++ b/modules/gui/qt/input_manager.cpp @@ -520,7 +520,7 @@ void InputManager::UpdateName() char *formatted = NULL; if (format != NULL) { - formatted = vlc_strfinput( p_input, format ); + formatted = vlc_strfinput( p_input, NULL, format ); free( format ); if( formatted != NULL ) { diff --git a/modules/gui/skins2/src/vlcproc.cpp b/modules/gui/skins2/src/vlcproc.cpp index d9a050f980..ba2fdf3211 100644 --- a/modules/gui/skins2/src/vlcproc.cpp +++ b/modules/gui/skins2/src/vlcproc.cpp @@ -729,7 +729,7 @@ void VlcProc::update_current_input() char *psz_name = NULL; if( psz_fmt != NULL ) { - psz_name = vlc_strfinput( pInput, psz_fmt ); + psz_name = vlc_strfinput( pInput, NULL, psz_fmt ); free( psz_fmt ); } diff --git a/src/input/input.c b/src/input/input.c index fe622bf81f..85997ef241 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -3347,7 +3347,7 @@ char *input_CreateFilename(input_thread_t *input, const char *dir, const char *filenamefmt, const char *ext) { char *path; - char *filename = str_format(input, filenamefmt); + char *filename = str_format(input, NULL, filenamefmt); if (unlikely(filename == NULL)) return NULL; diff --git a/src/text/strings.c b/src/text/strings.c index 8ae73d3027..c094d374e4 100644 --- a/src/text/strings.c +++ b/src/text/strings.c @@ -538,18 +538,19 @@ static int write_meta(struct vlc_memstream *stream, input_item_t *item, return 0; } -char *vlc_strfinput(input_thread_t *input, const char *s) +char *vlc_strfinput(input_thread_t *input, input_item_t *item, const char *s) { struct vlc_memstream stream[1]; - input_item_t *item = (input != NULL) ? input_GetItem(input) : NULL; - char c; bool b_is_format = false; bool b_empty_if_na = false; assert(s != NULL); + if (!item && input) + item = input_GetItem(input); + vlc_memstream_open(stream); while ((c = *s) != '\0') diff --git a/src/video_output/snapshot.c b/src/video_output/snapshot.c index 35bedad380..8d32ddad95 100644 --- a/src/video_output/snapshot.c +++ b/src/video_output/snapshot.c @@ -150,7 +150,7 @@ int vout_snapshot_SaveImage(char **name, int *sequential, /* */ char *prefix = NULL; if (cfg->prefix_fmt) - prefix = str_format(input, cfg->prefix_fmt); + prefix = str_format(input, NULL, cfg->prefix_fmt); if (prefix) filename_sanitize(prefix); else { -- 2.11.4.GIT