parameters: (seq)
return_statement: return ''.join(result)
docstring: Translate a sequence of arguments into a command line
      string, using the same rules as the MS C runtime:
  
      1) Arguments are delimited by white space, which is either a
         space or a tab.
  
      2) A string surrounded by double quotation marks is
         interpreted as a single argument, regardless of white space
         contained within.  A quoted string can be embedded in an
         argument.
  
      3) A double quotation mark preceded by a backslash is
         interpreted as a literal double quotation mark.
  
      4) Backslashes are interpreted literally, unless they
         immediately precede a double quotation mark.
  
      5) If backslashes immediately precede a double quotation mark,
         every pair of backslashes is interpreted as a literal
         backslash.  If the number of backslashes is odd, the last
         backslash escapes the next double quotation mark as
         described in rule 3.
docstring_summary: Translate a sequence of arguments into a command line
      string, using the same rules as the MS C runtime:
docstring_tokens: Translate a sequence of arguments into a command line string using the same rules as the MS C runtime :
function: def list2cmdline(seq):
      """
      Translate a sequence of arguments into a command line
      string, using the same rules as the MS C runtime:
  
      1) Arguments are delimited by white space, which is either a
         space or a tab.
  
      2) A string surrounded by double quotation marks is
         interpreted as a single argument, regardless of white space
         contained within.  A quoted string can be embedded in an
         argument.
  
      3) A double quotation mark preceded by a backslash is
         interpreted as a literal double quotation mark.
  
      4) Backslashes are interpreted literally, unless they
         immediately precede a double quotation mark.
  
      5) If backslashes immediately precede a double quotation mark,
         every pair of backslashes is interpreted as a literal
         backslash.  If the number of backslashes is odd, the last
         backslash escapes the next double quotation mark as
         described in rule 3.
      """
  
      # See
      # http://msdn.microsoft.com/en-us/library/17w5ykft.aspx
      # or search http://msdn.microsoft.com for
      # "Parsing C++ Command-Line Arguments"
      result = []
      needquote = False
      for arg in seq:
          bs_buf = []
  
          # Add a space to separate this argument from the others
          if result:
              result.append(' ')
  
          needquote = (" " in arg) or ("\t" in arg) or not arg
          if needquote:
              result.append('"')
  
          for c in arg:
              if c == '\\':
                  # Don't know if we need to double yet.
                  bs_buf.append(c)
              elif c == '"':
                  # Double backslashes.
                  result.append('\\' * len(bs_buf)*2)
                  bs_buf = []
                  result.append('\\"')
              else:
                  # Normal char
                  if bs_buf:
                      result.extend(bs_buf)
                      bs_buf = []
                  result.append(c)
  
          # Add remaining backslashes, if any.
          if bs_buf:
              result.extend(bs_buf)
  
          if needquote:
              result.extend(bs_buf)
              result.append('"')
  
      return ''.join(result)
function_tokens: def list2cmdline ( seq ) : # See # http://msdn.microsoft.com/en-us/library/17w5ykft.aspx # or search http://msdn.microsoft.com for # "Parsing C++ Command-Line Arguments" result = [ ] needquote = False for arg in seq : bs_buf = [ ] # Add a space to separate this argument from the others if result : result . append ( ' ' ) needquote = ( " " in arg ) or ( "\t" in arg ) or not arg if needquote : result . append ( '"' ) for c in arg : if c == '\\' : # Don't know if we need to double yet. bs_buf . append ( c ) elif c == '"' : # Double backslashes. result . append ( '\\' * len ( bs_buf ) * 2 ) bs_buf = [ ] result . append ( '\\"' ) else : # Normal char if bs_buf : result . extend ( bs_buf ) bs_buf = [ ] result . append ( c ) # Add remaining backslashes, if any. if bs_buf : result . extend ( bs_buf ) if needquote : result . extend ( bs_buf ) result . append ( '"' ) return '' . join ( result )