/* version.c */
extern void make_version __ARGS((void));
extern int highest_patch __ARGS((void));
extern int has_patch __ARGS((int n));
extern void ex_version __ARGS((exarg_T *eap));
extern void list_version __ARGS((void));
extern void intro_message __ARGS((int colon));
extern void ex_intro __ARGS((exarg_T *eap));
/* vim: set ft=c : */
