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;
|
|
}
|