Quoting Zach <netrek at gmail.com>:
> I'm trying to find the function definition of pmessage. I did "grep -R
> pmessage *" from the top directory (Vanilla) and I found the function
> prototype in include/proto.h,

View include/proto.h, and right above the prototype, it's documented
to be in ntserv/smessage.c

> Can a function be used with just a prototype?

No, you'll get a linker error.

> Also what does it mean if a function argument is "..." ? I thought
> every function needed a prototype and a definition.

That's the syntax for varargs.  When the number of arguments can be
variable, there's stack manipulation tools for pulling off the
arguments one by one.

--Carlos V.