From 40e5a5811c6ffce9b0974e93cdd927cbcf60c157 Mon Sep 17 00:00:00 2001 From: Joe Hunkeler Date: Tue, 11 Aug 2015 16:51:37 -0400 Subject: Repatch (from linux) of OSX IRAF --- unix/os/zfpath.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 unix/os/zfpath.c (limited to 'unix/os/zfpath.c') diff --git a/unix/os/zfpath.c b/unix/os/zfpath.c new file mode 100644 index 00000000..76d66929 --- /dev/null +++ b/unix/os/zfpath.c @@ -0,0 +1,50 @@ +/* Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + */ + +#include +#include +#define import_spp +#define import_kernel +#define import_knames +#include + +/* ZFPATH -- Return the absolute pathname equivalent of an OSFN. If the null + * string is given the OSFN of the current working directory is returned. + */ +int +ZFPATH ( + XCHAR *osfn, /* input OS filename [NOT PACKED] */ + XCHAR *pathname, /* output pathname [NOT PACKED] */ + XINT *maxch, + XINT *nchars +) +{ + register char *cp; + register XCHAR *ip, *op; + register int n = *maxch; + PKCHAR cwd[SZ_PATHNAME+1]; + + extern int ZFGCWD(); + + + op = pathname; + for (ip=osfn; *ip == ' '; ip++) + ; + + /* If the OSFN begins with a / it is already an absolute pathname. + */ + if (*ip != '/') { + ZFGCWD (cwd, maxch, nchars); + for (cp=(char *)cwd; --n >= 0 && (*op = *cp++); op++) + ; + } + + /* Append the filename */ + while (--n >= 0 && (*op = *ip++) != XEOS) + op++; + + *op = XEOS; + *nchars = (op - pathname); + + return (XOK); +} -- cgit