blob: a91071eccab369c68f690412c2c030902164a1ce (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
/* 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"
/* assign strings: a = b */
void
s_copy (register char *a, register char *b, ftnlen la, ftnlen lb)
{
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++ = ' ';
}
}
|