aboutsummaryrefslogtreecommitdiff
path: root/unix/os/zfrnam.c
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /unix/os/zfrnam.c
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'unix/os/zfrnam.c')
-rw-r--r--unix/os/zfrnam.c50
1 files changed, 50 insertions, 0 deletions
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 <stdio.h>
+#define import_kernel
+#define import_knames
+#define import_protect
+#define import_spp
+#include <iraf.h>
+
+/* 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);
+}