/*$Copyright:
 * Copyright (C) 1992.5.22. Recruit Co.,Ltd. 
 * Institute for Supercomputing Research
 * All rights reserved.
 * NewsBase  by ISR, Kazuto MIYAI, Gary ARAKAKI, Katsunori SUZUKI, Kok-meng Lue
 *
 * You may freely copy, distribute and reuse the code in this program under 
 * following conditions.
 * - to include this notice in the source code, if it is to be distributed 
 *   with source code.
 * - to add the file named "COPYING" within the code, which shall include 
 *   GNU GENERAL PUBLIC LICENSE(*).
 * - to display an acknowledgement in binary code as follows: "This product
 *   includes software developed by Recruit Co.,Ltd., ISR."
 * - to display a notice which shall state that the users may freely copy,
 *   distribute and reuse the code in this program under GNU GENERAL PUBLIC
 *   LICENSE(*)
 * - to indicate the way to access the copy of GNU GENERAL PUBLIC LICENSE(*)
 *
 *   (*)GNU GENERAL PUBLIC LICENSE is stored in the file named COPYING
 * 
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
$*/

#import "IFtpD.h"

#import <string.h>
#import <objc/hashtable.h>
#import <libc.h>
#import <sys/types.h>
#import <sys/stat.h>
#import <appkit/NXImage.h>
#import <math.h>
#import "ftp.h"
#import "data_types.h"
#import "errdebug.h"

// An object oriented interface to ftp routines.  This class is intended to
// support anonymous ftp as yet another external domain but is currently
// unused. 


@implementation IFtpD

static NXAtom rtfControlWord;
static NXAtom fileExtension;
static NXImage *icon;
static NXImage *image;

+ initialize
{
    rtfControlWord = NXUniqueStringNoCopy("MMftp");
    fileExtension = NXUniqueStringNoCopy("ftp");
    image = [[NXImage alloc] initFromSection:"FTP.tiff"];
    [IMediaD getFileIconFor:(Class)self];
    return(self);
}

+ (NXAtom)rtfControlWord
{
    return(rtfControlWord);
}

+ (NXAtom)fileExtension;
{
    return(fileExtension);
}

+ (NXAtom)pasteboardType
{
    return(NULL);
}

+ setIcon:(NXImage *)theIcon
{
    icon = theIcon;
    return(self);
}

+ (NXImage *)icon
{
    return(icon);
}

- (NXImage *)image
{
    return(image);
}

- initWithKey:(const char *)hostPath
{
    char *ptr;

    path = NXCopyStringBufferFromZone(hostPath, [self zone]);
    if ((ptr = rindex(path, '.')) == 0) {
        return([self free]);
    }
    *ptr = '\0';
    if ((ptr = rindex(path, '@')) == 0) {
        return([self free]);
    }
    *ptr = '\0';
    host = ptr + 1;
}

- performDoubleClickAction:sender
{
    ftp(host, NXGetDefaultValue(OWNER, FROM), path, "/tmp/ftp");
    return(self);
}

- (BOOL)readFromStream:(NXStream *)inStream
{
    return(YES);
}

- free
{
    NXZoneFree([self zone], path);
    return [super free];
}

@end
