Index: trunk/BNC/src/bnccredentials.cpp
===================================================================
--- trunk/BNC/src/bnccredentials.cpp	(revision 11153)
+++ trunk/BNC/src/bnccredentials.cpp	(revision 11160)
@@ -155,18 +155,23 @@
       continue;
     }
-    bool ok = tokens.size() == 4;
+    // <host> <port|*> <user|-> <password>, or <host> <user> <password> for any port
+    QStringList hlp = tokens;
+    if (hlp.size() == 3) {
+      hlp.insert(1, "*");
+    }
+    bool ok = hlp.size() == 4;
     t_entry entry;
-    entry.host = tokens.value(0);
-    if (tokens.value(1) == "*") {
+    entry.host = hlp.value(0);
+    if (hlp.value(1) == "*") {
       entry.port = 0;
     }
     else {
       bool okPort;
-      entry.port = tokens.value(1).toInt(&okPort);
+      entry.port = hlp.value(1).toInt(&okPort);
       ok = ok && okPort && entry.port > 0;
     }
-    entry.hasUser = tokens.value(2) != "-";
-    entry.user = entry.hasUser ? tokens.value(2) : QString();
-    entry.password = tokens.value(3);
+    entry.hasUser = hlp.value(2) != "-";
+    entry.user = entry.hasUser ? hlp.value(2) : QString();
+    entry.password = hlp.value(3);
     if (ok) {
       file.entries.append(entry);
@@ -174,5 +179,5 @@
     else {
       message(fileName + QString(":%1").arg(lineNumbers[iLine]),
-              QString("Credentials file %1, line %2: not <host> <port> <user> <password>, ignored")
+              QString("Credentials file %1, line %2: not <host> [<port>] <user> <password>, ignored")
               .arg(fileName).arg(lineNumbers[iLine]));
     }
