summaryrefslogtreecommitdiffstats
path: root/stream
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-03-01 19:20:32 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-03-01 19:20:32 +0000
commit2a6755e10d7e48ab8886691d611bdc0aeb366572 (patch)
treef20c1d3f866646ed85c2b1e35866f1e2d7b36cfc /stream
parent7d48f09b39ff522977b27aee2c1a8867f28fd6cd (diff)
downloadmpv-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.c69
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);