diff options
author | Pascal Obry <obry@adacore.com> | 2014-08-01 08:09:43 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2014-08-01 10:09:43 +0200 |
commit | 479f90598ae5c20aa042e4700a98f273c8094496 (patch) | |
tree | 985eb45e6091440293155ce13497b176ad648ef3 /gcc/ada | |
parent | 2b9fbec94e888c688fa4d7e1d23658f54cab2b41 (diff) | |
download | gcc-479f90598ae5c20aa042e4700a98f273c8094496.zip gcc-479f90598ae5c20aa042e4700a98f273c8094496.tar.gz gcc-479f90598ae5c20aa042e4700a98f273c8094496.tar.bz2 |
adaint.h, adaint.c (__gnat_open): Added.
2014-08-01 Pascal Obry <obry@adacore.com>
* adaint.h, adaint.c (__gnat_open): Added.
* s-crtl.ads (open): Import __gnat_open for large file support.
From-SVN: r213411
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ada/adaint.c | 21 | ||||
-rw-r--r-- | gcc/ada/adaint.h | 1 | ||||
-rw-r--r-- | gcc/ada/s-crtl.ads | 2 |
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 0c348fa..51f9202 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2014-08-01 Pascal Obry <obry@adacore.com> + + * adaint.h, adaint.c (__gnat_open): Added. + * s-crtl.ads (open): Import __gnat_open for large file support. + 2014-08-01 Robert Dewar <dewar@adacore.com> * sem_case.adb (Dup_Choice): Improve message for integer constants. diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c index e031393..42a8077 100644 --- a/gcc/ada/adaint.c +++ b/gcc/ada/adaint.c @@ -1219,6 +1219,27 @@ __gnat_open_new_temp (char *path, int fmode) return fd < 0 ? -1 : fd; } +int +__gnat_open (char *path, int fmode) +{ + int fd; + +#if defined (VMS) + fd = open (path, fmode, PERM, "mbc=16", "deq=64", "fop=tef"); +#elif defined (__MINGW32__) + { + TCHAR wpath[GNAT_MAX_PATH_LEN]; + + S2WSC (wpath, path, GNAT_MAX_PATH_LEN); + fd = _topen (wpath, fmode, PERM); + } +#else + fd = GNAT_OPEN (path, fmode, PERM); +#endif + + return fd < 0 ? -1 : fd; +} + /**************************************************************** ** Perform a call to GNAT_STAT or GNAT_FSTAT, and extract as much information ** as possible from it, storing the result in a cache for later reuse diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h index fd3ebb2..a870910 100644 --- a/gcc/ada/adaint.h +++ b/gcc/ada/adaint.h @@ -143,6 +143,7 @@ extern FILE *__gnat_fopen (char *, char *, int, char *); extern FILE *__gnat_freopen (char *, char *, FILE *, int, char *); +extern int __gnat_open (char *, int); extern int __gnat_open_read (char *, int); extern int __gnat_open_rw (char *, int); extern int __gnat_open_create (char *, int); diff --git a/gcc/ada/s-crtl.ads b/gcc/ada/s-crtl.ads index ba7332d..15c7c92 100644 --- a/gcc/ada/s-crtl.ads +++ b/gcc/ada/s-crtl.ads @@ -224,7 +224,7 @@ package System.CRTL is pragma Import (C, unlink, "__gnat_unlink"); function open (filename : chars; oflag : int) return int; - pragma Import (C, open, "open"); + pragma Import (C, open, "__gnat_open"); function close (fd : int) return int; pragma Import (C, close, "close"); |