#include <exec/types.h>
#include <exec/exec.h>
#include <intuition/intuition.h>
#include <libraries/dos.h>
#include <libraries/dosextens.h>
#include <dos.h>

#include "WdwDefs.h"

extern struct IntuitionBase *IntuitionBase;
extern struct GfxBase *GfxBase;
extern struct DosLibrary *DOSBase;

#define WORDROUND(xxx) (((long)xxx+3)>>2)<<2)   /* Round to word boundary */
#define D_S(name, type) char c_##name[sizeof(type)+3]; \
                        type *name = (type *)WORDROUND(c_##name);

#define XBorder 8
#define YBorder 45

#define GN_CANCEL  0
#define GN_NEWDIR  1
#define GN_NEWDISK 2
#define GN_OK      3
#define GN_PARENT  4
#define GN_RIEN    5
#define GN_DONE    6

struct fibNode
   {
   struct FileInfoBlock fib;
   struct fibNode *next,*prev;
   ULONG num;
   };

struct fibHeader
   {
   struct fibNode *directory,*first,*last,*current,*top;
   ULONG curnum,firstnum;
   };

USHORT yafr_e_FilenamePenColor,yafr_e_DirnamePenColor;

#define MAXPATHSTRING 140
char    absDir[MAXPATHSTRING];
char    absDirName[MAXPATHSTRING];

struct Gadget *FirstDisabled = NULL; /*The first ghosted gadget...*/


BYTE IsDOSDisk();
void ResetGadgets();
void bstrcpy();
void ClearFileBox();
BYTE Parentize();
void UpdateSlider();
void UpdateList();
void RewriteList();
BYTE CheckExt();
BYTE GetFib();
void CopyFIB();
void PrintFileName();
void RefreshGadget();
void FreeFuncMemory();
void PutDevicesInGadgets();
