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/zfxdir.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 unix/os/zfxdir.c (limited to 'unix/os/zfxdir.c') diff --git a/unix/os/zfxdir.c b/unix/os/zfxdir.c new file mode 100644 index 00000000..af3373f9 --- /dev/null +++ b/unix/os/zfxdir.c @@ -0,0 +1,51 @@ +/* Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + */ + +#include +#include +#define import_spp +#define import_kernel +#define import_knames +#include + +/* ZFXDIR -- Extract OS directory prefix from OSFN. The null string is + * returned if there is no directory prefix. The status value is the number + * of characters in the output string. + */ +int +ZFXDIR ( + XCHAR *osfn, /* OS filename [NOT PACKED] */ + XCHAR *osdir, /* receives osdir [NOT PACKED] */ + XINT *maxch, + XINT *nchars +) +{ + register XCHAR *ip, *op; + register int n = *maxch; + XCHAR *last_slash; + + + for (ip=osfn; *ip == ' '; ip++) + ; + + /* A UNIX pathname must begin with a / (anything else is considered an + * IRAF pathname). The OSDIR part includes everything up to the + * rightmost /. A string of the form "/name" has the directory prefix + * "/", i.e. "name" is considered a filename not a subdirectory name. + */ + last_slash = NULL; + op = osdir; + + if (*ip == '/') + for (; --n >= 0 && (*op = *ip++); op++) + if (*op == '/') + last_slash = op; + + if (last_slash != NULL) + op = last_slash + 1; + + *op = XEOS; + *nchars = op - osdir; + + return (XOK); +} -- cgit