diff --git a/require.c b/require.c
index 7fa300d56b55465cb648e4b093d006b41a388f5d..b7e378e83f1ca8d5459cb4ff34e35b5d1bd92961 100644
--- a/require.c
+++ b/require.c
@@ -8,6 +8,7 @@
 #include <stat.h>
 #include <stdio.h>
 #include <string.h>
+#include <ctype.h>
 #include <require.h>
 #include <epicsVersion.h>
 #ifndef BASE_VERSION
@@ -50,7 +51,7 @@ int require(char* lib, char* version)
         */
 
         /* first try local library */
-        if (version)
+        if (version && *version)
         {
             sprintf(libname, "bin/%sLib-%s.munch", lib, version);
             sprintf(depname, "bin/%s-%s.dep", lib, version);
@@ -71,7 +72,7 @@ int require(char* lib, char* version)
         {
             /* no local lib at all */
             libname[strlen(libname)-6]=0;  /* skip ".munch" */
-            if (version)
+            if (version && *version)
             {
                 sprintf(libname, "%s/%sLib-%s.munch", *path, lib, version);
                 sprintf(depname, "%s/%s-%s.dep", *path, lib, version);
@@ -104,16 +105,24 @@ int require(char* lib, char* version)
         {
             FILE* depfile;
             char buffer[40];
-            char *v;
+            char *l; /* required library */
+            char *v; /* required version */
+            char *e; /* end */
             
             depfile = fopen(depname, "r");
             while (fgets(buffer, sizeof(buffer), depfile))
             {
-                if (buffer[0] == '#' || buffer[0] == 0) continue;
-                buffer[strlen(buffer)-1] = 0;
-                v = strchr(buffer, ' ');
-                if (v) *v++ = 0;
-                printf ("%s depends on %s %s\n", lib, buffer, v);
+                l = buffer;
+                while (isspace((int)*l)) l++;
+                if (*l == 0 || *l == '#') continue;
+                v = l;
+                while (*v && !isspace((int)*v)) v++;
+                *v++ = 0;
+                while (isspace((int)*v)) v++;
+                e = v;
+                while (*e && !isspace((int)*e)) e++;
+                *e = 0;
+                printf ("%s depends on %s %s\n", lib, l, v);
                 if (require(buffer,v) != OK)
                 {
                     fclose(depfile);
@@ -169,7 +178,7 @@ int require(char* lib, char* version)
     else
     {
         /* Library already loaded. Check Version. */
-        if (version && strcmp(loaded, version) != 0)
+        if (version && *version && strcmp(loaded, version) != 0)
         {
             /* non-numerical versions must match exactly
                numerical versions must have exact match in major version and