/* SASC 6.50 */

#include <exec/types.h>
#include <proto/exec.h>
#include <proto/dos.h>
#include <dos/dosextens.h>

TEXT FullName[1000];

STRPTR _Version = "$VER: fullname 1.0 (08.02.98)";

LONG main(void)
{
    LONG rc;
    struct DosLibrary *DOSBase;
    struct RDArgs *RArgs;
    BPTR FLock;
    STRPTR FileName;
    BOOL puterr;

    if ((DOSBase = (struct DosLibrary *)OpenLibrary("dos.library", 37))){
        rc = 10;
        puterr = TRUE;
        if (RArgs = ReadArgs("FILENAME/A", (APTR)&FileName, NULL)){
            if (FLock = Lock(FileName, ACCESS_READ)){
                if (NameFromLock(FLock, FullName, sizeof(FullName))){
                    PutStr(FullName);
                    FPutC(Output(), '\n');
                    rc = 0;
                }
                else{
                    if (IoErr() == ERROR_LINE_TOO_LONG){
                        PutStr("Full path too long\n");
                        puterr = FALSE;
                    }
                }
                UnLock(FLock);
            }
            FreeArgs(RArgs);
        }

        if (rc && puterr)
            PrintFault(IoErr(), NULL);
    }
    else
        rc = 20;

    return rc;
}
