Merge branch 'pr-63'
This closes #63
diff --git a/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java b/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java
index 58a00b4..aa284b5 100644
--- a/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java
+++ b/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java
@@ -31,6 +31,7 @@
 import org.apache.maven.scm.provider.cvslib.command.CvsCommand;
 import org.apache.maven.scm.provider.cvslib.command.CvsCommandUtils;
 import org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository;
+import org.codehaus.plexus.util.Os;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
@@ -47,6 +48,29 @@
                                                 ScmVersion version )
         throws ScmException
     {
+        for ( Boolean supD = rlsSUPPORTSD;; supD = Boolean.FALSE )
+        {
+            ListScmResult res = executeListCommand1( repo, fileSet, recursive, version, supD );
+            if ( res.isSuccess() || supD != null )
+            {
+                if ( rlsSUPPORTSD == null && res.isSuccess() )
+                {
+                    rlsSUPPORTSD = supD == null ? Boolean.TRUE : supD;
+                }
+                return res;
+            }
+            // first attempt failed, support unknown
+            // rls: invalid option -- d
+        }
+    }
+
+    // cvsnt does not support rls -d; Msys/Cygwin do.
+    private static Boolean rlsSUPPORTSD = Os.isFamily( Os.FAMILY_WINDOWS ) ? null : Boolean.TRUE;
+
+    private ListScmResult executeListCommand1( ScmProviderRepository repo, ScmFileSet fileSet, boolean recursive,
+            ScmVersion version, Boolean supD )
+    throws ScmException
+    {
         CvsScmProviderRepository repository = (CvsScmProviderRepository) repo;
 
         Commandline cl = CvsCommandUtils.getBaseCommand( "rls", repository, fileSet, "-n" );
@@ -57,7 +81,10 @@
             cl.createArg().setValue( version.getName() );
         }
 
-        cl.createArg().setValue( "-d" );
+        if ( supD != Boolean.FALSE )
+        {
+            cl.createArg().setValue( "-d" );
+        }
         cl.createArg().setValue( "-e" ); // szakusov: to fix "Unknown file status" problem
 
         if ( recursive )