summaryrefslogtreecommitdiffstats
path: root/fortran/src/H5f90kit.c
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src/H5f90kit.c')
-rw-r--r--fortran/src/H5f90kit.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/fortran/src/H5f90kit.c b/fortran/src/H5f90kit.c
new file mode 100644
index 0000000..a0a6962
--- /dev/null
+++ b/fortran/src/H5f90kit.c
@@ -0,0 +1,105 @@
+#include <ctype.h>
+#include <stddef.h>
+#include "H5f90.h"
+
+
+/*
+ * Routines from HDF4 to deal with C-FORTRAN issues.
+ *
+ * HD5c2fstr -- convert a C string into a Fortran string IN PLACE
+ * HD5f2cstring -- convert a Fortran string to a C string
+ */
+
+/* ------------------------------- HDc2fstr -------------------------------
+NAME
+ HD5c2fstr -- convert a C string into a Fortran string IN PLACE
+USAGE
+ int HD5c2fstr(str, len)
+ char * str; IN: string to convert
+ int len; IN: length of Fortran string
+RETURNS
+ SUCCEED
+DESCRIPTION
+ Change a C string (NULL terminated) into a Fortran string.
+ Basically, all that is done is that the NULL is ripped out
+ and the string is padded with spaces
+
+---------------------------------------------------------------------------*/
+int
+HD5c2fstr(char *str, int len)
+{
+ int i;
+
+ i=(int)HDstrlen(str);
+ for (; i < len; i++)
+ str[i] = ' ';
+ return 0;
+} /* HD5c2fstr */
+
+/* ----------------------------- HDf2cstring ------------------------------ */
+/*
+NAME
+ HD5f2cstring -- convert a Fortran string to a C string
+USAGE
+ char * HDf2cstring(fdesc, len)
+ _fcd fdesc; IN: Fortran string descriptor
+ int len; IN: length of Fortran string
+RETURNS
+ Pointer to the C string if success, else NULL
+DESCRIPTION
+ Chop off trailing blanks off of a Fortran string and
+ move it into a newly allocated C string. It is up
+ to the user to free this string.
+
+---------------------------------------------------------------------------*/
+char *
+HD5f2cstring(_fcd fdesc, int len)
+{
+ char *cstr, *str;
+ int i;
+
+ str = _fcdtocp(fdesc);
+ /* This should be equivalent to the above test -QAK */
+ for(i=len-1; i>=0 && !isgraph((int)str[i]); i--)
+ /*EMPTY*/;
+ cstr = (char *) HDmalloc( (i + 2));
+ if (!cstr) return NULL;
+ cstr[i + 1] = '\0';
+ HDmemcpy(cstr,str,i+1);
+ return cstr;
+} /* HD5f2cstring */
+
+/* ---------------------------- HDpackFstring ----------------------------- */
+/*
+NAME
+ HDpackFstring -- convert a C string into a Fortran string
+USAGE
+ intn HDpackFstring(src, dest, len)
+ char * src; IN: source string
+ char * dest; OUT: destination
+ intn len; IN: length of string
+RETURNS
+ SUCCEED / FAIL
+DESCRIPTION
+ given a NULL terminated C string 'src' convert it to
+ a space padded Fortran string 'dest' of length 'len'
+
+ This is very similar to HDc2fstr except that function does
+ it in place and this one copies. We should probably only
+ support one of these.
+
+---------------------------------------------------------------------------*/
+int
+HDpackFstring(char *src, char *dest, int len)
+{
+ int sofar;
+
+ for (sofar = 0; (sofar < len) && (*src != '\0'); sofar++)
+ *dest++ = *src++;
+
+ while (sofar++ < len)
+ *dest++ = ' ';
+
+ return 0;
+} /* HDpackFstring */
+