Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (8)
......@@ -47,22 +47,6 @@ struct vlc_access_stream_private
input_thread_t *input;
};
/* Decode URL (which has had its scheme stripped earlier) to a file path. */
char *get_path(const char *location)
{
char *url, *path;
/* Prepending "file://" is a bit hackish. But then again, we do not want
* to hard-code the list of schemes that use file paths in vlc_uri2path().
*/
if (asprintf(&url, "file://%s", location) == -1)
return NULL;
path = vlc_uri2path (url);
free (url);
return path;
}
static void vlc_access_Destroy(stream_t *access)
{
struct vlc_access_private *priv = vlc_stream_Private(access);
......@@ -142,7 +126,7 @@ static stream_t *access_New(vlc_object_t *parent, input_thread_t *input,
goto error;
access->psz_location = p + 3;
access->psz_filepath = get_path(access->psz_location);
access->psz_filepath = vlc_uri2path(url);
if (access->psz_filepath != NULL)
msg_Dbg(access, " (path: %s)", access->psz_filepath);
......
......@@ -118,6 +118,12 @@ demux_t *demux_NewAdvanced( vlc_object_t *p_obj, input_thread_t *p_input,
const char *module, const char *url,
stream_t *s, es_out_t *out, bool b_preparsing )
{
const char *p = strstr(url, "://");
if (p == NULL) {
errno = EINVAL;
return NULL;
}
struct vlc_demux_private *priv;
demux_t *p_demux = vlc_stream_CustomNew(p_obj, demux_DestroyDemux,
sizeof (*priv), "demux");
......@@ -137,9 +143,8 @@ demux_t *demux_NewAdvanced( vlc_object_t *p_obj, input_thread_t *p_input,
if (unlikely(p_demux->psz_url == NULL))
goto error;
const char *p = strstr(p_demux->psz_url, "://");
p_demux->psz_location = (p != NULL) ? (p + 3) : "";
p_demux->psz_filepath = get_path(p_demux->psz_location); /* parse URL */
p_demux->psz_location = p_demux->psz_url + 3 + (p - url);
p_demux->psz_filepath = vlc_uri2path(url); /* parse URL */
if( !b_preparsing )
msg_Dbg( p_obj, "creating demux \"%s\", URL: %s, path: %s",
......
......@@ -104,7 +104,7 @@ static void InputMetaUser( input_thread_t *p_input, vlc_meta_t *p_meta );
static void InputUpdateMeta( input_thread_t *p_input, demux_t *p_demux );
static void InputGetExtraFiles( input_thread_t *p_input,
int *pi_list, char ***pppsz_list,
const char **psz_access, const char *psz_path );
const char **psz_access, const char *mrl );
static void AppendAttachment(input_thread_t* p_input,
int i_new, input_attachment_t **pp_new);
......@@ -2683,7 +2683,7 @@ static int InputSourceInit( input_source_t *in, input_thread_t *p_input,
char **tab;
TAB_INIT( count, tab );
InputGetExtraFiles( p_input, &count, &tab, &psz_access, psz_path );
InputGetExtraFiles( p_input, &count, &tab, &psz_access, psz_mrl );
if( count > 0 )
{
char *list = NULL;
......@@ -3159,7 +3159,7 @@ static void InputUpdateMeta( input_thread_t *p_input, demux_t *p_demux )
*****************************************************************************/
static void InputGetExtraFilesPattern( input_thread_t *p_input,
int *pi_list, char ***pppsz_list,
const char *psz_path,
const char *uri,
const char *psz_match,
const char *psz_format,
int i_start, int i_stop )
......@@ -3168,43 +3168,33 @@ static void InputGetExtraFilesPattern( input_thread_t *p_input,
char **ppsz_list;
TAB_INIT( i_list, ppsz_list );
char *psz_base = strdup( psz_path );
if( !psz_base )
goto exit;
/* Remove the extension */
char *psz_end = &psz_base[strlen(psz_base)-strlen(psz_match)];
assert( psz_end >= psz_base);
*psz_end = '\0';
size_t end = strlen(uri) - strlen(psz_match);
if (unlikely(end > INT_MAX))
goto exit;
/* Try to list files */
for( int i = i_start; i <= i_stop; i++ )
{
char *psz_probe;
if( asprintf( &psz_probe, psz_format, psz_base, i ) < 0 )
char *url;
if( asprintf( &url, psz_format, (int)end, uri, i ) < 0 )
break;
char *filepath = get_path( psz_probe );
char *filepath = vlc_uri2path(url);
struct stat st;
if( filepath == NULL ||
vlc_stat( filepath, &st ) || !S_ISREG( st.st_mode ) || !st.st_size )
{
free( filepath );
free( psz_probe );
free( url );
break;
}
msg_Dbg( p_input, "Detected extra file `%s'", filepath );
char* psz_uri = vlc_path2uri( filepath, NULL );
if( psz_uri )
TAB_APPEND( i_list, ppsz_list, psz_uri );
free( filepath );
free( psz_probe );
TAB_APPEND( i_list, ppsz_list, url );
}
free( psz_base );
exit:
*pi_list = i_list;
*pppsz_list = ppsz_list;
......@@ -3212,7 +3202,7 @@ exit:
static void InputGetExtraFiles( input_thread_t *p_input,
int *pi_list, char ***pppsz_list,
const char **ppsz_access, const char *psz_path )
const char **ppsz_access, const char *mrl )
{
static const struct pattern
{
......@@ -3223,20 +3213,21 @@ static void InputGetExtraFiles( input_thread_t *p_input,
int i_stop;
} patterns[] = {
/* XXX the order is important */
{ "concat", ".001", "%s.%.3d", 2, 999 },
{ NULL, ".part1.rar","%s.part%.1d.rar", 2, 9 },
{ NULL, ".part01.rar","%s.part%.2d.rar", 2, 99, },
{ NULL, ".part001.rar", "%s.part%.3d.rar", 2, 999 },
{ NULL, ".rar", "%s.r%.2d", 0, 99 },
{ "concat", ".mts", "%s.mts%d", 1, 999 },
{ "concat", ".001", "%.*s.%.3d", 2, 999 },
{ NULL, ".part1.rar","%.*s.part%.1d.rar", 2, 9 },
{ NULL, ".part01.rar","%.*s.part%.2d.rar", 2, 99, },
{ NULL, ".part001.rar", "%.*s.part%.3d.rar", 2, 999 },
{ NULL, ".rar", "%.*s.r%.2d", 0, 99 },
{ "concat", ".mts", "%.*s.mts%d", 1, 999 },
};
assert(mrl != NULL);
TAB_INIT( *pi_list, *pppsz_list );
if( ( **ppsz_access && strcmp( *ppsz_access, "file" ) ) || !psz_path )
if( **ppsz_access && strcmp( *ppsz_access, "file" ) )
return;
const size_t i_path = strlen(psz_path);
const size_t i_path = strlen(mrl);
for( size_t i = 0; i < ARRAY_SIZE( patterns ); ++i )
{
......@@ -3246,9 +3237,9 @@ static void InputGetExtraFiles( input_thread_t *p_input,
if( i_path < i_ext )
continue;
if( !strcmp( &psz_path[i_path-i_ext], pat->psz_match ) )
if( !strcmp( &mrl[i_path-i_ext], pat->psz_match ) )
{
InputGetExtraFilesPattern( p_input, pi_list, pppsz_list, psz_path,
InputGetExtraFilesPattern( p_input, pi_list, pppsz_list, mrl,
pat->psz_match, pat->psz_format, pat->i_start, pat->i_stop );
if( *pi_list > 0 && pat->psz_access_force )
......
......@@ -120,6 +120,4 @@ stream_t *stream_FilterChainNew( stream_t *source, const char *list ) VLC_USED;
int stream_extractor_AttachParsed( stream_t** stream, const char* psz_data,
char const** out_extra );
char *get_path(const char *location);
#endif
......@@ -266,7 +266,8 @@ char *vlc_uri2path (const char *url)
/* Decode path */
vlc_uri_decode (path);
if (schemelen == 4 && !strncasecmp (url, "file", 4))
if ((schemelen == 4 && !strncasecmp(url, "file", 4))
|| (schemelen == 3 && !strncasecmp(url, "dir", 3)))
{
#if !defined (_WIN32) && !defined (__OS2__)
/* Leading slash => local path */
......