void parse_args (p_settings -w _, p_string key, value, int arg_index, length)
{
  select ()
  {
    case key->eq ("-v"): 
      settings->be_verbose = 1;  
    break;

    case key->eq ("-s"): 
      settings->save_header = 1; 
    break;

    case key->eq ("--ignore-length"): 
      settings->ignore_content_length = 1; 
    break;

    case key->eq ("--output-document"): 
      if (value)
      {
        set (&out_doc, out_doc.length, value), { out_doc = settings->output_document };
      }
      else
      {
        return << ERR_NO_OUTPUT_FILE;
      }
    break;

    ...

  }
  else
  {
    if (arg_index == length - 1) 
    { 
      set (&location, location.length, key), { location = settings->location };
    }
    else 
    {
      return << ERR_UKNOWN_PARAMETER;
    }
  } 
}