From: jvdelisle Date: Tue, 5 Dec 2006 00:51:26 +0000 (+0000) Subject: 2006-12-04 Jerry DeLisle X-Git-Tag: upstream/4.9.2~51705 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=659469f5896d10141c2ab949447fd8cd92bfb0b1;p=platform%2Fupstream%2Flinaro-gcc.git 2006-12-04 Jerry DeLisle PR libfortran/30005 * io/open.c: Add errno.h include. (new_unit): Add new error messages with file name for file open. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119530 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index ca82392..8844e9a 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2006-12-04 Jerry DeLisle + + PR libfortran/30005 + * io/open.c: Add errno.h include. + (new_unit): Add new error messages with file name for file open. + 2006-12-01 Thomas Koenig PR libfortran/29568 diff --git a/libgfortran/io/open.c b/libgfortran/io/open.c index 06fba75..ef1ce1e 100644 --- a/libgfortran/io/open.c +++ b/libgfortran/io/open.c @@ -32,6 +32,7 @@ Boston, MA 02110-1301, USA. */ #include #include #include +#include #include "libgfortran.h" #include "io.h" @@ -374,7 +375,34 @@ new_unit (st_parameter_open *opp, gfc_unit *u, unit_flags * flags) s = open_external (opp, flags); if (s == NULL) { - generate_error (&opp->common, ERROR_OS, NULL); + char *path, *msg; + path = (char *) gfc_alloca (opp->file_len + 1); + msg = (char *) gfc_alloca (opp->file_len + 51); + unpack_filename (path, opp->file, opp->file_len); + + switch (errno) + { + case ENOENT: + st_sprintf (msg, "File '%s' does not exist", path); + break; + + case EEXIST: + st_sprintf (msg, "File '%s' already exists", path); + break; + + case EACCES: + st_sprintf (msg, "Permission denied trying to open file '%s'", path); + break; + + case EISDIR: + st_sprintf (msg, "'%s' is a directory", path); + break; + + default: + msg = NULL; + } + + generate_error (&opp->common, ERROR_OS, msg); goto cleanup; }