diff options
author | Joe Hunkeler <jhunkeler@gmail.com> | 2015-08-11 16:51:37 -0400 |
---|---|---|
committer | Joe Hunkeler <jhunkeler@gmail.com> | 2015-08-11 16:51:37 -0400 |
commit | 40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch) | |
tree | 4464880c571602d54f6ae114729bf62a89518057 /unix/boot/bootlib/osfpathname.c | |
download | iraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz |
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'unix/boot/bootlib/osfpathname.c')
-rw-r--r-- | unix/boot/bootlib/osfpathname.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/unix/boot/bootlib/osfpathname.c b/unix/boot/bootlib/osfpathname.c new file mode 100644 index 00000000..17fdba61 --- /dev/null +++ b/unix/boot/bootlib/osfpathname.c @@ -0,0 +1,41 @@ +/* Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + */ + +#include "bootlib.h" + + +/* OS_FPATHNAME -- Map a VFN (virtual filename) into a pathname (filename + * specification which is independent of the current directory). + */ +int +os_fpathname ( + char *vfn, /* virtual filename */ + char *osfn, /* OS filename */ + int maxch +) +{ + XCHAR x_vfn[SZ_PATHNAME+1]; + XCHAR x_osfn[SZ_PATHNAME+1]; + XINT x_maxch = SZ_PATHNAME, x_nchars; + + extern int ZFGCWD(), ZFSUBD(), ZFPATH(); + + + if (vfn[0]) + os_strupk (vfn2osfn(vfn,0), x_vfn, x_maxch); + else + x_vfn[0] = 0; + + if (vfn[0] == '.' && (vfn[1] == EOS || vfn[2] == EOS)) { + ZFGCWD (x_osfn, &x_maxch, &x_nchars); + os_strupk ((char *)x_osfn, x_osfn, x_maxch); + if (vfn[1] == '.') { + os_strupk (vfn, x_vfn, x_maxch); + ZFSUBD (x_osfn, &x_maxch, x_vfn, &x_nchars); + } + } else + ZFPATH (x_vfn, x_osfn, &x_maxch, &x_nchars); + + os_strpak (x_osfn, osfn, maxch); + return (x_nchars); +} |