aboutsummaryrefslogtreecommitdiff
path: root/sys/libc/cfmapfn.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/libc/cfmapfn.c')
-rw-r--r--sys/libc/cfmapfn.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/sys/libc/cfmapfn.c b/sys/libc/cfmapfn.c
new file mode 100644
index 00000000..0d4181a0
--- /dev/null
+++ b/sys/libc/cfmapfn.c
@@ -0,0 +1,36 @@
+/* Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+*/
+
+#define import_spp
+#define import_libc
+#define import_xnames
+#include <iraf.h>
+
+
+/* C_FMAPFN -- Map a VFN (virtual filename) into an OSFN (host system filename).
+*/
+int
+c_fmapfn (
+ char *vfn, /* virtual filename */
+ char *osfn, /* OS filename */
+ int maxch
+)
+{
+ XCHAR x_osfn[SZ_PATHNAME+1];
+ XINT sz_path = SZ_PATHNAME;
+
+
+ /* The OSFN is returned as a packed string in the XCHAR array x_osfn.
+ * An intermediate buffer is used to avoid char->xchar alignment
+ * problems of upward pointer coercion on some machines.
+ */
+ if (maxch)
+ iferr (FMAPFN (c_sppstr(vfn), x_osfn, &sz_path))
+ osfn[0] = EOS;
+ else {
+ (void) strncpy (osfn, (char *)x_osfn, maxch);
+ osfn[maxch-1] = EOS;
+ }
+
+ return (strlen (osfn));
+}