view docs/parse-netrc.pl @ 338:0f34108f27b7

2003-12-10 Brian Masney <masneyb@gftp.org> * lib/gftp.h src/text/gftp-text.h src/gtk/gftp-gtk.h - added GFTP_LOG_FUNCTION_ATTRIBUTES that is only defined when compiled against gcc. When this is set, it will specify the function is printf() type function so that extra checks can be done by the compiler. This is to fix problems with older Sun compilers.
author masneyb
date Sat, 13 Dec 2003 20:52:14 +0000
parents 8b1883341c6f
children
line wrap: on
line source

#!/usr/bin/perl -w

# Brian Masney <masneyb@gftp.org>

my ($host, $user, $pass, $account, $descr, %bmhash);
use strict;

open NRC, "<.netrc" or die "Can't open .netrc: $!\n";
open BM, "+>>.gftp/bookmarks" or die "Can't open .gftp/bookmarks: $!\nTry running gFTP once to create a default bookmarks file\n";
seek (BM, 0, 0);
while (<BM>)
  {
    ($descr) = /\[(.*?)\]/;
    next if !defined ($descr);
    $bmhash{$descr} = 1;
  }

seek (BM, 0, 2);

while (<NRC>)
  {
    if (/machine /)
      {
        print_bookmark ();
        ($host) = /machine (.*?)\s+/;
      }

    if (/login /)
      {
        ($user) = /login (.*?)\s+/;
      }

    if (/password /)
      {
        ($pass) = /password (.*?)\s+/;
      }

    if (/account /)
      {
        ($account) = /account (.*?)\s+/;
      }
  }

print_bookmark ();

close NRC;
close BM;

print "The contents of your .netrc file should now be stored in .gftp/bookmarks\n";


sub print_bookmark
{
  my $i;

  return if !defined ($host);
 
  if (!defined ($bmhash{$host}))
    { $descr = $host; }
  else
    {
      for ($i=0; ; $i++)
        {
          $descr = "$host ($i)";
          last if !defined ($bmhash{$descr});
        }
    }
  

  print BM "[$descr]\n";
  print BM "hostname=$host\n";
  print BM "port=21\n";
  print BM "protocol=FTP\n";
  print BM "remote directory=\n";
  print BM "local directory=\n";
  if (!defined ($user))
    { $user = "anonymous"; }
  print BM "username=$user\n";
  if ($user eq "anonymous" || !defined ($pass))
    { $pass = "\@EMAIL\@"; }
  print BM "password=$pass\n";
  if (!defined ($account))
    { $account = ""; }
  print BM "account=$account\n\n";

  print "Added $descr = $user\@$host\n";

  undef ($host);
  undef ($user);
  undef ($pass);
  undef ($account);
}