



                           FTP Client Engine

                           Library for C/C++


                               (FCE4C)



                            USERS MANUAL



                            Version 1.0

                            March 22, 1999




                     This software is provided as-is.
              There are no warranties, expressed or implied.




                           Copyright (C) 1999
                           All rights reserved



                       MarshallSoft Computing, Inc.
                           Post Office Box 4543
                           Huntsville AL 35815


                           Voice : 256-881-4630
                             FAX : 256-880-0925
                           email : info@marshallsoft.com
                             web : www.marshallsoft.com

                               _______
                          ____|__     |                (R)
                       --+       |    +-------------------
                         |   ____|__  |  Association of
                         |  |       |_|  Shareware
                         |__|   o   |    Professionals
                       --+--+   |   +---------------------
                            |___|___|    MEMBER


      MARSHALLSOFT is a registered trademark of MarshallSoft Computing.



     FCE4C Users Manual                                        Page 1

                            C O N T E N T S



        Chapter                                     Page


       1.0 Introduction................................................3
           1.1 User Support............................................5
           1.2 ASP Ombudsman...........................................5
           1.3 Installation............................................6
           1.4 Uninstalling............................................6
       2.0 Library Overview............................................7
           2.1 Dynamic Link libraries..................................7
           2.2 Console Mode............................................7
           2.3 Compiler Compatibility..................................7
           2.4 Compiling Programs......................................7
           2.5 Using a MAKEFILE........................................7
           2.6 Using an IDE............................................8
           2.7 Compiling the Example Programs.........................10
       3.0 Using the FCE Library......................................11
       4.0 Application Notes..........................................12
           4.1 FTP Basics.............................................12
           4.2 Auto Dial..............................................12
       5.0 Theory of Operation........................................13
       6.0 Versions of FCE............................................14
           6.1 Shareware Version......................................14
           6.2 Student Version........................................14
           6.3 Professional Version...................................14
       7.0 Using FCE with Other Languages.............................15
       8.0 Problems...................................................15
       9.0 Example Programs...........................................16
      10.0 Registration...............................................18
           10.1 Professional Version..................................18
           10.2 Professional Version with Source......................18
           10.3 Student Version.......................................18
           10.4 Updates...............................................18
      11.0 Payment....................................................19
      12.0 Legal Issues...............................................20
           12.1 License...............................................20
           12.2 Warranty..............................................20
      13.0 Summary....................................................21
           13.1 Revision History......................................21
           13.2 FCE Function Summary..................................21
           13.3 FCE Error Return Code List............................22













     FCE4C Users Manual                                        Page 2

      1.0 Introduction

      FCE4C is the easiest way to write FTP applications in C/C++ ! FCE can
      be used for both anonymous and private FTP sessions.

      The FTP Client Engine (FCE) is a library of functions providing
      direct and simple control of the FTP protocol.

      A simple interface allows connecting to a FTP server, navigating its
      directory structure, listing files, sending files, deleting files,
      and receiving files using the FTP protocol.

      With FCE4C, you can write GUI or console mode programs that easily:

      (1) Connect to any FTP server.
      (2) Get a list of files on the server.
      (3) Navigate the server directories.
      (4) Specify ASCII or BINARY transfer mode.
      (5) Download files.
      (6) Upload files.
      (7) Delete files.

      Multiple example programs are provided, including Microsoft
      Foundation Class (MFC) and Borland C++ Builder (BCB) examples.

      FCE4C supports and has been tested with Microsoft Visual C/C++,
      Borland C/C++, and Watcom C/C++ compilers. It can also be used with
      most other Windows compilers.

      Both Win16 and Win32 DLLs (Dynamic Link Libraries) are provided.
      FCE4C can be used with Windows 3.X, 95/98, and NT. The FCE4C DLLs
      (FCE16.DLL and FCE32.DLL) can also be used from any language (Visual
      Basic, ACCESS, EXCEL, PowerBASIC Console Compiler, Delphi, Fujitsu
      COBOL, ABSOFT Fortran, etc.) capable of calling the Windows API.

      When comparing FCE against our competition, note that:

      (1) FCE4C is a standard Windows DLL (NOT an OCX or ActiveX control)
          and is much smaller than a comparable OCX or ActiveX control.
      (2) Both WIN16 and WIN32 DLLs are included.
      (3) FCE4C does NOT depend on ActiveX or Microsoft Foundation Class
          (MFC) libraries or similar "support" libraries.
      (4) The WIN32 version of FCE is fully threadable.
      (5) The FCE functions can be called from applications not capable of
          using controls.

      We also have versions of FCE for Delphi (FCE4D), Visual Basic
      (FCE4VB) and PowerBASIC (FCE4PB). But note that all versions use the
      same DLLs.









     FCE4C Users Manual                                        Page 3

      1.0 Introduction (continued)

      The following example demonstrates the use of the library functions:

      +-------------------------------------------------------------------+
      | #include <windows.h>                                              |
      | #include <stdio.h>                                                |
      | #include "fce.h"                                                  |
      |                                                                   |
      | void main(int argc, char *argv[])                                 |
      | {int Code;                                                        |
      |  /* attach FCE */                                                 |
      |  Code = fceAttach(1);                                             |
      |  if(Code<0) ErrorExit(Code);                                      |
      |  /* connect to server */                                          |
      |  Code = fceConnect(0,(LPSTR)"ftp.marshallsoft.com",               |
      |        (LPSTR)"anonymous", (LPSTR)"msc@traveller.com");           |
      |  if(Code<0) ErrorExit(Code);                                      |
      |  /* change to proper directory */                                 |
      |  Code = fceSetServerDir(0, (LPSTR)"marshallsoft/other");          |
      |  if(Code<0) ErrorExit(Code);                                      |
      |  /* set to ASCII xfer mode */                                     |
      |  fceSetMode(0,'A');                                               |
      |  /* download the file */                                          |
      |  Code = fceGetFile(0,(LPSTR)"products.txt");                      |
      |  if(Code<0) ErrorExit(Code);                                      |
      |  /* QUIT */                                                       |
      |  fceClose(0);                                                     |
      |  fceRelease();                                                    |
      |                                                                   |
      +-------------------------------------------------------------------+

      In the example program above, fceConnect is called to connect to
      the FTP server as user "anonymous" and password "msc@traveller.com".

      The server directory is changed to "marshallsoft/other", the transfer
      mode is set to ASCII, and the file "products.txt" is downloaded.
      Lastly, the connection to the FTP server is closed and FCE is
      released.

      Refer to the FCE4C Reference Manual for individual function details.

















     FCE4C Users Manual                                        Page 4

      1.1 User Support

      We want you to be successful in developing your applications using
      FCE4C! We are committed to providing the best library that we can. If
      you have any suggestions or comments, please let us know.

      If you are having a problem using FCE4C, email us at

         support@marshallsoft.com

      You can also reach us at 256-881-4630 between 7:00 AM and 7:00 PM CST
      Monday through Friday. You can also often get us on the weekend.

      The latest versions of our products are available on our web site at

         http://www.marshallsoft.com

      and on our anonymous FTP site at

         ftp://ftp.marshallsoft.com/marshallsoft

      The MarshallSoft Computing newsletter "Comm Talk" is published
      quarterly on our web site.  It discusses various communications
      problems and solutions using our products as well as related
      information.

      1.2 ASP Ombudsman

      MarshallSoft Computing, Inc. is a member of the Association of
      Shareware Professionals (ASP).  ASP wants to make sure that the
      shareware principle works for you.  If you are unable to resolve a
      shareware-related problem with an ASP member by contacting the member
      directly, ASP may be able to help. The ASP Ombudsman can help you
      resolve a dispute or problem with an ASP member, but does not provide
      technical support for members' products. Please write to the ASP
      Ombudsman at 157-F Love Ave., Greenwood, IN 26142 USA, FAX
      317-888-2195, or send email to omb@asp-shareware.org.





















     FCE4C Users Manual                                        Page 5

      1.3 Installation


      (1) Before installation of FCE4C, your Windows C/C++ compiler should
      already be installed on your system and tested. In particular,
      include command line tools when installing your compiler if you want
      to compile using command line makefiles. If you need help with
      makefiles, see MAKEFILE.TXT.

      (2) Create your project directory, copy the zip-file, then unzip.

      (3) Running the INSTALL program.

      All recent WIN32 C/C++ compilers support the "declspec" keyword.
      Microsoft VC (version 4.0 and up), Borland (version 5.0 and up), and
      Watcom (version 11.0 and up) all support the "declspec" keyword.

      If you have an older Win32 compiler, you can choose to install native
      mode DLLs. Run the INSTALL installation program, which will copy the
      proper LIB's and DLL's.

         INSTALLU    <+++ For Win32 compilers supporting "declspec".
         INSTALLM    <+++ For native mode Microsoft.
         INSTALLB    <+++ For native mode Borland.
         INSTALLW    <+++ For native mode Watcom.
         INSTALL1    <+++ For WIN16 compilers only.

      1.4 Uninstalling

      Uninstalling FCE4C is very easy. FCE does NOT modify the registry.
      First, delete the FCE project directory created when installing
      FCE4C. Second, delete FCE16.DLL and FCE32.DLL from your Windows
      directory, typically C:\WINDOWS for Windows 3.1/95/98 or C:\WINNT for
      Windows NT. Thats it!
























     FCE4C Users Manual                                        Page 6

      2.0 Library Overview

      2.1 Dynamic Link Libraries

      FCE4C includes both Win16 [FCE16] and Win32 [FCE32] dynamic link
      libraries (DLL). A DLL is characterized by the fact that it need not
      be loaded until required by an application program and that only one
      copy of the DLL is necessary regardless of the number of application
      programs that use it. Contrast this to a static library which is
      bound at link time to each and every application that uses it.

      2.2 Console Mode

      FCE4C functions can be called from WIN32 console mode programs. A
      "console mode" program is a Windows 95/87/NT WIN32 command line
      program running in a command window. Although console mode programs
      look like DOS programs, they are WIN32 programs which have access to
      the entire Windows address space.

      2.3 Compiler Compatibility

      FCE4C has been tested with Microsoft Visual C/C++, Borland C/C++
      (including C++ Builder), Turbo C/C++ for Windows, and Watcom C/C++.
      Other Windows C/C++ compilers may work as well.

      2.4 Compiling Programs

      The example programs can be compiled by using either the provided
      makefiles or creating a project file for the IDE. Separate makefiles
      are provided for Win16 and Win32. 16-bit makefiles end with "16"
      while 32-bit makefiles end with "32".

      The various Win32 compiler manufacturers each use different compiler
      settings so that a DLL compiled with one compiler cannot always be
      called by an application compiled with a different compiler.

      One solution is the use of the "declspec" keyword provided that your
      compiler supports it. This corresponds to choosing the "universal"
      set of DLLs when installing, or "INSTALL U" (or "INSTALLU"). See
      Section 1.3, Installation.

      2.5 Using a MAKEFILE

      Makefiles originated on UNIX systems. They are the standard way that
      C/C++ programs are constructed in command line environments. Windows
      programs can be constructed with makefiles running DOS using command
      line Windows compilers.

      Makefiles are provided for Microsoft, Borland, and WATCOM command line
      compilers. Makefiles have file extensions of "_M_" for Microsoft, "_B_"
      for Borland, and "_W_" for WATCOM. Thus, WINFTP32._W_ is the Watcom
      Win32 makefile for WINFTP and WINFTP16._M_ is the Microsoft Win16
      makefile. Also see section 2.7 "Compiling Example Programs".

      Turbo C/C++ for Windows and Borland C Builder do not support command
      line makefiles. See MAKEFILE.TXT for more information on makefiles.


     FCE4C Users Manual                                        Page 7

      2.6 Using an IDE

      All current windows compilers have an "Integrated Development
      Environment" (IDE) for building application programs in the Windows
      environment. Since there is no standard format for IDE project files,
      file names must be entered into the IDE from the keyboard.

      Files ending with "._m_", "._b_", and "._w_" are command line
      makefiles. However, makefiles are also included for several IDE's as
      follows:

         FCEVER32.MAK ++ Microsoft Visual Studio.
         WINFTP32.MAK ++ Microsoft Visual Studio.
         BCB_PRJ.MAK  ++ Borland C++ Builder.

      Creating a project makefile for the examples that have only command
      line makefiles is fairly straight forward. All of the IDE's use the
      concept of a file hierarchy. For example, the CONFTP example program
      file hierarchy in the IDE (for 32-bit) should look like:

         CONFTP.EXE
         +++ CONFTP.C
         +++ FCE32.LIB

      Replace FCE32.LIB above with FCE16.LIB for 16-bit applications. The
      order of the files is not significant.

      2.6.1 Microsoft IDE

      To create a new project, choose "Project", then "New". Select Win16
      [Win32] as the target. A dialog box will then pop up into which the
      project file names are entered.

      2.6.2 Microsoft Developer Studio

      To open an existing project, choose "File", then "Open Workspace",
      and then select "Makefiles" from the list of file types.

      To create a new project, choose "File", then "New", then "Project
      Workspace". Select "Application" for "Type:" and your project name
      for "Name:". Choose Win16 or Win32 for platform. Then select
      "Create".

      Select "Insert", then "Files into Project". Add all filenames as
      listed in the ".PRJ" file corresponding to the project you are
      building. Lastly, select "Rebuild All".












     FCE4C Users Manual                                        Page 8

      2.6.3 Borland IDE

      To create a new project, first turn off LINKER case sensitivities:
      Choose "Options", "Projects", "Linker", "General". Turn off the "case
      sensitive link" and "case sensitive exports and imports" boxes.

      Next, choose "Project", then "New Project". Use the INS (Insert) key
      to pop up a dialog box into which the project file names are entered.

      Select "GUI" for the "Target Model:" Only "Runtime" and "Dynamic"
      should be checked for "Standard Libraries:"

      NOTE1: If, after linking in the IDE, you get unresolved external
      references to the communications library functions in which each
      function name is all upper case, then you have NOT turned off case
      sensitivity as described above.

      NOTE2: If you get errors compiling the windows header file
      "WINDOWS.H", turn on "Borland Extensions" in "Options", "Project",
      "Compiler", "Source".

      2.6.4 Turbo C IDE

      Follow the same directions as above, except that the "Target Model:"
      can be any listed.

      2.6.5 Borland C++ Builder

      To create a new project, Choose "File" / "Open Project" on the menu
      bar. Load BCB_PRJ.MAK. Then, choose "Build All" from "Project" to
      create the executable.

      2.6.6 Watcom IDE

      To create a new project, choose "File", then "New Project". Enter
      the project name and then choose Win16 [Win32] as the target. Use the
      INS (Insert) key to pop up a dialog box into which the project file
      names are entered.

      Select "Options" from the main window, then "C Compiler Switches",
      then "10". Memory Models and Processor Switches". Check "80386 Stack
      based calling [-3s]", then check "32-bit Flat model [-mf]".
















     FCE4C Users Manual                                        Page 9

      2.7 Compiling Example Programs

      2.7.1 Compiling from the Command Line

      All of the example programs can be compiled from the command line
      using the provided command line makefiles. Command line makefiles end
      with "._m_" for Microsoft C/C++, "._b_" for Borland C/C++, and "._w_"
      for Watcom C/C++.

      For example, to compile CONFTP:

      For Microsoft C, type:

          NMAKE -f CONFTP16._M_
          NMAKE -f CONFTP32._M_

      For Borland C, type:

          MAKE -f CONFTP16._B_
          MAKE -f CONFTP32._B_

      For Watcom C, type:

          WMAKE -f CONFTP32._W_

      Note that the MFC_PGM example program requires Microsoft Foundations
      Classes (MFC).

      2.7.2 Compiling using Microsoft Development Studio

      The example programs FCEVER and WINFTP can be compiled directly from
      Microsoft Developer Studio.

      To open an existing project (such as WINFTP32.MAK), choose "File",
      then "Open Workspace", and then select "Makefiles" from the list of
      file types.

      2.7.3 Compiling using Borland C++ Builder

      The BCB_PRJ example is compiled from any version of Borland C++
      Builder.

      Choose "File", then "Open Project". If using BCB version 2.0 or
      above, select "C++ Builder 1.0 Project".














     FCE4C Users Manual                                        Page 10

      3.0 Using the FCE Library

      The FCE library is divided up into eight classes of functions, as
      follows:

      (1) The fceAttach and fceRelease functions are used to initialize and
      terminate the FCE system. fceAttach should be the very first FCE
      function called and fceRelease must be the last FCE function called.

      The single argument to fceAttach is the maximum number of threads
      that will be started. Use 1 for non-threaded applications. The first
      argument to most of the other FCE functions will be the channel (or
      thread) number. Up to 32 threads can be run simultaneously. Threads
      are numbered starting at 0.

      (3) The fceConnect function is used to connect to a FTP server. The
      fceClose function terminates the connection to the FTP server, after
      which another connection can be made. There should be one fceClose
      for every fceConnect.

      (4) The FCE functions fceSetLocalDir and fceGetLocalDir are used to
      set and display the local directory to be used for uploading and
      downloading files. They affect only the client computer. Nothing is
      sent or received from the FTP server.

      (5) The FCE function fceSetServerDir and fceGetServerDir are used to
      set and display the server directory from which all subsequent
      uploads and downloads will occur.

      (6) The FCE function fceGetList is used to get a list of files from
      the FTP server. Both name lists and full directory lists can be
      retrieved.

      (7) The FCE function fceSetMode is used to set the transfer mode to
      either ASCII or binary for all subsequent file transfers.

      (8) The FCE functions fceGetFile and fcePutFile are used for
      downloading and uploading files. Note that the default is ASCII.




















     FCE4C Users Manual                                        Page 11

      4.0 Application Notes

      4.1 FTP Basics

      The FTP (File Transfer Protocol) protocol is defined by Internet
      document RFC 959. It is used to copy files between a FTP client and a
      FTP server over a TCP/IP connection using well known port 21.

      In order to connect to a FTP server, the server name (or IP address),
      the user name, and the user password must be known. This is known as
      private (or protected) access.

      Some FTP servers allow "anonymous" access, which is usually download
      only. The convention for anonymous access is to use the word
      "anonymous" for the user name, and the callers email address for the
      password. Many FTP servers will also accept "ftp" instead of
      "anonymous".

      4.2 Auto Dial

      To allow Dial-Up Networking (DUN) to dial up your ISP when you access
      the Winsock:

      (1) Open the DUN folder in "My Computer", and choose
      "Connections/Settings" from menu bar. Uncheck "prompt for information
      before dialing" and choose "Don't prompt to use Dial-Up Networking".

      (2) Use the Windows REGEDIT program to change value "00 00 00 00" to
      the value "00 00 00 01" in the Windows Registry for the entry
      HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet
      Settings/EnableAutodial.

      (3) Use the Windows REGEDIT program to change value "00 00 00 00" to
      the value "00 00 00 01" in the Windows Registry for the entry
      HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet
      Settings/EnableAutodisconnect.

      (4) Use the Windows REGEDIT program to change value "14 00 00 00" to
      the value "01 00 00 00" in the Windows Registry for the entry
      HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet
      Settings/DisconnectIdleTime. This changes the idle time (until
      disconnect) from 20 minutes (hex 14) to one minute.
















     FCE4C Users Manual                                        Page 12

      5.0 Theory Of Operation

      The FTP Client Engine is state driven. This means that each call to
      FCE functions (that access the server) is broken down into sequential
      steps, each of which can be performed within a second or two.

      There are two ways in which FCE is used: (1) indirect use of the
      state engine, and (2) direct use of the state engine.

      5.1 Indirect Method

      The first (or "indirect") way to use the FCE library is to allow all FCE
      function calls to automatically call the FCE driver (fceDriver) before
      returning. This is the default way that FCE operates.

      The major advantage of this approach is that each FCE function
      returns only after it has completely finished. The disadvantage of
      this approach is that some functions may run for a considerable
      amount of time during which time the calling application must wait.

      Refer to the sample program WINFTP for an example of this approach.

      5.2 Direct Method

      The second (or "direct") way that the FCE state driver is used is to
      call it (fceDriver) directly. In order to operate this way, the
      function fceSetInteger must be called which sets the AUTO_CALL
      flag to off:

         fceSetInteger(Chan,FCE_AUTO_CALL_DRIVER, 0);

      After the above statement is executed, the state driver (fceDriver)
      must be called after all other FCE functions that access the server.
      For example,

         Code = fceConnect(...);
         if(Code<0) {/* handle error here */}
         while(1)
           {/* call the driver */
            Code = fceDriver();
            if(Code<0) {/* handle error here */}
            if(Code==0) break;
            /* do something here . . . */
           }

      The major advantage of the direct approach is that the calling
      application can perform other work such as reporting the progress of
      large downloads. The disadvantage is the extra code that must be
      written to call fceDriver.

      Refer to the sample program CONFTP for an example of this approach.







     FCE4C Users Manual                                        Page 13

      6.0 Versions of FCE

      The FTP Client Engine (FCE) library is available in three versions.
      All three versions have identical functionality.

      6.1 Shareware Version

      The shareware version can be differentiated from the other two
      versions by:

      (1) The shareware reminder screen is displayed at startup.

      (2) The DLL is branded with "SHAREWARE VERSION".

      The Shareware version may NOT be used for commercial purposes.

      6.2 Student Version

      The student version can be differentiated from the other two versions
      by:

      (1) There is no shareware reminder screen.

      (2) The DLL is branded with "STUDENT VERSION".

      The Student version may NOT be used for commercial purposes.

      6.3 Professional Version

      The professional version can be differentiated from the other two versions
      by:

      (1) There is no shareware reminder screen.

      (2) The DLL is branded with your company name.

      The professional version may be distributed with your application as
      specified by the software license.




















     FCE4C Users Manual                                        Page 14

      7.0 Using FCE with Other Languages

      The FTP Client Engine DLLs can be used with any application written
      in ANY language capable of calling the Windows (3.1, 95/98, NT) API.
      FCE16.DLL is required for all Win16 (Windows 3.1) applications, and
      FCE32.DLL is required for all Win32 (Windows 95/98/NT) applications.

      Declaration files have been defined by the following languages:

               C/C++ : FCE.H
        Visual Basic : FCE16.BAS & FCE32.BAS
      EXCEL & ACCESS : FCE16.BAS & FCE32.BAS
       PowerBASIC CC : FCE32.PBI
      Borland Delphi : FCE16.PAS & FCE32.PAS
       Fujitsu COBOL : FCE32.CBI
      ABSOFT FORTRAN : FCE32.INC
       Visual FoxPro : FCE32.FOX

      Additional declaration files will be added. Give us a call if you
      need a declaration not listed above.

      If you have interfaced FCE to an unusual language, email us the
      declaration file!

      8.0 Problems

      Before attempting to run any of the example programs, you should
      already be able to connect to the Internet.

      If you cannot get your application to run properly, first compile and
      run the example programs. If you call us to report a possible bug in
      the library, the first thing we will ask is if the example programs
      run correctly.

      Be sure to test the code returned from FCE functions. Then, call
      fceErrorText to get the text associated with the error code.

      For example:

      Code = fceConnect("ftp.isp.net","ftp","<mike@marshallsoft.com>");
      if(Code<0)
        {static char Buffer[64];
         fceErrorText(Code,Buffer,64);
         printf("Error %d: %s\n", Code, Buffer);
        }

      If you encounter a problem that you cannot resolve, give us a call or
      email us at support@marshallsoft.com.










     FCE4C Users Manual                                        Page 15

      9.0 Example Programs

      Most of the example programs are written in Win32 console mode. This
      was done in order to provide the clearest possible code, without the
      complication and complexity of GUI code. All console mode programs
      can be converted to GUI mode by coding the necessary windows code.

      Makefiles are classified as follows:

      *._m_  Microsoft C/C++ makefile (command line).
      *._b_  Borland C/C++ makefile (command line).
      *._w_  Watcom C/C++ makefile (command line).

      Files ending with .MAK include:

      FCEVER32.MAK Microsoft Visual C/C++ Developer Studio makefile.
      WINFTP32.MAK Microsoft Visual C/C++ Developer Studio makefile.
      MFCPGM16.MAK Microsoft Foundations Class (MFC) makefile (Win16).
      MFCPGM32.MAK Microsoft Foundations Class (MFC) makefile (Win32).
      BCB_PRJ.MAK  Borland C++ Builder makefile.

      9.1 FCEVER

      The first example program is the console mode program FCEVER (FCE
      Version) which displays the FCE library version number and
      registration string.

      There are command line makefiles for Microsoft (FCEVER32._M_),
      Borland (FCEVER32._B_), and Watcom (FCEVER32._W_), as well as a
      Microsoft Developer Studio makefile (FCEVER32.MAK).

      After compiling, from the command line, type:

         FCEVER

      9.2 WINFTP

      WINFTP is a Win16/Win32 GUI (Graphical User Interface) application
      which can be used to connect to a FTP server and upload, download,
      and delete files.

      There are command line makefiles for Microsoft (WINFTP16._M_ and
      WINFTP32._M_), Borland (WINFTP16._B_ and WINFTP32._B_), and Watcom
      (WINFTP32._W_), as well as a Microsoft Developer Studio makefile
      (WINFTP32.MAK).

      9.3 GETPRO

      GETPRO is a console mode program that connects to the MarshallSoft
      FTP server at ftp://ftp.marshallsoft.com and downloads PRODUCTS.TXT
      from server directory marshallsoft/other.

      Before compiling, change the last argument in fceConnect to your
      email address.




     FCE4C Users Manual                                        Page 16

      9.4 CONFTP

      CONFTP is a generic FTP client (console mode) application that
      exercises most of the FCE functions. After compiling, start CONFTP
      from the command line

         CONFTP server user password

      9.5 BCB_PRJ

      BCB_PRJ is a Borland C++ Builder (BCB) example program similar to
      WINFTP. Open BCB_PRJ within BCB (any version). Start BCB and choose
      "File" then "Open Project", then set "Files of Type" to MAK files,
      then choose BCB_PRJ.MAK.

      9.6 GETALL

      GETALL is a Win32 console mode program that logs onto a specified FTP
      server and downloads all files ending with the specified extension.
      Edit GETALL.C before compiling.

      9.7 MFC_PGM

      MFC_PGM is a Microsoft Foundation Class equivalent of the GETPRO
      example program. Its purpose is to demonstrate calling FCE functions
      from MFC. Compile from the command line with MFCPGM16.MAK and
      MFCPGM32.MAK.

      9.8 MULTI

      MULTI is a Win32 console mode application that uses multiple threads
      in order to log onto to several FTP servers concurrently.

      Be sure to edit the FTP account information in MULTI.C before
      compiling.























     FCE4C Users Manual                                        Page 17

      10.0 Registration

      10.1 Profession Version

      The professional version of FCE4C may be registered for $95 plus $7
      S&H ($12 outside of North America) . The professional version DLL is
      also branded with your company name and may be distibuted with your
      applications.

      10.2 Profession Version with Source

      The professional version is also available with licensed source code
      for $595. A signed non-disclosure agreement is required. Source code
      may not be distributed under any circumstances.

      The "Professional Version" may be upgraded to the "Professional
      Version with Source" for $500.

      10.3 Student Version

      We offer an "academic price" of 40% off the normal price for prepaid
      email orders to faculty and full time students currently enrolled in
      any accredited high school, college, or university. To qualify for
      the discount, your school must have a web site and you must have an
      email address at your school.

      When ordering, ask for the "academic discount", or enter "student
      at" (or "faculty at") and your schools web site address (URL) in the
      comments field of the order form on our web site order page . Your
      order will be sent to your email address at your school.

      Products bought with academic pricing can not be used for any
      commercial purpose. The academic discount does not apply to source
      code.

      10.4 Updates

      When you order FCE4C, you will receive a license file FCExxxx.LIC
      where xxxx is your customer number. Save this file!

      Updates are $20 by email if you attach your license file FCExxxx.LIC
      to the email, and $30 otherwise. There is an additional $7 charge
      ($12 outside of North America) if you want a disk and printed manuals
      mailed.














     FCE4C Users Manual                                        Page 18

      12.0 Payment

      All prices are guaranteed for one year from the release date.
      Multiple copy discounts (3 or more) and site licenses are available.
      Please call for details.

      We accept American Express, VISA, MasterCard, Discover, checks in US
      dollars drawn on a US bank, International Postal Money Orders,
      purchase orders (POs) from recognized US schools and companies listed
      in Dun & Bradstreet, and COD (street address and phone number
      required) within the USA (plus a $5 COD charge).

      For credit card orders, be sure to include the account number, the
      expiration date, the exact name on the card, and the complete card
      billing address (the address to which the credit card bill is
      mailed).

      Print the file INVOICE.TXT if a "Pro Forma" invoice is needed. The
      registered package includes:

         o  Win16 & Win32 FCE4C Libraries w/o shareware screens.
         o  Printed Users Manual & Reference Manual.
         o  Telephone and email support for one year.
         o  Source code in the "Professional Version with Source".

      FCE4C is shipped on a 3.5" HD diskette.

      There are several ways to place your order:

      (1) Using our secure server at www.marshallsoft.com
      (2) Email INVOICE.TXT to sales@marshallsoft.com
      (3) FAX INVOICE.TXT to 256-880-0925 (24 hours).
      (4) Call us at 256-881-4640 (7 AM to 7 PM CST Monday through Friday).
      (5) Mail INVOICE.TXT to

               MarshallSoft Computing, Inc.
               POB 4543
               Huntsville AL 35815
               USA



















     FCE4C Users Manual                                        Page 19

      12.0 Legal Issues

      12.1 License

      MarshallSoft Computing, Inc. grants the registered user of FCE4C the
      right to use one copy of the FCE4C library (in object form) on a
      single computer in the development of any software product (other
      than libraries such as FCE4C). The user may not use the the library
      on more than one computer at the same time.

      The "Student" (40% academic discount) registered DLLs may not be
      distributed under any circumstances, nor may they be used for any
      commercial purpose.

      The "Professional" ($95) registered DLLs may be distributed (without
      royalty) in object form only, as part of the user's application.

      Source code in the "Professional Version with Source" may not be
      distributed in whole or part under any circumstances.

      12.2 Warranty

      MARSHALLSOFT COMPUTING, INC.  DISCLAIMS ALL WARRANTIES RELATING TO
      THIS SOFTWARE, WHETHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
      LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      A PARTICULAR PURPOSE, AND ALL SUCH WARRANTIES ARE EXPRESSLY AND
      SPECIFICALLY DISCLAIMED. NEITHER MARSHALLSOFT COMPUTING, INC.  NOR
      ANYONE ELSE WHO HAS BEEN INVOLVED IN THE CREATION, PRODUCTION, OR
      DELIVERY OF THIS SOFTWARE SHALL BE LIABLE FOR ANY INDIRECT,
      CONSEQUENTIAL, OR INCIDENTAL DAMAGES ARISING OUT OF THE USE OR
      INABILITY TO USE SUCH SOFTWARE EVEN IF MARSHALLSOFT COMPUTING, INC.
      HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR CLAIMS. IN NO
      EVENT SHALL MARSHALLSOFT COMPUTING, INC.'S LIABILITY FOR ANY SUCH
      DAMAGES EVER EXCEED THE PRICE PAID FOR THE LICENSE TO USE THE
      SOFTWARE, REGARDLESS OF THE FORM OF THE CLAIM. THE PERSON USING THE
      SOFTWARE BEARS ALL RISK AS TO THE QUALITY AND PERFORMANCE OF THE
      SOFTWARE.

      Some states do not allow the exclusion of the limit of liability for
      consequential or incidental damages, so the above limitation may not
      apply to you.

      This agreement shall be governed by the laws of the State of Alabama
      and shall inure to the benefit of MarshallSoft Computing, Inc.  and
      any successors, administrators, heirs and assigns.  Any action or
      proceeding brought by either party against the other arising out of
      or related to this agreement shall be brought only in a STATE or
      FEDERAL COURT of competent jurisdiction located in Madison County,
      Alabama. The parties hereby consent to in personam jurisdiction of
      said courts.








     FCE4C Users Manual                                        Page 20

      13.0 Summary


      12.1 Revision History


      Version 1.0 "Beta": February 12, 1999.

          o  The Beta release.

      Version 1.0: March 22, 1999

          o  The initial release.

      12.2 FCE4C Function Summary

      Refer to the FCE4C Reference Manual (FCE4C_R.TXT) for detailed
      information on the communications and support functions.  A one line
      summary of each function follows.

      There are 21 functions in the FCE library.

      +-------------------------------------------------------------------+
      |                                                                   |
      | fceAbort        : Aborts download or upload in progess.           |
      | fceAttach       : Attaches FCE.                                   |
      | fceClose        : Closes connection opened by fceConnect.         |
      | fceConnect      : Connects to FTP server and logs on.             |
      | fceDelFile      : Deletes file on server.                         |
      | fceDriver       : Executes next FCE state.                        |
      | fceExtract      : Extracts strings.                               |
      | fceErrorText    : Formats error message.                          |
      | fceGetFile      : Downloads file.                                 |
      | fceGetInteger   : Gets numeric parameter.                         |
      | fceGetLocalDir  : Gets local directory.                           |
      | fceGetServerDir : Gets server directory.                          |
      | fceGetString    : Gets string parameter.                          |
      | fceGetList      : Lists files on server.                          |
      | fcePutFile      : Uploads file.                                   |
      | fceRelease      : Releases FCE.                                   |
      | fceSetInteger   : Set numeric parameter.                          |
      | fceSetLocalDir  : Sets local directory.                           |
      | fceSetMode      : Sets transfer mode (ASCII or BINARY).           |
      | fceSetServerDir : Sets server directory.                          |
      | fceSetString    : Sets string parameter.                          |
      |                                                                   |
      +-------------------------------------------------------------------+











     FCE4C Users Manual                                        Page 21


      12.3 FCE Error Return Code List


      The complete list of FCE error codes follows.


      +-----------------------+-----------------------------------------+
      | FCE_NO_ERROR          | No error.                               |
      | FCE_CANNOT_COMPLY     | Cannot comply. Not always an error.     |
      +-----------------------+-----------------------------------------+
      | FCE_ABORTED           | Internal checksum fails!                |
      | FCE_ALREADY_ATTACHED  | Already attached.                       |
      | FCE_BAD_STATUS_FLAG   | Bad status flag passed to fceStatus.    |
      | FCE_CANNOT_ALLOC      | Cannot allocate memory.                 |
      | FCE_CANNOT_COMPLY     | Cannot comply.                          |
      | FCE_CANNOT_CREATE_SOCK| Cannot create socket.                   |
      | FCE_CHAN_OUT_OF_RANGE | Channel out of range.                   |
      | FCE_CONNECT_ERROR     | Error attempting to connect.            |
      | FCE_EOF               | Socket has been closed.                 |
      | FCE_SERVER_ERROR      | FTP server returned error.              |
      | FCE_INVALID_SOCKET    | Invalid socket.                         |
      | FCE_IS_BLOCKING       | WINSOCK is currently blocking.          |
      | FCE_NO_HOST           | No host name.                           |
      | FCE_NO_SERVER         | Cannot find FTP server.                 |
      | FCE_NO_SOCK_ADDR      | No available sockaddr structures.       |
      | FCE_NOT_ATTACHED      | Must call fceAttach first.              |
      | FCE_NOT_SERVER        | Illegal chars in server name.           |
      | FCE_PASS_NULL_ARG     | PASSWORD not specified.                 |
      | FCE_SERVER_NULL_ARG   | SERVER not specified.                   |
      | FCE_TIMED_OUT         | Socket timed out.                       |
      | FCE_USER_NULL_ARG     | USER name not specified.                |
      | FCE_MODE_NOT_AB       | Must specify 'A' or 'B' for mode.       |
      | FCE_LISTEN_ERROR      | Listen error.                           |
      | FCE_LISTENER_SILENT   | No response of listener socket.         |
      | FCE_ACCEPT_SILENT     | Timed out waiting for accept.           |
      | FCE_SOCK_READ_ERROR   | Socket read error.                      |
      +-----------------------+-----------------------------------------+

      NOTES:
      (1) All error codes are negative.
      (2) Numerical error codes are defined in DEFINES.H.
      (3) FCE_ABORTED will be returned if the DLL has been modified. You
          should never get this message!














     FCE4C Users Manual                                        Page 22

