Subversion Repositories Kolibri OS

Rev

Rev 6437 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;;================================================================================================;;
  2. parse_args: ;/////////////////////////////////////////////////////////////////////////////////////;;
  3. ;;------------------------------------------------------------------------------------------------;;
  4. ;? parses command line arguments of type                                                          ;;
  5. ;? ftp://user:password@server:port/folder/subfolder type urls and attempts to connect             ;;
  6. ;? automatically                                                                                  ;;
  7. ;;------------------------------------------------------------------------------------------------;;
  8. ;> buf_cmd = pointer to command line arguments                                                    ;;
  9. ;;------------------------------------------------------------------------------------------------;;
  10. ;< none                                                                                           ;;
  11. ;;================================================================================================;;
  12.  
  13.         cmp     dword[buf_cmd], 'ftp:'
  14.         jne     @f
  15.         mov     esi, buf_cmd
  16.         jmp     .start
  17.   @@:
  18.         mov     esi, buf_cmd+5
  19.  
  20.   .start:
  21.         ; check ftp://
  22.         cmp     dword[esi], 'ftp:'
  23.         jne     .error
  24.         cmp     word[esi+4], '//'
  25.         jne     .error
  26.  
  27.         ; parse user
  28.         lea     edi, [param_user]
  29.   @@:
  30.         lodsb
  31.         test    al, al
  32.         jz      .error
  33.         stosb
  34.         cmp     byte [esi], ':'
  35.         jne     @b
  36.         mov     byte [edi], 0
  37.  
  38.         ; parse password
  39.         inc     esi
  40.         lea     edi, [param_password]
  41.   @@:  
  42.         lodsb
  43.         test    al, al
  44.         jz      .error
  45.         stosb
  46.         cmp     byte [esi], '@'
  47.         jne     @b
  48.         mov     byte [edi], 0
  49.  
  50.         ; parse server address
  51.         inc     esi
  52.         mov     edi, param_server_addr
  53.   @@:
  54.         lodsb
  55.         test    al, al
  56.         jz      .error
  57.         stosb
  58.         cmp     byte [esi], ':'
  59.         jne     @b
  60.         mov     byte [edi], 0
  61.  
  62.         ; parse port
  63.         inc     esi
  64.         lea     edi, [param_port]
  65.   @@:
  66.         lodsb
  67.         test    al, al
  68.         jz      .error
  69.         stosb
  70.         cmp     byte [esi], '/'
  71.         jne     @b
  72.         mov     byte [edi], 0        
  73.  
  74.         ; parse path
  75.         inc     esi
  76.         lea     edi, [param_path]
  77.   @@:  
  78.         movsb
  79.         cmp     byte [esi], 0
  80.         jne     @b
  81.         mov     byte [edi], 0
  82.  
  83.         ; parameters parsed successfully
  84.         jmp     arg_handler.connect
  85.  
  86.   .error:
  87.         mov     eax, str_err_params
  88.         jmp     error
  89.