/***************************************************************************/ /***************************************************************************/ /* */ /* (c) 1995-1999. The Regents of the University of California. All */ /* rights reserved. */ /* */ /* This work was produced at the University of California, Lawrence */ /* Livermore National Laboratory (UC LLNL) under contract no. */ /* W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy */ /* (DOE) and The Regents of the University of California (University) */ /* for the operation of UC LLNL. Copyright is reserved to the */ /* University for purposes of controlled dissemination, */ /* commercialization through formal licensing, or other disposition */ /* under terms of Contract 48; DOE policies, regulations and orders; */ /* and U.S. statutes. The rights of the Federal Government are */ /* reserved under Contract 48 subject to the restrictions agreed upon */ /* by the DOE and University. */ /* */ /* */ /* DISCLAIMER */ /* */ /* This software was prepared as an account of work sponsored by an */ /* agency of the United States Government. Neither the United States */ /* Government nor the University of California nor any of their */ /* employees, makes any warranty, express or implied, or assumes any */ /* liability or responsibility for the accuracy, completeness, or */ /* usefulness of any information, apparatus, product, or process */ /* disclosed, or represents that its specific commercial products, */ /* process, or service by trade name, trademark, manufacturer, or */ /* otherwise, does not necessarily constitute or imply its */ /* endorsement, recommendation, or favoring by the United States */ /* Government or the University of California. The views and opinions */ /* of the authors expressed herein do not necessarily state or reflect */ /* those of the United States Government or the University of */ /* California, and shall not be used for advertising or product */ /* endorsement purposes. */ /* */ /* Permission to use, copy, modify and distribute this software and its */ /* documentation for any non-commercial purpose, without fee, is */ /* hereby granted, provided that the above copyright notice and this */ /* permission notice appear in all copies of the software and */ /* supporting documentation, and that all UC LLNL identification in */ /* the user interface remain unchanged. The title to copyright LLNL */ /* XDIR shall at all times remain with The Regents of the University */ /* of California and users agree to preserve same. Users seeking the */ /* right to make derivative works with LLNL XDIR for commercial */ /* purposes may obtain a license from the Lawrence Livermore National */ /* Laboratory's Technology Transfer Office, P.O. Box 808, L-795, */ /* Livermore, CA 94550. */ /* */ /***************************************************************************/ /***************************************************************************/ #include #include "xdir.h" #include "str.h" struct server_st { char *pattern; int system; int server; }; struct name_st { int id; char *name; }; static struct server_st open_info[] = { { "MultiNet FTP Server Process", SYS_VMS, SERVER_VMS_MULTINET }, { "VersaTerm FTP Server", SYS_MAC, SERVER_MAC_VERSATERM }, { "Macintosh Resident FTP server", SYS_MAC, SERVER_MAC_NCSATELNET }, { "Peter's Macintosh FTP daemon", SYS_MAC, SERVER_MAC_FTPD }, { "WFTPD", SYS_WINDOWS, SERVER_WINDOWS_WFTPD }, { "WinQVT", SYS_DOS, SERVER_DOS_WINQVT }, { "Windows NT FTP Server", SYS_NT, SERVER_NT }, { "NSL UniTree", SYS_UNIX, SERVER_UNIX_NSL_UNITREE }, { "NSL UNITREE", SYS_UNIX, SERVER_UNIX_NSL_UNITREE }, { "UniTree", SYS_UNIX, SERVER_UNIX_UNITREE }, { "UNITREE", SYS_UNIX, SERVER_UNIX_UNITREE }, { "HPSS", SYS_UNIX, SERVER_UNIX_HPSS } }; static struct server_st syst_info[] = { { "UniTree", SYS_UNIX, SERVER_UNKNOWN }, { "UNITREE", SYS_UNIX, SERVER_UNKNOWN }, { "UNIX", SYS_UNIX, SERVER_UNKNOWN }, { "215 VMS MultiNet", SYS_VMS, SERVER_VMS_MULTINET }, { "215 VMS", SYS_VMS, SERVER_VMS_MULTINET }, { "200 VMS", SYS_VMS, SERVER_VMS_3_0 }, { "215 MACOS Peter's Server", SYS_MAC, SERVER_MAC_FTPD }, { "Windows_NT", SYS_NT, SERVER_NT }, { "WFTPD", SYS_WINDOWS, SERVER_WINDOWS_WFTPD } }; static struct name_st systems[] = { { SYS_UNIX, "UNIX" }, { SYS_VMS, "VMS" }, { SYS_MAC, "MAC" }, { SYS_DOS, "DOS" }, { SYS_NT, "NT" }, { SYS_WINDOWS, "WINDOWS" } }; static struct name_st servers[] = { { SERVER_UNKNOWN, "UNKNOWN" }, { SERVER_VMS_3_0, "VMS_3_0" }, { SERVER_VMS_MULTINET, "VMS_MULTINET" }, { SERVER_MAC_VERSATERM, "MAC_VERSATERM" }, { SERVER_MAC_NCSATELNET, "MAC_NCSATELNET" }, { SERVER_MAC_FTPD, "MAC_FTPD" }, { SERVER_WINDOWS_WFTPD, "WINDOWS_WFTPD" }, { SERVER_DOS_WINQVT, "DOS_WINQVT" }, { SERVER_NT, "NT" }, { SERVER_UNIX_UNITREE, "UNIX_UNITREE" }, { SERVER_UNIX_NSL_UNITREE, "UNIX_NSL_UNITREE" }, { SERVER_UNIX_HPSS, "UNIX_HPSS" } }; static int nopen_info = XtNumber(open_info); static int nsyst_info = XtNumber(syst_info); static int nsystems = XtNumber(systems); static int nservers = XtNumber(servers); extern struct st_host_info hinfo[]; /* * determine_server_from_open - Try to determine the type of system and server * the remote host has from the first "reply" * returned by the FTP server. If successful, * hinfo[host].system and hinfo[host].server * are set; otherwise a no-op. */ void determine_server_from_open(host, reply) int host; char *reply; { int i; for (i=0; i