diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-03-01 19:20:32 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-03-01 19:20:32 +0000 |
commit | 2a6755e10d7e48ab8886691d611bdc0aeb366572 (patch) | |
tree | f20c1d3f866646ed85c2b1e35866f1e2d7b36cfc /stream | |
parent | 7d48f09b39ff522977b27aee2c1a8867f28fd6cd (diff) | |
download | mpv-2a6755e10d7e48ab8886691d611bdc0aeb366572.tar.bz2 mpv-2a6755e10d7e48ab8886691d611bdc0aeb366572.tar.xz |
Avoid code duplication and excessively deep nesting in cue_find_bin
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30802 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'stream')
-rw-r--r-- | stream/stream_cue.c | 69 |
1 files changed, 32 insertions, 37 deletions
diff --git a/stream/stream_cue.c b/stream/stream_cue.c index 5b5eb5fdb2..bfcf2b78ac 100644 --- a/stream/stream_cue.c +++ b/stream/stream_cue.c @@ -178,6 +178,7 @@ static int cue_getTrackinfo(char *Line, tTrack *track) * sure the sizes are in sync. */ static int cue_find_bin (char *firstline) { + const char *cur_name; int i,j; char s[256]; char t[256]; @@ -213,67 +214,61 @@ static int cue_find_bin (char *firstline) { } + fd_bin = -1; + for (i = 0; fd_bin == -1 && i < 6; i++) { + switch (i) { + case 0: /* now try to open that file, without path */ - fd_bin = open (bin_filename, O_RDONLY); - if (fd_bin == -1) - { - mp_msg(MSGT_OPEN,MSGL_STATUS, MSGTR_MPDEMUX_CUEREAD_BinFilenameTested, - bin_filename); - + cur_name = bin_filename; + break; + case 1: /* now try to find it with the path of the cue file */ snprintf(s,sizeof( s ),"%s/%s",bincue_path,bin_filename); - fd_bin = open (s, O_RDONLY); - if (fd_bin == -1) - { - mp_msg(MSGT_OPEN,MSGL_STATUS, - MSGTR_MPDEMUX_CUEREAD_BinFilenameTested, s); + cur_name = s; + break; + case 2: /* now I would say the whole filename is shit, build our own */ strncpy(s, cue_filename, strlen(cue_filename) - 3 ); s[strlen(cue_filename) - 3] = '\0'; strcat(s, "bin"); - fd_bin = open (s, O_RDONLY); - if (fd_bin == -1) - { - mp_msg(MSGT_OPEN,MSGL_STATUS, - MSGTR_MPDEMUX_CUEREAD_BinFilenameTested, s); - + cur_name = s; + break; + case 3: /* ok try it with path */ snprintf(t, sizeof( t ), "%s/%s", bincue_path, s); fd_bin = open (t, O_RDONLY); - if (fd_bin == -1) - { - mp_msg(MSGT_OPEN,MSGL_STATUS, - MSGTR_MPDEMUX_CUEREAD_BinFilenameTested,t); + cur_name = t; + break; + case 4: /* now I would say the whole filename is shit, build our own */ strncpy(s, cue_filename, strlen(cue_filename) - 3 ); s[strlen(cue_filename) - 3] = '\0'; strcat(s, "img"); - fd_bin = open (s, O_RDONLY); - if (fd_bin == -1) - { - mp_msg(MSGT_OPEN,MSGL_STATUS, - MSGTR_MPDEMUX_CUEREAD_BinFilenameTested, s); + cur_name = s; + break; + case 5: /* ok try it with path */ snprintf(t, sizeof( t ), "%s/%s", bincue_path, s); - fd_bin = open (t, O_RDONLY); + cur_name = t; + break; + } + fd_bin = open(cur_name, O_RDONLY); + if (fd_bin == -1) { + mp_msg(MSGT_OPEN,MSGL_STATUS, MSGTR_MPDEMUX_CUEREAD_BinFilenameTested, + cur_name); + } + } + if (fd_bin == -1) { - mp_msg(MSGT_OPEN,MSGL_STATUS, - MSGTR_MPDEMUX_CUEREAD_BinFilenameTested, s); - /* I'll give up */ mp_msg(MSGT_OPEN,MSGL_ERR, MSGTR_MPDEMUX_CUEREAD_CannotFindBinFile); return -1; } - } - } else strcpy(bin_filename, t); - - } else strcpy(bin_filename, s); - } else strcpy(bin_filename, s); - - } + if (cur_name != bin_filename) + strcpy(bin_filename, cur_name); mp_msg(MSGT_OPEN,MSGL_INFO, MSGTR_MPDEMUX_CUEREAD_UsingBinFile, bin_filename); |