home *** CD-ROM | disk | FTP | other *** search
-
- #ifndef FILEIO_H
- #define FILEIO_H
-
-
- /* *** fileio.h *************************************************************
- *
- * Amiga Programmers' Suite -- File IO Include File
- * from Book 1 of the Amiga Programmers' Suite by RJ Mical
- *
- * Copyright (C) 1986, =Robert J. Mical=
- * All Rights Reserved.
- *
- * Created for Amiga developers.
- * Any or all of this code can be used in any program as long as this
- * entire notice is retained, ok? Thanks.
- *
- * HISTORY NAME DESCRIPTION
- * ----------- -------------- --------------------------------------------
- * 12 Aug 86 RJ >:-{)* Prepare (clean house) for release
- * 14 Feb 86 =RJ Mical= Created this file.
- *
- * *********************************************************************** */
-
-
- #include <prosuite\prosuite.h>
- #include <prosuite\pointers.h>
- #include <prosuite\reqsupp.h>
- #include "alerts.h"
-
-
- /* === General FileIO Declarations ======================================= */
- #define MAX_NAME_LENGTH 64 /* Includes terminating NULL */
- #define MAX_TOOLTYPE_LENGTH 80 /* Includes terminating NULL */
- #define VISIBLE_SELECT_LENGTH 16 /* Buffer for visible chars + '\0' */
-
- /* The WBENCH_CODE definition is used to define whether to include
- * or not include the Workbench-style .info file pattern matching code.
- * If you intend on using Workbench pattern matching, or if you are
- * going to give the user the option, define this constant.
- * This makes sure that the Workbench-style code is in included in the
- * FileIO files when they are compiled.
- * To attempt to match Workbench patterns at run time, you must set
- * the WBENCH_MATCH flag in your FileIOSupport structure.
- *
- * If you aren't interested in Workbench-style pattern matching
- * and are interested in saving about 500 bytes of code size,
- * comment out the WBENCH_CODE definition.
- */
- #define WBENCH_CODE
-
-
-
- /* === FileIO Support Structure ========================================== */
- struct FileIOSupport
- {
- SHORT Flags;
-
- UBYTE *ReqTitle; /* The text that will be the requester's title */
-
- /* After a successful call to GetFileIOName(), these fields will have
- * the names selected by the user. You should never have to initialize
- * these fields, only read from them, though initializing them won't hurt.
- */
- UBYTE FileName[MAX_NAME_LENGTH];
- UBYTE DrawerName[MAX_NAME_LENGTH];
- UBYTE DiskName[MAX_NAME_LENGTH];
-
- /* If the LOCK_GOTTEN flag is set, the lock can be found here. */
- ULONG DOSLock;
-
- SHORT NameCount;
- SHORT NameStart;
- SHORT CurrentPick;
- struct Remember *NameKey;
-
- SHORT VolumeIndex;
- SHORT VolumeCount;
- struct Remember *VolumeKey;
-
- SHORT DiskObjectType;
- UBYTE ToolType[MAX_TOOLTYPE_LENGTH];
-
- LONG UserData; /* Use this for anything you want */
- };
-
-
- /* === User FileIO Flag Definitions === */
- #define GOOD_FILENAMES 0x0001 /* Clear this if disk has changed */
- #define USE_VOLUME_NAMES 0x0002 /* Use volume rather than device names */
- #define DISK_HAS_CHANGED 0x0004 /* Disk changed during GetFileIOName() */
- #define DOUBLECLICK_OFF 0x0008 /* Inhibit double-clicking */
- #define WBENCH_MATCH 0x0010 /* If set check .info files only */
- #define MATCH_OBJECTTYPE 0x0020 /* If set with .info check ObjectType */
- #define MATCH_TOOLTYPE 0x0040 /* If set with .info check ToolType */
-
- /* === System FileIO Flag Definitions === */
- #define LOCK_GOTTEN 0x1000 /* Got lock, need to unlock */
-
-
-
- /* === Name Table Entry Flags =========================================== */
- /* The Name Table Entry consists of the text, null-terminated, followed by
- * a byte of flag definitions.
- */
- /* === Flags Definitions === */
- #define NAMED_DIRECTORY 0x01
- #define NAMED_PREVIOUS 0x02
-
- #define DIR_TEXT_SIZE 3 /* Number of characters for "directory" mark */
-
-
-
- /* === OpenRequester ===================================================== */
- #define OPENGADGET_CANCEL 0x7FA0
- #define OPENGADGET_OK 0x7FA1
- #define OPENGADGET_NAMETEXT 0x7FA2
- #define OPENGADGET_DRAWERTEXT 0x7FA3
- #define OPENGADGET_DISKTEXT 0x7FA4
- #define OPENGADGET_SELECTNAME 0x7FA5
- #define OPENGADGET_UPGADGET 0x7FA6
- #define OPENGADGET_DOWNGADGET 0x7FA7
- #define OPENGADGET_PROPGADGET 0x7FA8
- #define OPENGADGET_NEXTDISK 0x7FA9
- #define OPENGADGET_BACKDROP 0x7FAA
-
- #define NAME_ENTRY_COUNT 6 /* These many names in the SelectName box */
-
- #define OPEN_NEXTDISK_COUNT 2
-
- #define REQTITLE_HEIGHT 8
-
- #define OPEN_LEFT 8
- #define OPEN_TOP 15
- #define OPEN_WIDTH 286
- #define OPEN_HEIGHT (110 + REQTITLE_HEIGHT)
- #define OPEN_LINEHEIGHT 10
-
- #define OPENSELECT_LEFT 8
- #define OPENSELECT_TOP (15 + REQTITLE_HEIGHT)
- #define OPENSELECT_WIDTH 122
- #define OPENSELECT_HEIGHT 60
-
- #define OPENPROP_MAXHEIGHT 30
- #define OPENPROP_TOPHEIGHT 2
- #define OPENPROP_BOTTOMHEIGHT 6
- #define OPENPROP_MINHEIGHT 8
-
-
-
-
- /* === Function Declarations (in alphabetical order) ===================== */
- UBYTE *AllocMem();
- UBYTE *AllocRemember();
-
- struct MsgPort *CreatePort();
- UBYTE *CurrentVolumeName();
-
- BOOL DirectoryName();
- BOOL DoubleClick();
-
- UBYTE *FindSuffix();
- SHORT FriendlyInfoType();
-
- struct DiskObject *GetDiskObject();
- struct FileIOSupport *GetFileIOSupport();
- BOOL GetFileIOName();
- struct IntuiMessage *GetMsg();
-
- SHORT HandleSelect();
-
- SHORT MakeEntry();
- BOOL MatchToolValue();
- BOOL MessageInterrupt();
-
- UBYTE *OpenLibrary();
- struct Screen *OpenScreen();
- struct Window *OpenWindow();
-
- SHORT RemoveGadget();
- BOOL Request();
-
-
- /* === String Functions === */
- SHORT CompareUpperStrings();
- VOID ConcatString();
- VOID CopyString();
-
- UBYTE *FindSuffix();
-
- SHORT IndexString();
-
- SHORT StringLength();
- BOOL StringsEqual();
- UBYTE *StripLeadingSpace();
- UBYTE *StripOuterSpace();
-
-
-
- /* === And Finally, eglobal inclusion ==================================== */
- /* If this is a FileIO source file (as compared with a normal source
- * from your own program), consider including eglobal.c.
- */
- #ifdef FILEIO_SOURCEFILE
- #ifndef EGLOBAL_CANCEL
- #include "eglobal.c"
- #endif /* ... end of EGLOBAL_CANCEL conditional */
- #endif /* ... end of FILEIO_SOURCEFILE conditional */
-
-
-
- #endif /* of FILEIO_H */
-
-