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/os/zfgcwd.c | |
download | iraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz |
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'unix/os/zfgcwd.c')
-rw-r--r-- | unix/os/zfgcwd.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/unix/os/zfgcwd.c b/unix/os/zfgcwd.c new file mode 100644 index 00000000..29b476c0 --- /dev/null +++ b/unix/os/zfgcwd.c @@ -0,0 +1,65 @@ +/* Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + */ + +#include <stdio.h> + +#define import_spp +#define import_kernel +#define import_knames +#include <iraf.h> + +extern char oscwd[]; + + +/* ZFGCWD -- Get working (current) UNIX directory. The current working + * directory, once set, is saved in oscwd. + */ +int +ZFGCWD ( + PKCHAR *outstr, + XINT *maxch, + XINT *status +) +{ + register char *ip, *op; + register int n; + char dirname[1025]; +#ifdef POSIX + char *getcwd(); +#else + char *getwd(); +#endif + + /* If cwd is already known, just return the name. Reconstructing + * the pathname of the cwd is expensive on some systems. + */ + if (oscwd[0] != EOS) + ip = oscwd; + else { +#ifdef POSIX + ip = getcwd (dirname, 1024); +#else + ip = getwd (dirname); +#endif + if (ip == NULL) { + *status = XERR; + return (XERR); + } else + strcpy (oscwd, dirname); + } + + op = (char *)outstr; + for (n = *maxch; --n >= 0 && (*op = *ip++) != EOS; ) + op++; + + /* Make sure a concatenatable directory prefix is returned. + */ + if (*(op-1) != '/') { + *op++ = '/'; + *op = EOS; + } + + *status = op - (char *)outstr; + + return (*status); +} |