52 lines
704 B
C
52 lines
704 B
C
|
extern int f1 (int, void *);
|
||
|
extern int *f2 (void) __attribute__ ((__const__));
|
||
|
extern int f3 (int, void *);
|
||
|
|
||
|
int
|
||
|
test (int x, char *y, int z)
|
||
|
{
|
||
|
int b = 0;
|
||
|
|
||
|
if (x < 1024)
|
||
|
{
|
||
|
y[0] = '\0';
|
||
|
|
||
|
do
|
||
|
{
|
||
|
switch (f1 (x, y + b))
|
||
|
{
|
||
|
case -1:
|
||
|
if (b == 0)
|
||
|
return -1;
|
||
|
else
|
||
|
return b;
|
||
|
|
||
|
default:
|
||
|
b++;
|
||
|
}
|
||
|
}
|
||
|
while (y[b - 1] != '\0' && y[b - 1] != '\n' && b < z);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
do
|
||
|
{
|
||
|
switch (f3 (x, y + b))
|
||
|
{
|
||
|
case -1:
|
||
|
if ((*f2 ()) == 4)
|
||
|
continue;
|
||
|
if (b == 0)
|
||
|
return -1;
|
||
|
else
|
||
|
return b;
|
||
|
|
||
|
default:
|
||
|
b++;
|
||
|
}
|
||
|
}
|
||
|
while (y[b - 1] != '\0' && y[b - 1] != '\n' && b < z);
|
||
|
}
|
||
|
return b;
|
||
|
}
|