diff --git a/PC/os2emx/dlfcn.c b/PC/os2emx/dlfcn.c
index acf0197..c9307da 100644
--- a/PC/os2emx/dlfcn.c
+++ b/PC/os2emx/dlfcn.c
@@ -29,10 +29,9 @@
 
 ******************************************************************/
 
-/*
-    This library implements dlopen() - functions for OS/2 using
-    DosLoadModule() and company.
-*/
+/* This library implements dlopen() - Unix-like dynamic linking
+ * emulation functions for OS/2 using DosLoadModule() and company.
+ */
 
 #define INCL_DOS
 #define INCL_DOSERRORS
@@ -46,8 +45,6 @@
 #include <string.h>
 #include <malloc.h>
 
-/*-------------------------------------- Unix-like dynamic linking emulation -*/
-
 typedef struct _track_rec {
 	char *name;
 	HMODULE handle;
@@ -55,8 +52,8 @@
 	struct _track_rec *next;
 } tDLLchain, *DLLchain;
 
-static DLLchain dlload = NULL;		/* A simple chained list of DLL names */
-static char dlerr [256];			    /* last error text string */
+static DLLchain dlload = NULL;	/* A simple chained list of DLL names */
+static char dlerr [256];	/* last error text string */
 static void *last_id;
 
 static DLLchain find_id(void *id)
@@ -65,13 +62,13 @@
 
 	for (tmp = dlload; tmp; tmp = tmp->next)
 		if (id == tmp->id)
-			return (tmp);
+			return tmp;
 
-	return (NULL);
+	return NULL;
 }
 
 /* load a dynamic-link library and return handle */
-void *dlopen (char *filename, int flags)
+void *dlopen(char *filename, int flags)
 {
 	HMODULE hm;
 	DLLchain tmp;
@@ -85,10 +82,10 @@
 
 	if (!tmp)
 	{
-		tmp = (DLLchain)malloc (sizeof (tDLLchain));
+		tmp = (DLLchain) malloc(sizeof(tDLLchain));
 		if (!tmp)
 			goto nomem;
-		tmp->name = strdup (filename);
+		tmp->name = strdup(filename);
 		tmp->next = dlload;
 		set_chain = 1;
 	}
@@ -97,14 +94,15 @@
 	{
 		case NO_ERROR:
 			tmp->handle = hm;
-			if (set_chain) {
-				do {
+			if (set_chain)
+			{
+				do
 					last_id++;
-				} while ((last_id == 0) || (find_id(last_id)));
+				while ((last_id == 0) || (find_id(last_id)));
 				tmp->id = last_id;
 				dlload = tmp;
 			}
-			return (tmp->id);
+			return tmp->id;
 		case ERROR_FILE_NOT_FOUND:
 		case ERROR_PATH_NOT_FOUND:
 			errtxt = "module `%s' not found";
@@ -145,34 +143,35 @@
 			errtxt = "cause `%s', error code = %d";
 			break;
 	}
-	snprintf (dlerr, sizeof (dlerr), errtxt, &err, rc);
-	if (tmp) {
+	snprintf(dlerr, sizeof(dlerr), errtxt, &err, rc);
+	if (tmp)
+	{
 		if (tmp->name)
 			free(tmp->name);
-		free (tmp);
+		free(tmp);
 	}
-	return (0);
+	return 0;
 }
 
 /* return a pointer to the `symbol' in DLL */
-void *dlsym (void *handle, char *symbol)
+void *dlsym(void *handle, char *symbol)
 {
 	int rc = 0;
 	PFN addr;
 	char *errtxt;
 	int symord = 0;
-	DLLchain tmp = find_id (handle);
+	DLLchain tmp = find_id(handle);
 
 	if (!tmp)
 		goto inv_handle;
 
 	if (*symbol == '#')
-		symord = atoi (symbol + 1);
+		symord = atoi(symbol + 1);
 
 	switch (rc = DosQueryProcAddr(tmp->handle, symord, symbol, &addr))
 	{
 		case NO_ERROR:
-			return ((void *)addr);
+			return (void *)addr;
 		case ERROR_INVALID_HANDLE:
 inv_handle:
 			errtxt = "invalid module handle";
@@ -185,40 +184,40 @@
 			errtxt = "symbol `%s', error code = %d";
 			break;
 	}
-	snprintf (dlerr, sizeof (dlerr), errtxt, symbol, rc);
-	return (NULL);
+	snprintf(dlerr, sizeof(dlerr), errtxt, symbol, rc);
+	return NULL;
 }
 
 /* free dynamicaly-linked library */
-int dlclose (void *handle)
+int dlclose(void *handle)
 {
 	int rc;
-	DLLchain tmp = find_id (handle);
+	DLLchain tmp = find_id(handle);
 
 	if (!tmp)
 		goto inv_handle;
 
-	switch (rc = DosFreeModule (tmp->handle))
+	switch (rc = DosFreeModule(tmp->handle))
 	{
 		case NO_ERROR:
-			free (tmp->name);
+			free(tmp->name);
 			dlload = tmp->next;
-			free (tmp);
-			return (0);
+			free(tmp);
+			return 0;
 		case ERROR_INVALID_HANDLE:
 inv_handle:
 			strcpy(dlerr, "invalid module handle");
-			return (-1);
+			return -1;
 		case ERROR_INVALID_ACCESS:
-			strcpy (dlerr, "access denied");
-			return (-1);
+			strcpy(dlerr, "access denied");
+			return -1;
 		default:
-			return (-1);
+			return -1;
 	}
 }
 
 /* return a string describing last occured dl error */
 char *dlerror()
 {
-	return (dlerr);
+	return dlerr;
 }
diff --git a/PC/os2emx/dlfcn.h b/PC/os2emx/dlfcn.h
index 214ddac..c429834 100644
--- a/PC/os2emx/dlfcn.h
+++ b/PC/os2emx/dlfcn.h
@@ -29,21 +29,22 @@
 
 ******************************************************************/
 
-/*
-    This library implements dlopen() - functions for OS/2 using
-    DosLoadModule() and company.
-*/
+/* This library implements dlopen() - Unix-like dynamic linking
+ * emulation functions for OS/2 using DosLoadModule() and company.
+ */
 
 #ifndef _DLFCN_H
 #define _DLFCN_H
 
-/*-------------------------------------- Unix-like dynamic linking emulation -*/
 /* load a dynamic-link library and return handle */
-void *dlopen (char *filename, int flags);
+void *dlopen(char *filename, int flags);
+
 /* return a pointer to the `symbol' in DLL */
-void *dlsym (void *handle, char *symbol);
+void *dlsym(void *handle, char *symbol);
+
 /* free dynamicaly-linked library */
-int dlclose (void *handle);
+int dlclose(void *handle);
+
 /* return a string describing last occured dl error */
 char *dlerror(void);
 
diff --git a/PC/os2emx/dllentry.c b/PC/os2emx/dllentry.c
index ea8d366..dbf9c98 100644
--- a/PC/os2emx/dllentry.c
+++ b/PC/os2emx/dllentry.c
@@ -1,40 +1,39 @@
 /*
-    This is the entry point for Python DLL(s).
-    It also provides an getenv() function that works from within DLLs.
-*/
+ * This is the entry point for the Python 2.3 core DLL.
+ */
 
 #define NULL 0
 
-/* Make references to imported symbols to pull them from static library */
-#define REF(s)	extern void s (); void *____ref_##s = &s;
+#define REF(s)	extern void s(); void *____ref_##s = &s;
 
-REF (Py_Main);
+/* Make references to imported symbols to pull them from static library */
+REF(Py_Main);
 
 #include <signal.h>
 
-extern int _CRT_init (void);
-extern void _CRT_term (void);
-extern void __ctordtorInit (void);
-extern void __ctordtorTerm (void);
+extern int _CRT_init(void);
+extern void _CRT_term(void);
+extern void __ctordtorInit(void);
+extern void __ctordtorTerm(void);
 
-unsigned long _DLL_InitTerm (unsigned long mod_handle, unsigned long flag)
+unsigned long _DLL_InitTerm(unsigned long mod_handle, unsigned long flag)
 {
 	switch (flag)
 	{
 		case 0:
-			if (_CRT_init ())
+			if (_CRT_init())
 				return 0;
-			__ctordtorInit ();
+			__ctordtorInit();
 
 			/* Ignore fatal signals */
-			signal (SIGSEGV, SIG_IGN);
-			signal (SIGFPE, SIG_IGN);
+			signal(SIGSEGV, SIG_IGN);
+			signal(SIGFPE, SIG_IGN);
 
 			return 1;
 
 		case 1:
-			__ctordtorTerm ();
-			_CRT_term ();
+			__ctordtorTerm();
+			_CRT_term();
 			return 1;
 
 		default:
diff --git a/PC/os2emx/getpathp.c b/PC/os2emx/getpathp.c
index ab31c65..4a4c893 100644
--- a/PC/os2emx/getpathp.c
+++ b/PC/os2emx/getpathp.c
@@ -94,9 +94,9 @@
 #endif
 }
 
-/* assumes 'dir' null terminated in bounds.  Never writes
-   beyond existing terminator.
-*/
+/* assumes 'dir' null terminated in bounds.
+ * Never writes beyond existing terminator.
+ */
 static void
 reduce(char *dir)
 {
@@ -113,11 +113,12 @@
 	return stat(filename, &buf) == 0;
 }
 
-/* Assumes 'filename' MAXPATHLEN+1 bytes long - 
-   may extend 'filename' by one character.
-*/
+/* Is module  (check for .pyc/.pyo too)
+ * Assumes 'filename' MAXPATHLEN+1 bytes long - 
+ * may extend 'filename' by one character.
+ */
 static int
-ismodule(char *filename)	/* Is module -- check for .pyc/.pyo too */
+ismodule(char *filename)
 {
 	if (exists(filename))
 		return 1;
@@ -151,9 +152,9 @@
 }
 
 /* gotlandmark only called by search_for_prefix, which ensures
-   'prefix' is null terminated in bounds.  join() ensures
-   'landmark' can not overflow prefix if too long.
-*/
+ * 'prefix' is null terminated in bounds.  join() ensures
+ * 'landmark' can not overflow prefix if too long.
+ */
 static int
 gotlandmark(char *landmark)
 {
@@ -167,7 +168,8 @@
 }
 
 /* assumes argv0_path is MAXPATHLEN+1 bytes long, already \0 term'd. 
-   assumption provided by only caller, calculate_path() */
+ * assumption provided by only caller, calculate_path()
+ */
 static int
 search_for_prefix(char *argv0_path, char *landmark)
 {
@@ -283,13 +285,13 @@
 	}
 
 	/* We need to construct a path from the following parts.
-	   (1) the PYTHONPATH environment variable, if set;
-	   (2) the zip archive file path;
-	   (3) the PYTHONPATH config macro, with the leading "."
-	       of each component replaced with pythonhome, if set;
-	   (4) the directory containing the executable (argv0_path).
-	   The length calculation calculates #3 first.
-	*/
+	 * (1) the PYTHONPATH environment variable, if set;
+	 * (2) the zip archive file path;
+	 * (3) the PYTHONPATH config macro, with the leading "."
+	 *     of each component replaced with pythonhome, if set;
+	 * (4) the directory containing the executable (argv0_path).
+	 * The length calculation calculates #3 first.
+	 */
 
 	/* Calculate size of return buffer */
 	if (pythonhome != NULL) {
