diff options
author | Tristan Gingold <gingold@gcc.gnu.org> | 2012-03-09 10:13:35 +0000 |
---|---|---|
committer | Tristan Gingold <gingold@gcc.gnu.org> | 2012-03-09 10:13:35 +0000 |
commit | 575a62352656475e46054570556afa5b2ecd6882 (patch) | |
tree | c5b021a53417cd026ba2d1ed98fff04bba18c8f3 /gcc/config/vms/vms-c.c | |
parent | 0d7de0e10b5ca459aecadd115cd818e161c3db3f (diff) | |
download | gcc-575a62352656475e46054570556afa5b2ecd6882.zip gcc-575a62352656475e46054570556afa5b2ecd6882.tar.gz gcc-575a62352656475e46054570556afa5b2ecd6882.tar.bz2 |
vms-c.c (vms_construct_include_filename): New function.
2012-03-09 Tristan Gingold <gingold@adacore.com>
* config/vms/vms-c.c (vms_construct_include_filename): New function.
(vms_c_register_includes): Reference it.
From-SVN: r185133
Diffstat (limited to 'gcc/config/vms/vms-c.c')
-rw-r--r-- | gcc/config/vms/vms-c.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/gcc/config/vms/vms-c.c b/gcc/config/vms/vms-c.c index 4a2d19c..69b054d 100644 --- a/gcc/config/vms/vms-c.c +++ b/gcc/config/vms/vms-c.c @@ -304,6 +304,36 @@ vms_c_register_pragma (void) c_register_pragma (NULL, "__extern_prefix", vms_pragma_extern_prefix); } +/* Canonicalize the filename (remove directory prefix, force the .h extension), + and append it to the directory to create the path, but don't + turn / into // or // into ///; // may be a namespace escape. */ + +static char * +vms_construct_include_filename (const char *fname, cpp_dir *dir) +{ + size_t dlen, flen; + char *path; + const char *fbasename = lbasename (fname); + size_t i; + + dlen = dir->len; + flen = strlen (fbasename) + 2; + path = XNEWVEC (char, dlen + 1 + flen + 1); + memcpy (path, dir->name, dlen); + if (dlen && !IS_DIR_SEPARATOR (path[dlen - 1])) + path[dlen++] = '/'; + for (i = 0; i < flen; i++) + if (fbasename[i] == '.') + break; + else + path[dlen + i] = TOLOWER (fbasename[i]); + path[dlen + i + 0] = '.'; + path[dlen + i + 1] = 'h'; + path[dlen + i + 2] = 0; + + return path; +} + /* Standard modules list. */ static const char * const vms_std_modules[] = { "rtldef", "starlet_c", NULL }; @@ -341,7 +371,7 @@ vms_c_register_includes (const char *sysroot, p->next = NULL; p->name = path; p->sysp = 1; - p->construct = 0; + p->construct = vms_construct_include_filename; p->user_supplied_p = 0; add_cpp_dir_path (p, SYSTEM); } |