docs: def _runcmd(progargs, stdinput=None):
      '''
      Run the command progargs with optional input to be fed in to stdin.
      '''
      stdin = None
      if stdinput is not None:
          assert(isinstance(stdinput, list))
          stdin=PIPE
  
      err = 0
      output = b''
      log_debug("Calling {} with input {}".format(' '.join(progargs), stdinput))
      try:
          p = Popen(progargs, shell=True, stdin=stdin, 
              stderr=STDOUT, stdout=PIPE, universal_newlines=True)
          if stdinput is not None:
              for cmd in stdinput:
                  print(cmd, file=p.stdin)
              p.stdin.close()
          output = p.stdout.read()
          p.stdout.close()
          err = p.wait(timeout=1.0)
      except OSError as e:
          err = e.errno
          log_warn("Error calling {}: {}".format(progargs, e.stderror))
      except Exception as e:
          errstr = str(e)
          log_warn("Error calling {}: {}".format(progargs, errstr))
          err = -1
      log_debug("Result of command (errcode {}): {}".format(err, output))
      return err,output