diff --git a/runtime/tools/xcmdsrv_client.c b/runtime/tools/xcmdsrv_client.c
index 88e8380..c0a60d2 100644
--- a/runtime/tools/xcmdsrv_client.c
+++ b/runtime/tools/xcmdsrv_client.c
@@ -94,12 +94,12 @@
  */
 
     char *
-sendToVim(dpy, name, cmd, asKeys, code)
-    Display	*dpy;			/* Where to send. */
-    char	*name;			/* Where to send. */
-    char	*cmd;			/* What to send. */
-    int		asKeys;			/* Interpret as keystrokes or expr ? */
-    int		*code;			/* Return code. 0 => OK */
+sendToVim(
+    Display	*dpy,			/* Where to send. */
+    char	*name,			/* Where to send. */
+    char	*cmd,			/* What to send. */
+    int		asKeys,			/* Interpret as keystrokes or expr ? */
+    int		*code)			/* Return code. 0 => OK */
 {
     Window	    w;
     Atom	    *plist;
@@ -245,8 +245,7 @@
  */
 
     static int
-SendInit(dpy)
-    Display *dpy;
+SendInit(Display *dpy)
 {
     XErrorHandler old_handler;
 
@@ -289,11 +288,11 @@
  */
 
     static Window
-LookupName(dpy, name, delete, loose)
-    Display *dpy;	/* Display whose registry to check. */
-    char *name;		/* Name of an interpreter. */
-    int delete;		/* If non-zero, delete info about name. */
-    char **loose;	/* Do another search matching -999 if not found
+LookupName(
+    Display *dpy,	/* Display whose registry to check. */
+    char *name,		/* Name of an interpreter. */
+    int delete,		/* If non-zero, delete info about name. */
+    char **loose)	/* Do another search matching -999 if not found
 			   Return result here if a match is found */
 {
     unsigned char   *regProp, *entry;
@@ -396,11 +395,11 @@
 }
 
     static char *
-SendEventProc(dpy, eventPtr, expected, code)
-    Display	   *dpy;
-    XEvent	    *eventPtr;		/* Information about event. */
-    int		    expected;		/* The one were waiting for */
-    int		    *code;		/* Return code. 0 => OK */
+SendEventProc(
+    Display	   *dpy,
+    XEvent	    *eventPtr,		/* Information about event. */
+    int		    expected,		/* The one were waiting for */
+    int		    *code)		/* Return code. 0 => OK */
 {
     unsigned char   *propInfo;
     unsigned char   *p;
@@ -535,13 +534,13 @@
  */
 
     static int
-AppendPropCarefully(dpy, window, property, value, length)
-    Display *dpy;		/* Display on which to operate. */
-    Window window;		/* Window whose property is to
+AppendPropCarefully(
+    Display *dpy,		/* Display on which to operate. */
+    Window window,		/* Window whose property is to
 				 * be modified. */
-    Atom property;		/* Name of property. */
-    char *value;		/* Characters  to append to property. */
-    int  length;		/* How much to append */
+    Atom property,		/* Name of property. */
+    char *value,		/* Characters  to append to property. */
+    int  length)		/* How much to append */
 {
     XErrorHandler old_handler;
 
@@ -560,9 +559,7 @@
  */
 /* ARGSUSED */
     static int
-x_error_check(dpy, error_event)
-    Display *dpy;
-    XErrorEvent	*error_event;
+x_error_check(Display *dpy, XErrorEvent *error_event)
 {
     got_x_error = TRUE;
     return 0;
@@ -573,8 +570,7 @@
  * Actually just checks if the name ends in a digit.
  */
     static int
-IsSerialName(str)
-    char   *str;
+IsSerialName(char *str)
 {
     int len = strlen(str);
 
