merge in onyx changes
[unix-history] / usr / src / usr.bin / pascal / libpc / WRITEF.c
index bc883c6..cbc4e20 100644 (file)
@@ -1,6 +1,6 @@
 /* Copyright (c) 1979 Regents of the University of California */
 
 /* Copyright (c) 1979 Regents of the University of California */
 
-static char sccsid[] = "@(#)WRITEF.c 1.1 %G%";
+static char sccsid[] = "@(#)WRITEF.c 1.2 %G%";
 
 #include "h00vars.h"
 #include "h01errs.h"
 
 #include "h00vars.h"
 #include "h01errs.h"
@@ -8,13 +8,47 @@ static char sccsid[] = "@(#)WRITEF.c 1.1 %G%";
 WRITEF(curfile, d1, d2, d3, d4, d5, d6)
 
        register struct iorec   *curfile;
 WRITEF(curfile, d1, d2, d3, d4, d5, d6)
 
        register struct iorec   *curfile;
-       int                     d1, d2, d3, d4, d5, d6;
+       FILE                    *d1;
+       char                    *d2;
+       long                    d3, d4, d5, d6;
 {
        if (curfile->funit & FREAD) {
                ERROR(EWRITEIT, curfile->pfname);
                return;
        }
 {
        if (curfile->funit & FREAD) {
                ERROR(EWRITEIT, curfile->pfname);
                return;
        }
-       fprintf(d1, d2, d3, d4, d5, d6);
+#      ifdef VAX
+               fprintf(d1, d2, d3, d4, d5, d6);
+#      else
+               {
+               register char   *cp;
+               short           scnt;
+
+               scnt = 0;
+               for (cp = (char *)d2; *cp; )
+                       switch(*cp++) {
+                       case '*':
+                       case 's':
+                       case 'c':
+                               scnt++;
+                       }
+               switch(scnt) {
+               case 0:
+                       fprintf(d1, d2, d3, d4);
+                       break;
+               case 1:
+                       fprintf(d1, d2, (int)d3, d4, d5);
+                       break;
+               case 2:
+                       fprintf(d1, d2, (int)d3, (int)d4, d5, d6);
+                       break;
+               default:
+                       fprintf(stderr, "Panic: bad argcount %d to WRITEF\n",
+                               scnt);
+                       ERROR(EWRITE, curfile->pfname);
+                       return;
+               }
+       }
+#      endif VAX
        if (ferror(curfile->fbuf)) {
                ERROR(EWRITE, curfile->pfname);
                return;
        if (ferror(curfile->fbuf)) {
                ERROR(EWRITE, curfile->pfname);
                return;