package FTP::rfc959;

use strict;
use vars qw( @resp_meaning %resp_meaning );

sub meaning {
    my($full) = $resp_meaning{$_[0]};
    my($part0) = $resp_meaning[0][$_[1]] || 'unknown';
    my($part1) = $resp_meaning[1][$_[2]] || 'unknown';

    if ($full) {
	"$full [$part0/$part1]";
    } else {
	"[$part0/$part1]";
    }
}

@resp_meaning = ([undef,
		  'positive preliminary',
		  'positive completion',
		  'positive intermediate',
		  'transient negative completion',
		  'permanent negative completion'],
		 ['syntax',
		  'information',
		  'connections',
		  'auth-acct',
		  undef,
		  'filesystem']);

%resp_meaning = (200 => 'command okay',
		 500 => 'syntax error in command',
		 501 => 'syntax error in arguments',
		 202 => 'unimplemented, superfluous',
		 502 => 'unimplemented',
		 503 => 'bad sequence of commands',
		 504 => 'not implemented for that parameter',

		 110 => 'restart marker reply (see rfc959)',
		 211 => 'system status or help reply',
		 212 => 'directory status',
		 213 => 'file status',
		 214 => 'help message',
		 215 => 'system type',
          
		 120 => 'service delayed',
		 220 => 'ready for new user',
		 221 => 'closing ctl conn',
		 421 => 'service unavailable, closing ctl conn',

		 125 => 'data conn already open; transfer starting',
		 225 => 'data conn open; no transfer in progress',
		 425 => 'can\'t open data connection',		#'
		 226 => 'closing data conn',
		 426 => 'conn closed; transfer aborted',
		 227 => 'entering passive mode',

		 230 => 'user logged in, proceed',
		 530 => 'not logged in',
		 331 => 'user name okay, need password',
		 332 => 'need acct for login',
		 532 => 'need acct for storing files',

		 150 => 'file status okay; opening data conn',
		 250 => 'file action okay, completed',
		 257 => 'created',
		 350 => 'requested action pending further information',
		 450 => 'requested action not taken',
		 550 => 'requested action not taken',
		 451 => 'requested action aborted, local error',
		 551 => 'requested action aborted, page type unknown',
		 452 => 'requested action not taken, insufficient storage',
		 552 => 'requested file action aborted, exceeded storage',
		 553 => 'requested action not taken, file name not allowed');

1;
