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/zfrnam.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 unix/os/zfrnam.c (limited to 'unix/os/zfrnam.c') diff --git a/unix/os/zfrnam.c b/unix/os/zfrnam.c new file mode 100644 index 00000000..cb0452e5 --- /dev/null +++ b/unix/os/zfrnam.c @@ -0,0 +1,50 @@ +/* Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + */ + +#include +#define import_kernel +#define import_knames +#define import_protect +#define import_spp +#include + +/* ZFRNAM -- Rename a file. Do nothing to original file if operation + * fails. File must retain all attributes; special action is required + * to transfer file protection. + */ +int +ZFRNAM ( + PKCHAR *oldname, + PKCHAR *newname, + XINT *status +) +{ + static XINT queryprot = QUERY_PROTECTION; + static XINT removeprot = REMOVE_PROTECTION; + static XINT setprot = SET_PROTECTION; + XINT protected; + + extern int ZFPROT(); + + + /* Most remove file protection before renaming the file, else + * zfprot will not find the file and will refuse to delete the + * .. link to the original file. + */ + ZFPROT (oldname, &queryprot, &protected); + if (protected == XYES) + ZFPROT (oldname, &removeprot, status); + + if (rename ((char *)oldname, (char *)newname) == ERR) { + if (protected == XYES) + ZFPROT (oldname, &setprot, status); + *status = XERR; + } else { + if (protected == XYES) + ZFPROT (newname, &setprot, status); + else + *status = XOK; + } + + return (*status); +} -- cgit