/* misc. c */

#include <OSIncludes.h>
#pragma header

#include <libraries/newicon.h>
#include <pragma/newicon_lib.h>

#include <stdio.h>
#include <string.h>

#include "CopyIcon.h"

void ShowMsg(STRPTR msg)
{
	static struct EasyStruct es = {sizeof(struct EasyStruct),0,"CopyIcon",0,"O.K."};

	if (IntuitionBase && wbstartup)
	{
		es.es_TextFormat=msg;
		EasyRequestArgs(0,&es,0,0);
	} else {
		printf("CopyIcon: %s\n",msg);
	}
}

void FixName(void)
{
	char *c;
	WORD len;
	
	if ((len=strlen(name)))
	{
		if ((c=strstr(name,".info")) == &(name[len-5]))
		{
			*c='\0';
			len -= 5;
		}
		
		len--;

		if (name[len] == '/') name[len--] ='\0';
		
		if (name[len] == ':') strcat(name,"disk");
	}
}

struct NewDiskObject *GetIconFromWBLock(struct WBArg *wba)
{
	// sets also the boolean variable IsFileIcon!!

	struct NewDiskObject *rc=0;
	BPTR olddir;
	
	if (wba->wa_Name && (*wba->wa_Name))
	{
		// file
		
		IsFileIcon=TRUE;

		olddir=CurrentDir(wba->wa_Lock);
		rc=GetNewDiskObject(wba->wa_Name);
		strcpy(name,wba->wa_Name);
		CurrentDir(olddir);

	} else {
		// disk or drawer

		IsFileIcon=FALSE;

		if (NameFromLock(wba->wa_Lock,name,400) == DOSTRUE)
		{
			FixName();
			rc=GetNewDiskObject(name);
		}
	}
	
	return rc;
}

BOOL GetFile(STRPTR title,BOOL multi)
{
	BOOL rc;

	rc=AslRequestTags(FileReq,ASLFR_TitleText,title,
									  ASLFR_InitialFile,"",
									  multi ? ASLFR_DoMultiSelect : TAG_IGNORE,TRUE,
									  TAG_DONE);

	if (!multi)
	{
		strcpy(name,FileReq->fr_Drawer);
		AddPart(name,FileReq->fr_File,400);
	}
	
	return rc;
}

