From 2e84375dc07d24f52ccc5d247b350e18de517eba Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 17 Oct 2007 14:58:15 +0000
Subject: [PATCH] Fix for issue 2278.

---
 opends/src/server/org/opends/server/util/args/ArgumentParser.java           |   28 +++++++++++++++++-----------
 opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java |   28 ++++++++++++++++------------
 2 files changed, 33 insertions(+), 23 deletions(-)

diff --git a/opends/src/server/org/opends/server/util/args/ArgumentParser.java b/opends/src/server/org/opends/server/util/args/ArgumentParser.java
index 1b8801a..5eb1218 100644
--- a/opends/src/server/org/opends/server/util/args/ArgumentParser.java
+++ b/opends/src/server/org/opends/server/util/args/ArgumentParser.java
@@ -42,6 +42,7 @@
 import java.util.Set;
 
 import org.opends.server.core.DirectoryServer;
+import org.opends.server.util.SetupUtils;
 
 import static org.opends.messages.UtilityMessages.*;
 import static org.opends.server.util.ServerConstants.*;
@@ -167,6 +168,9 @@
           INFO_DESCRIPTION_GENERAL_ARGS.get(), Integer.MIN_VALUE);
 
 
+  private final static String INDENT = "    ";
+  private final static int MAX_LENGTH = SetupUtils.isWindows() ? 79 : 80;
+
   /**
    * Creates a new instance of this argument parser with no arguments.
    * Unnamed trailing arguments will not be allowed.
@@ -1338,7 +1342,7 @@
     usageOrVersionDisplayed = true;
     if ((toolDescription != null) && (toolDescription.length() > 0))
     {
-      buffer.append(wrapText(toolDescription.toString(), 79));
+      buffer.append(wrapText(toolDescription.toString(), MAX_LENGTH - 1));
       buffer.append(EOL);
       buffer.append(EOL);
     }
@@ -1385,7 +1389,7 @@
         Message groupDesc = argGroup.getDescription();
         if (groupDesc != null && !Message.EMPTY.equals(groupDesc)) {
           buffer.append(EOL);
-          buffer.append(wrapText(groupDesc.toString(), 79));
+          buffer.append(wrapText(groupDesc.toString(), MAX_LENGTH - 1));
           buffer.append(EOL);
           buffer.append(EOL);
         }
@@ -1503,6 +1507,7 @@
     // Write a line with the short and/or long identifiers that may be
     // used
     // for the argument.
+    final int indentLength = INDENT.length();
     Character shortID = a.getShortIdentifier();
     String longID = a.getLongIdentifier();
     if (shortID != null)
@@ -1537,7 +1542,7 @@
 
         int lineLength = (buffer.length() - currentLength) +
                          newBuffer.length();
-        if (lineLength > 80)
+        if (lineLength > MAX_LENGTH)
         {
           buffer.append(EOL);
           buffer.append(newBuffer.toString());
@@ -1578,21 +1583,22 @@
     // at or
     // before column 79 so it will be friendly to 80-column displays.
     Message description = a.getDescription();
-    if (description.length() <= 75)
+    int descMaxLength = MAX_LENGTH - indentLength - 1;
+    if (description.length() <= descMaxLength)
     {
-      buffer.append("    ");
+      buffer.append(INDENT);
       buffer.append(description);
       buffer.append(EOL);
     }
     else
     {
       String s = description.toString();
-      while (s.length() > 75)
+      while (s.length() > descMaxLength)
       {
-        int spacePos = s.lastIndexOf(' ', 75);
+        int spacePos = s.lastIndexOf(' ', descMaxLength);
         if (spacePos > 0)
         {
-          buffer.append("    ");
+          buffer.append(INDENT);
           buffer.append(s.substring(0, spacePos).trim());
           s = s.substring(spacePos+1).trim();
           buffer.append(EOL);
@@ -1607,14 +1613,14 @@
           spacePos = s.indexOf(' ');
           if (spacePos > 0)
           {
-            buffer.append("    ");
+            buffer.append(INDENT);
             buffer.append(s.substring(0, spacePos).trim());
             s = s.substring(spacePos+1).trim();
             buffer.append(EOL);
           }
           else
           {
-            buffer.append("    ");
+            buffer.append(INDENT);
             buffer.append(s);
             s = "";
             buffer.append(EOL);
@@ -1624,7 +1630,7 @@
 
       if (s.length() > 0)
       {
-        buffer.append("    ");
+        buffer.append(INDENT);
         buffer.append(s);
         buffer.append(EOL);
       }
diff --git a/opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java b/opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java
index 9e1fb63..54fe16c 100644
--- a/opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java
+++ b/opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java
@@ -48,6 +48,7 @@
 import java.util.TreeMap;
 
 import org.opends.server.core.DirectoryServer;
+import org.opends.server.util.SetupUtils;
 
 
 
@@ -117,6 +118,8 @@
   // The subcommand requested by the user as part of the command-line arguments.
   private SubCommand subCommand;
 
+  private final static String INDENT = "    ";
+  private final static int MAX_LENGTH = SetupUtils.isWindows() ? 79 : 80;
 
 
   /**
@@ -1435,7 +1438,7 @@
 
           int lineLength = (buffer.length() - currentLength) +
                            newBuffer.length();
-          if (lineLength > 80)
+          if (lineLength > MAX_LENGTH)
           {
             buffer.append(EOL);
             buffer.append(newBuffer.toString());
@@ -1474,21 +1477,22 @@
       // indent the description five characters and try our best to wrap at or
       // before column 79 so it will be friendly to 80-column displays.
       Message description = a.getDescription();
-      if (description.length() <= 75)
+      int maxLength = MAX_LENGTH - INDENT.length() - 1;
+      if (description.length() <= maxLength)
       {
-        buffer.append("    ");
+        buffer.append(INDENT);
         buffer.append(description);
         buffer.append(EOL);
       }
       else
       {
         String s = description.toString();
-        while (s.length() > 75)
+        while (s.length() > maxLength)
         {
-          int spacePos = s.lastIndexOf(' ', 75);
+          int spacePos = s.lastIndexOf(' ', maxLength);
           if (spacePos > 0)
           {
-            buffer.append("    ");
+            buffer.append(INDENT);
             buffer.append(s.substring(0, spacePos).trim());
             s = s.substring(spacePos+1).trim();
             buffer.append(EOL);
@@ -1501,14 +1505,14 @@
             spacePos = s.indexOf(' ');
             if (spacePos > 0)
             {
-              buffer.append("    ");
+              buffer.append(INDENT);
               buffer.append(s.substring(0, spacePos).trim());
               s = s.substring(spacePos+1).trim();
               buffer.append(EOL);
             }
             else
             {
-              buffer.append("    ");
+              buffer.append(INDENT);
               buffer.append(s);
               s = "";
               buffer.append(EOL);
@@ -1663,7 +1667,7 @@
     usageOrVersionDisplayed = true;
     if ((toolDescription != null) && (toolDescription.length() > 0))
     {
-      buffer.append(wrapText(toolDescription, 79));
+      buffer.append(wrapText(toolDescription, MAX_LENGTH - 1));
       buffer.append(EOL);
       buffer.append(EOL);
     }
@@ -1770,7 +1774,7 @@
           Message groupDesc = argGroup.getDescription();
           if (groupDesc != null && !Message.EMPTY.equals(groupDesc)) {
             buffer.append(EOL);
-            buffer.append(wrapText(groupDesc.toString(), 79));
+            buffer.append(wrapText(groupDesc.toString(), MAX_LENGTH - 1));
             buffer.append(EOL);
             buffer.append(EOL);
           }
@@ -1861,7 +1865,7 @@
     }
 
     buffer.append(EOL);
-    indentAndWrap(Message.raw("    "), a.getDescription(), buffer);
+    indentAndWrap(Message.raw(INDENT), a.getDescription(), buffer);
   }
 
 
@@ -1874,7 +1878,7 @@
   private void indentAndWrap(Message indent, Message text,
                              MessageBuilder buffer)
   {
-    int actualSize = 80 - indent.length();
+    int actualSize = MAX_LENGTH - indent.length();
     if (text.length() <= actualSize)
     {
       buffer.append(indent);

--
Gitblit v1.10.0