/*************************************************************************** * Copyright (C) 1994 Charles P. Peterson * * 4007 Enchanted Sun, San Antonio, Texas 78244-1254 * * Email: Charles_P_Peterson@fcircus.sat.tx.us * * * * This is free software with NO WARRANTY. * * See gfft.c, or run program itself, for details. * * Support is available for a fee. * *************************************************************************** * * Program: gfft--General FFT analysis * File: wbfilerq.c * Purpose: file requestor * Author: Charles Peterson (CPP) * History: 11-Dec-1993 CPP; Created. * 8-Aug-94 CPP (1.10); force string to generic for now * Comments: Workbench GUI. Amiga Dependent! AmigaDOS 2.0+ required! * This is based on techniques from the Amiga RKRM examples * distributed freely by Commodore Amiga. I thank them. */ #ifdef AMIGA #include #include /* * Amiga includes */ #include #include #include #include #include #include /* DOS AddPart() */ #include "gfft.h" #include "errcodes.h" #define FR_LEFTEDGE 0 #define FR_TOPEDGE 0 #define FR_WIDTH 420 #define FR_HEIGHT 400 struct Library *AslBase = NULL; /* prevents startup from loading it */ /* which is very bad if running 1.3 */ struct FileRequester *File_Requesterp = NULL; #define FRP File_Requesterp /* short alias here for long expressions */ struct TagItem frtags[] = { ASL_Hail, (ULONG) NULL, /* This gets filled in later */ ASL_Height, FR_HEIGHT, ASL_Width, FR_WIDTH, ASL_LeftEdge, FR_LEFTEDGE, ASL_TopEdge, FR_TOPEDGE, TAG_DONE }; char *file_requestor (char *hail_message) { ULONG blen = 0; unsigned char *buffer = NullString; /* * Hail message doesn't change * Fix next time, for now, just use a neutral message */ frtags[0].ti_Data = (ULONG) "Select File"; if (!AslBase) { if (!(AslBase = OpenLibrary("asl.library", 37L))) { error_message (NO_FILE_REQSTR); return (char *) buffer; } } if (!FRP) { if (!(FRP = (struct FileRequester *) AllocAslRequest(ASL_FileRequest, frtags))) { error_message (OUT_OF_MEMORY); return (char *) buffer; } } if (AslRequest(FRP, NULL)) { blen = strlen (FRP->rf_Dir) + strlen (FRP->rf_File) + 10; buffer = gmalloc (blen, NOTHING_SPECIAL); strcpy (buffer, FRP->rf_Dir); AddPart (buffer, FRP->rf_File, blen); } return (char *) buffer; } #endif /* ifdef AMIGA */