/* CreateAlias.c, (c) 1995 Axel Behr */

#include <exec/types.h>
#include <workbench/startup.h>
#include <proto/dos.h>
#include <proto/icon.h>
#include <proto/intuition.h>

#include <stdlib.h>
#include <stdio.h>

#include <string.h>

#define PBUFLEN    100

void main(int argc, char **argv)
{
    struct WBStartup *argmsg;
    struct WBArg *wb_arg;
    LONG i;
    BPTR givenpath = 0;
    int argnum;
    struct DiskObject *aliasdob;

    UBYTE OldName[PBUFLEN], AliasName[PBUFLEN];
    static const UBYTE ver[] = "$VER: CreateAlias 1.0 " __AMIGADATE__;
    
    if (argc==0)
    {
        argmsg = (struct WBStartup *)argv ;
        wb_arg = argmsg->sm_ArgList;
        argnum = argmsg->sm_NumArgs;
        
        if (argnum > 1)
        {
            wb_arg++;  // skip program icon
            argnum--;
            if ( (wb_arg->wa_Name[0] == '\0') && (argnum > 1) )
            {
                givenpath = wb_arg->wa_Lock;
                wb_arg++;
                argnum--;
            }
        }
            
        for (i = 0; i < argnum; i++, wb_arg++)
        {
            OldName[0] = '\0';
            NameFromLock(wb_arg->wa_Lock, OldName, PBUFLEN);

            if (wb_arg->wa_Name[0] != '\0')
                AddPart(OldName, wb_arg->wa_Name, PBUFLEN);

            if (givenpath)
            {
                NameFromLock(givenpath, AliasName, PBUFLEN);
                if (wb_arg->wa_Name[0] != '\0')
                    AddPart(AliasName, wb_arg->wa_Name, PBUFLEN);
                else
                    AddPart(AliasName, FilePart(OldName), PBUFLEN);
            }
            else
                strcpy(AliasName, OldName);
            strcat(AliasName, "_Alias");
            
            if (MakeLink(AliasName, (LONG)OldName, TRUE))
            {
                if (aliasdob=GetDiskObjectNew(OldName))
                {
                    aliasdob->do_CurrentX = NO_ICON_POSITION;
                    aliasdob->do_CurrentY = NO_ICON_POSITION;
                    PutDiskObject(AliasName, aliasdob);
                    FreeDiskObject(aliasdob);
                }
            }
            else 
                DisplayBeep(NULL);
        }
    }
}
