home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
600-699
/
ff699.lha
/
Sizer
/
SizerW.c
< prev
Wrap
C/C++ Source or Header
|
1992-07-14
|
15KB
|
368 lines
/* SizerW.c
by Fabbian G. Dufoe, III
350 Ling-A-Mor Terrace South
St. Petersburg, Florida 33705
813-823-2350
GENIE: F.DUFOE3
This software is public domain. You may use it any way you wish.
This code handles I/O between Sizer and the user.
Revision summary:
15 October 1991: Initial release
18 May 1992:
Changed version number to 1.1.
Changed CheckClose() and WaitClose() functions to static to match
prototypes, moved prototypes for static functions to this file.
13 June 1992:
Changed version number to 1.2.
Changed display to show old file system (OFS) blocks and fast file
system (FFS) blocks.
Specified TOPAZ_EIGHTY for the display font.
24 June 1992:
Removed copyright notice.
-------------------------------------
|Sizer 1992 by F. G. Dufoe, III |
| |
| Bytes: Directories: |
| OFS Blocks: Files: |
| FFS Blocks: |
| |
|Program completed. |
|Select close gadget to exit. |
-------------------------------------
*/
#include <exec/types.h>
#include <intuition/intuition.h>
#include <libraries/dos.h>
#include "Sizer.h"
#define INTUITION_REV 33
#define GRAPHICS_REV 33
#ifndef __NOPROTO /* 18 May 1992 */
#ifndef __PROTO /* 18 May 1992 */
#define __PROTO(a) a /* 18 May 1992 */
#endif /* 18 May 1992 */
#else /* 18 May 1992 */
#ifndef __PROTO /* 18 May 1992 */
#define __PROTO(a) () /* 18 May 1992 */
#endif /* 18 May 1992 */
#endif /* 18 May 1992 */
/* Prototypes for functions defined in SizerW.c */ /* 18 May 1992 */
static int CheckClose __PROTO((struct Window *Window)); /* 18 May 1992 */
static void WaitClose __PROTO((struct Window *Window)); /* 18 May 1992 */
/* Use topaz 80 for text display. */ /* 13 June 1992 */
static struct TextAttr TOPAZ80 = /* 13 June 1992 */
{ /* 13 June 1992 */
(STRPTR)"topaz.font", TOPAZ_EIGHTY, 0, 0 /* 13 June 1992 */
}; /* 13 June 1992 */
/* Initialize IntuiText structures. */
static struct IntuiText Title =
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
10, /* SHORT LeftEdge; */
12, /* SHORT TopEdge; */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
"Sizer 1992 by F. G. Dufoe, III", /* 24 June 1992 */
/* UBYTE *IText; */
NULL /* struct IntuiText *NextText; */
};
static struct IntuiText Bytes =
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
30, /* SHORT LeftEdge; */
30, /* SHORT TopEdge; */
&TOPAZ80, /* struct TextAttr *ITextFont; */
"Bytes:", /* UBYTE *IText; */
&Title /* struct IntuiText *NextText; */
};
static struct IntuiText OBlocks = /* 13 June 1992 */
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
30, /* SHORT LeftEdge; */ /* 13 June 1992 */
40, /* SHORT TopEdge; */ /* 13 June 1992 */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
"OFS Blocks:", /* 13 June 1992 */
/* UBYTE *IText; */ /* 13 June 1992 */
&Bytes /* struct IntuiText *NextText; */ /* 13 June 1992 */
};
static struct IntuiText FBlocks = /* 13 June 1992 */
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
30, /* SHORT LeftEdge; */ /* 13 June 1992 */
50, /* SHORT TopEdge; */ /* 13 June 1992 */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
"FFS Blocks:", /* 13 June 1992 */
/* UBYTE *IText; */ /* 13 June 1992 */
&OBlocks /* struct IntuiText *NextText; */ /* 13 June 1992 */
};
static struct IntuiText Dirs =
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
190, /* SHORT LeftEdge; */ /* 13 June 1992 */
30, /* SHORT TopEdge; */ /* 13 June 1992 */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
"Directories:",
/* UBYTE *IText; */
&FBlocks /* struct IntuiText *NextText; */ /* 13 June 1992 */
};
static struct IntuiText Files =
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
190, /* SHORT LeftEdge; */ /* 13 June 1992 */
40, /* SHORT TopEdge; */ /* 13 June 1992 */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
"Files:", /* UBYTE *IText; */
&Dirs /* struct IntuiText *NextText; */ /* 13 June 1992 */
};
char ByteCount[20];
static struct IntuiText ByteCt =
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
86, /* SHORT LeftEdge; */
30, /* SHORT TopEdge; */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
ByteCount, /* UBYTE *IText; */
NULL /* struct IntuiText *NextText; */
};
char OBlockCount[20]; /* 13 June 1992 */
static struct IntuiText OBlockCt = /* 13 June 1992 */
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
126, /* SHORT LeftEdge; */ /* 13 June 1992 */
40, /* SHORT TopEdge; */ /* 13 June 1992 */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
OBlockCount, /* 13 June 1992 */
/* UBYTE *IText; */ /* 13 June 1992 */
&ByteCt /* struct IntuiText *NextText; */
};
char FBlockCount[20]; /* 13 June 1992 */
static struct IntuiText FBlockCt = /* 13 June 1992 */
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
126, /* SHORT LeftEdge; */ /* 13 June 1992 */
50, /* SHORT TopEdge; */ /* 13 June 1992 */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
FBlockCount, /* 13 June 1992 */
/* UBYTE *IText; */ /* 13 June 1992 */
&OBlockCt /* struct IntuiText *NextText; */ /* 13 June 1992 */
};
char DirCount[20];
static struct IntuiText DirCt =
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
294, /* SHORT LeftEdge; */ /* 13 June 1992 */
30, /* SHORT TopEdge; */ /* 13 June 1992 */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
DirCount, /* UBYTE *IText; */
&FBlockCt /* struct IntuiText *NextText; */ /* 13 June 1992 */
};
char FileCount[20];
static struct IntuiText FileCt =
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
246, /* SHORT LeftEdge; */ /* 13 June 1992 */
40, /* SHORT TopEdge; */ /* 13 June 1992 */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
FileCount, /* UBYTE *IText; */
&DirCt /* struct IntuiText *NextText; */ /* 13 June 1992 */
};
static struct IntuiText Error =
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
5, /* SHORT LeftEdge; */
80, /* SHORT TopEdge; */ /* 13 June 1992 */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
"Sizer failed. Select close gadget to exit.",
/* UBYTE *IText; */
NULL /* struct IntuiText *NextText; */
};
static struct IntuiText Done2 =
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
5, /* SHORT LeftEdge; */
80, /* SHORT TopEdge; */ /* 13 June 1992 */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
"Select close gadget to exit.",
/* UBYTE *IText; */
NULL /* struct IntuiText *NextText; */
};
static struct IntuiText Done =
{
1, 0, /* UBYTE FrontPen, BackPen; */
JAM2, /* UBYTE DrawMode; */
5, /* SHORT LeftEdge; */
70, /* SHORT TopEdge; */ /* 13 June 1992 */
&TOPAZ80, /* struct TextAttr *ITextFont; */ /* 13 June 1992 */
"Program completed.",
/* UBYTE *IText; */
&Done2 /* struct IntuiText *NextText; */
};
/* Initialize a NewWindow structure. */
static struct NewWindow NewWindow =
{
0, 10, /* SHORT LeftEdge, TopEdge */
350, 90, /* SHORT Width, Height */ /* 13 June 1992 */
0, 1, /* UBYTE DetailPen, BlockPen */
CLOSEWINDOW, /* ULONG IDCMPFlags */
WINDOWDRAG + WINDOWDEPTH + WINDOWCLOSE + SMART_REFRESH + NOCAREREFRESH,
/* ULONG Flags */
NULL, /* struct Gadget *FirstGadget */
NULL, /* struct Image *CheckMark */
"Sizer v1.2", /* UBYTE *Title */ /* 13 June 1992 */
NULL, /* struct Screen *Screen */
NULL, /* struct BitMap *BitMap */
0, 0, /* SHORT MinWidth, MinHeight */
0, 0, /* USHORT MaxWidth, MaxHeight */
WBENCHSCREEN /* USHORT Type */
};
static int /* 18 May 1992 */
CheckClose(struct Window *Window)
{
ULONG class;
int flag = 0;
struct IntuiMessage *message = NULL;
while (message = (struct IntuiMessage *)GetMsg(Window->UserPort))
{
class = message->Class;
ReplyMsg((struct Message *)message);
if (class == CLOSEWINDOW)
flag = 1;
}
return(flag);
}
void
SizerIO(struct record *Record)
{
static struct Window *Window = NULL;
extern struct IntuitionBase *IntuitionBase;
if (Window == NULL)
/* If the window isn't already open we'll try to open it. If we can't we
will pass a "FAIL" code back to the calling program so it will stop
executing.
*/
{
if (NULL == (IntuitionBase = (struct IntuitionBase *)
OpenLibrary("intuition.library",
INTUITION_REV)))
{
Record->code = FAIL;
return;
}
if ((Window = OpenWindow(&NewWindow)) == NULL)
{
CloseLibrary((struct Library *)IntuitionBase);
Record->code = FAIL;
return;
}
/* Write the fixed text to the window.
*/
PrintIText(Window->RPort, &Files, 0, 0); /* 13 June 1992 */
}
/* Write the number of bytes and blocks in the window.
*/
sprintf(ByteCount, "%ld", Record->bytes);
sprintf(OBlockCount, "%ld", Record->OFSblocks); /* 13 June 1992 */
sprintf(FBlockCount, "%ld", Record->FFSblocks); /* 13 June 1992 */
sprintf(FileCount, "%ld", Record->files);
sprintf(DirCount, "%ld", Record->dirs);
PrintIText(Window->RPort, &FileCt, 0, 0);
switch(Record->code)
{
case CLOSEIO:
/* If Record->code == CLOSEIO the program has finished with the window.
Close the window and the library.
*/
CloseWindow(Window);
Window = NULL;
CloseLibrary((struct Library *)IntuitionBase);
break;
case FAIL:
/* If Record->code == FAIL write an error message to the window and wait
for the user to close the window.
*/
PrintIText(Window->RPort, &Error, 0, 0);
WaitClose(Window);
break;
case DONE:
/* If Record->code == DONE write a completion message to the window and
wait for the user to close the window.
*/
PrintIText(Window->RPort, &Done, 0, 0);
WaitClose(Window);
break;
default:
/* If the user closed the window set Record->code to FAIL.
*/
if (CheckClose(Window) == 1)
Record->code = FAIL;
}
/* Return to the calling program.
*/
return;
}
static void /* 18 May 1992 */
WaitClose(struct Window *Window)
{
int done = 0;
while (done == 0)
{
Wait(1L << Window->UserPort->mp_SigBit);
done = CheckClose(Window);
}
}