summaryrefslogtreecommitdiffstats
path: root/contrib/libf2c/libI77/xwsne.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/libf2c/libI77/xwsne.c')
-rw-r--r--contrib/libf2c/libI77/xwsne.c71
1 files changed, 71 insertions, 0 deletions
diff --git a/contrib/libf2c/libI77/xwsne.c b/contrib/libf2c/libI77/xwsne.c
new file mode 100644
index 0000000..68b606c
--- /dev/null
+++ b/contrib/libf2c/libI77/xwsne.c
@@ -0,0 +1,71 @@
+#include "config.h"
+#include "f2c.h"
+#include "fio.h"
+#include "lio.h"
+#include "fmt.h"
+
+extern int f__Aquote;
+
+static void
+nl_donewrec (void)
+{
+ (*f__donewrec) ();
+ PUT (' ');
+}
+
+#include <string.h>
+
+void
+x_wsne (cilist * a)
+{
+ Namelist *nl;
+ char *s;
+ Vardesc *v, **vd, **vde;
+ ftnint number, type;
+ ftnlen *dims;
+ ftnlen size;
+ extern ftnlen f__typesize[];
+
+ nl = (Namelist *) a->cifmt;
+ PUT ('&');
+ for (s = nl->name; *s; s++)
+ PUT (*s);
+ PUT (' ');
+ f__Aquote = 1;
+ vd = nl->vars;
+ vde = vd + nl->nvars;
+ while (vd < vde)
+ {
+ v = *vd++;
+ s = v->name;
+#ifdef No_Extra_Namelist_Newlines
+ if (f__recpos + strlen (s) + 2 >= L_len)
+#endif
+ nl_donewrec ();
+ while (*s)
+ PUT (*s++);
+ PUT (' ');
+ PUT ('=');
+ number = (dims = v->dims) ? dims[1] : 1;
+ type = v->type;
+ if (type < 0)
+ {
+ size = -type;
+ type = TYCHAR;
+ }
+ else
+ size = f__typesize[type];
+ l_write (&number, v->addr, size, type);
+ if (vd < vde)
+ {
+ if (f__recpos + 2 >= L_len)
+ nl_donewrec ();
+ PUT (',');
+ PUT (' ');
+ }
+ else if (f__recpos + 1 >= L_len)
+ nl_donewrec ();
+ }
+ f__Aquote = 0;
+ PUT ('/');
+}
OpenPOWER on IntegriCloud