Index: help/help_mp-en.h =================================================================== RCS file: /cvsroot/mplayer/main/help/help_mp-en.h,v retrieving revision 1.210 diff -u -r1.210 help_mp-en.h --- help/help_mp-en.h 10 Dec 2005 10:19:15 -0000 1.210 +++ help/help_mp-en.h 13 Dec 2005 03:06:00 -0000 @@ -489,7 +489,17 @@ #define MSGTR_ReadSTDIN "Reading from stdin...\n" #define MSGTR_UnableOpenURL "Unable to open URL: %s\n" #define MSGTR_ConnToServer "Connected to server: %s\n" +#define MSGTR_AccessDenied "Access denied: '%s'\n" +#define MSGTR_TooManySymlinks "Too many symbolic links (loop?): '%s'\n" +#define MSGTR_ProcessTooManyFiles "Process has too many open files: '%s'\n" +#define MSGTR_NameTooLong "Path name too long: '%s'\n" +#define MSGTR_SystemTooManyFiles "System has too many open files: '%s'\n" +#define MSGTR_NoSuchDevice "No such device: '%s'\n" #define MSGTR_FileNotFound "File not found: '%s'\n" +#define MSGTR_NoKernelMem "Insufficient kernel memory: '%s'\n" +#define MSGTR_NoSuchDir "No such directory in: '%s'\n" +#define MSGTR_FileTooLarge "File too large: '%s'\n" +#define MSGTR_UnknownOpenError "Unknown error opening: '%s'\n" #define MSGTR_SMBInitError "Cannot init the libsmbclient library: %d\n" #define MSGTR_SMBFileNotFound "Could not open from LAN: '%s'\n" Index: libmpdemux/demuxer.c =================================================================== RCS file: /cvsroot/mplayer/main/libmpdemux/demuxer.c,v retrieving revision 1.210 diff -u -r1.210 demuxer.c --- libmpdemux/demuxer.c 18 Nov 2005 14:39:19 -0000 1.210 +++ libmpdemux/demuxer.c 13 Dec 2005 03:06:01 -0000 @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -820,6 +821,48 @@ return vd; } +/* print appropriate error message when demuxer can't open a file */ +void demux_open_print_error(int err, const char *filename){ + int msg; + switch(err) { + case EACCES: + msg = MSGTR_AccessDenied; + break; + case ELOOP: + msg = MSGTR_TooManySymlinks; + break; + case EMFILE: + msg = MSGTR_ProcessTooManyFiles; + break; + case ENAMETOOLONG: + msg = MSGTR_NameTooLong; + break; + case ENFILE: + msg = MSGTR_SystemTooManyFiles; + break; + case ENODEV: + case ENXIO: + msg = MSGTR_NoSuchDevice; + break; + case ENOENT: + msg = MSGTR_FileNotFound; + break; + case ENOMEM: + msg = MSGTR_NoKernelMem; + break; + case ENOTDIR: + msg = MSGTR_NoSuchDir; + break; + case EOVERFLOW: + msg = MSGTR_FileTooLarge; + break; + case EPERM: /* O_NOATIME not used */ + default: + msg = MSGTR_UnknownOpenError; + break; + } + mp_msg(MSGT_OPEN, MSGL_ERR, msg, filename); +} int demux_seek(demuxer_t *demuxer,float rel_seek_secs,int flags){ demux_stream_t *d_audio=demuxer->audio; Index: libmpdemux/demuxer.h =================================================================== RCS file: /cvsroot/mplayer/main/libmpdemux/demuxer.h,v retrieving revision 1.84 diff -u -r1.84 demuxer.h --- libmpdemux/demuxer.h 17 Sep 2005 18:05:55 -0000 1.84 +++ libmpdemux/demuxer.h 13 Dec 2005 03:06:01 -0000 @@ -298,6 +298,7 @@ } demuxer_t* demux_open(stream_t *stream,int file_format,int aid,int vid,int sid,char* filename); +void demux_open_print_error(int err, const char *filename); int demux_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); demuxer_t* new_demuxers_demuxer(demuxer_t* vd, demuxer_t* ad, demuxer_t* sd); Index: libmpdemux/stream_file.c =================================================================== RCS file: /cvsroot/mplayer/main/libmpdemux/stream_file.c,v retrieving revision 1.11 diff -u -r1.11 stream_file.c --- libmpdemux/stream_file.c 18 Nov 2005 14:39:20 -0000 1.11 +++ libmpdemux/stream_file.c 13 Dec 2005 03:06:01 -0000 @@ -2,6 +2,7 @@ #include "config.h" #include +#include #include #include #include @@ -119,7 +120,7 @@ } else { f=open(filename,m); if(f<0) { - mp_msg(MSGT_OPEN,MSGL_ERR,MSGTR_FileNotFound,filename); + demux_open_print_error(errno, filename); m_struct_free(&stream_opts,opts); return STREAM_ERROR; } Index: libmpdemux/stream_livedotcom.c =================================================================== RCS file: /cvsroot/mplayer/main/libmpdemux/stream_livedotcom.c,v retrieving revision 1.4 diff -u -r1.4 stream_livedotcom.c --- libmpdemux/stream_livedotcom.c 5 Dec 2005 01:24:27 -0000 1.4 +++ libmpdemux/stream_livedotcom.c 13 Dec 2005 03:06:01 -0000 @@ -6,6 +6,7 @@ #include #include #include +#include #include "stream.h" #include "network.h" @@ -70,7 +71,7 @@ f = open(filename,O_RDONLY); #endif if(f < 0) { - mp_msg(MSGT_OPEN,MSGL_ERR,MSGTR_FileNotFound,filename); + demux_open_print_error(errno, filename); return STREAM_ERROR; }