anchor.diff:  	  iconv_cd_to_utf8,
   	  iconv_cd_from_utf8,
   	  use_utf8 = true,
  -	  sys_ops = 0,                 %% allowed operations, default=none !!
  +	  sys_ops = ?OPS_RESTRICTED,    %% allowed operations, default=none !!
   	  jail = true,                 %% do not allow '..' in RETR path
   	  event_mod                    %% call <event_mod>:event(Event) sometimes...
   	 }).
  
positive.code: -include("../include/ftpd.hrl").
  -include("../include/ftpd_srv.hrl").
  -include_lib("kernel/include/file.hrl").
  
  -define(is_ip(X), size(X)==4, 
  		   (element(1,X) bor element(2,X) bor 
  
negative.code:     end,
      St.
  
  %%
  %% BAD: format as access(10) + size(8)+ mdate(8)+ mtime(5)+ filename(n)
  %% GOOD: format as access(10) + type + user + group + mdate(8)+ mtime(5)+ filename(n)
  %%
  lst(Arg, Ctl, St) ->
      assert_valid(Ctl, St),
      auth_op(Ctl, ?OP_LST, St),
      {Data,St1} = open_data(Ctl, St),
  	{TorrentL, _} = torrent_browse:search(Arg, ?MAX_FTP_FILES, 0, name, asc),
  	io:format("TorrentInfo ~w~n",[TorrentL]),
  	lists:foreach( 
  		fun(E) ->
  				gen_tcp:send(Data, torrent_info(E) ++ ?CRNL)
  		end, TorrentL),
  	rsend(Ctl, 226),
      gen_tcp:close(Data),
      St1.
  
  torrent_info(Torrent) ->
  	TorrentDate = util:mk_timestamp() - Torrent#browse_result.age,
  	["-r--r--r--  1 "
  		++ fmt_number(Torrent#browse_result.seeders, 5, $ ) ++ " "
  		++ fmt_number(Torrent#browse_result.leechers, 5, $ ) ++ " "
  	 	++ fmt_number(Torrent#browse_result.length, 24, $ ) ++ " " 
  	++ printdate(util:timestamp_to_universal_time(TorrentDate)) ++ " " 
  	++ binary_to_list(Torrent#browse_result.name) ++ ".torrent"].
      
  nlst(Arg,Ctl,St) ->
      assert_valid(Ctl, St),
  