home *** CD-ROM | disk | FTP | other *** search
- /* 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);
- }
- }
-