| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | /* Unless compiled with -DNO_OVERWRITE, this variant of s_copy allows the * target of an assignment to appear on its right-hand side (contrary * to the Fortran 77 Standard, but in accordance with Fortran 90), * as in  a(2:5) = a(4:7) . */#include "f2c.h"#ifdef __cplusplusextern "C" {#endif/* assign strings:  a = b */#ifdef KR_headersVOID s_copy(a, b, la, lb) register char *a, *b; ftnlen la, lb;#elsevoid s_copy(register char *a, register char *b, ftnlen la, ftnlen lb)#endif{	register char *aend, *bend;	aend = a + la;	if(la <= lb)#ifndef NO_OVERWRITE		if (a <= b || a >= b + la)#endif			while(a < aend)				*a++ = *b++;#ifndef NO_OVERWRITE		else			for(b += la; a < aend; )				*--aend = *--b;#endif	else {		bend = b + lb;#ifndef NO_OVERWRITE		if (a <= b || a >= bend)#endif			while(b < bend)				*a++ = *b++;#ifndef NO_OVERWRITE		else {			a += lb;			while(b < bend)				*--a = *--bend;			a += lb;			}#endif		while(a < aend)			*a++ = ' ';		}	}#ifdef __cplusplus}#endif
 |