mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-25 08:45:32 +08:00
re PR libfortran/30005 (Open errors (not/already exists etc.): show also the file name)
2006-12-04 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/30005 * io/open.c: Add errno.h include. (new_unit): Add new error messages with file name for file open. From-SVN: r119530
This commit is contained in:
parent
e5ebbea51e
commit
db7317c3cf
@ -1,3 +1,9 @@
|
|||||||
|
2006-12-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||||
|
|
||||||
|
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 <Thomas.Koenig@online.de>
|
2006-12-01 Thomas Koenig <Thomas.Koenig@online.de>
|
||||||
|
|
||||||
PR libfortran/29568
|
PR libfortran/29568
|
||||||
|
@ -32,6 +32,7 @@ Boston, MA 02110-1301, USA. */
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
#include "libgfortran.h"
|
#include "libgfortran.h"
|
||||||
#include "io.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);
|
s = open_external (opp, flags);
|
||||||
if (s == NULL)
|
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;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user