It's the old K&R style of function parameter declaration, prior to the ANSI/ISO standard C. This style is outdated now but can still be found in some very old codes. Although it's still in standard, it's recommended not to write like this anymore.
To decipher, simply move the parameter declaration list back to the function prototype, one-by-one, with the identifiers matching.
Quoting draft N1570, §6.9.1/13:
EXAMPLE 1
extern int max(int a, int b)
{
return a > b ? a : b;
}
EXAMPLE 2
extern int max(a, b)
int a, b;
{
return a > b ? a : b;
}
See Alternative (K&R) C syntax for function declaration versus prototypes