home *** CD-ROM | disk | FTP | other *** search
- /*
- ***************************************************************************
- *
- * Datei:
- * RSysDisplays.c
- *
- * Inhalt:
- * int DisplayDiskInfo(char *filename, int with_tree);
- * int DisplayFileInfo(char *filename);
- * void DisplayDirectoryInfo(char *filename);
- * int DisplayTaskInfo(struct objectid *obj);
- * int DisplayLibraryInfo(struct objectid *obj);
- * void DisplaySoftDevInfo(struct objectid *obj);
- * void DisplayResourceInfo(struct objectid *obj);
- * int DisplayPortInfo(struct objectid *obj);
- * void ShowFont(struct TextFont *tf);
- * int DisplayFontInfo(struct objectid *obj);
- * int DisplayWindowInfo(struct objectid *obj);
- * int DisplayScreenInfo(struct objectid *obj);
- *
- * Bemerkungen:
- * Funktionen zur Anzeige weiterer Informationen zu ausgewählten
- * Objekten.
- *
- * Erstellungsdatum:
- * 07-Jul-93 Rolf Böhme
- *
- * Änderungen:
- * 07-Jul-93 Rolf Böhme Erstellung
- *
- ***************************************************************************
- */
-
- #include "RSysDebug.h"
- #include "RSysFunc.h"
-
- /*
- * DisplayDiskInfo() zeigt eine Info über ein Volume an.
- * Auf Wunsch kann die Verzeichnisstruktur angezeigt
- * werden
- */
- int
- DisplayDiskInfo(char *filename, int with_tree)
- {
- int sel;
- long free = 0L,used = 0L,percentused = 0L;
- char state[5],type[6];
-
- DPOS;
-
- FreeBytes(filename, &free, &used, &percentused, state, type);
-
- sel = MyEasyRequest(SysWnd, (UBYTE *) NAME " - Volume/Device Info",
- (UBYTE *) ((with_tree) ? "Continue|Tree" : "Continue"),
- (UBYTE *) "Name : %-20.20s\n"
- "Size : %7ld KBytes\n"
- "Free : %7ld KBytes\n"
- "Used : %7ld KBytes\n"
- "%% used : %3ld%%\n"
- "State : %s\n"
- "Type : %s",
- filename,
- free + used,
- free, used, percentused,
- state, type);
-
- return (sel);
- }
-
- /*
- * DisplayFileInfo() zeigt Infos über eine Datei an.
- * Handelt es sich um ein Executable, kann eine Hunk-Liste
- * erzeugt werden lassen
- */
- int
- DisplayFileInfo(char *filename)
- {
- char path[MAXFULLNAME],
- *help,
- file[MAXFULLNAME];
- int sel,
- ftype = filetype(filename);
-
- DPOS;
-
- strncpy(path, filename,MAXFULLNAME);
- help = (char *)PathPart((UBYTE *) path);
- *help = STRINGEND;
-
- strncpy(file, (char *)FilePart((UBYTE *) filename),MAXFULLNAME);
-
- sel = MyEasyRequest(NULL, (UBYTE *) NAME " - File Info",
- (UBYTE *) ((ftype == TYPE_EXECUTABLE) ?
- "Continue|Hunk list" : "Continue"),
- (UBYTE *) "Filename : %-20.20s\n"
- "Path : %s\n"
- "Size : %ld Bytes\n"
- "Type : %s",
- file, path, SizeOfFile(filename),
- mess[filetype(filename)]);
-
- if (ftype != TYPE_EXECUTABLE)
- return (TRUE);
-
- return (sel);
- }
-
- /*
- * DisplayDirectoryInfo() zeigt Infos über ein Verzeichnis
- * an
- */
- void
- DisplayDirectoryInfo(char *filename)
- {
- int count,
- Dirs = 0;
- long Size = 0L;
- char path[MAXFULLNAME],
- *help;
- BPTR lock;
-
- DPOS;
-
- strncpy(path, filename,MAXFULLNAME);
- help = (char *)PathPart((UBYTE *) path);
- *help = STRINGEND;
-
- if (lock = Lock((UBYTE *) path, MODE_OLDFILE))
- {
- count = SizeOfDir(lock, &Size, &Dirs);
- UnLock(lock);
- }
- else
- count = Size = Dirs = 0;
-
- MyEasyRequest(NULL, (UBYTE *) NAME " - Directory Info", (UBYTE *) "Continue",
- (UBYTE *) "Path : %s\n"
- "# Files : %ld\n"
- "# Sub-Dirs : %ld\n"
- "Total : %ld Bytes",
- path, count, Dirs, Size);
- return;
- }
-
- /*
- * DisplayTaskInfo() zeigt Infos über einen Task an. Auf
- * Wunsch kann der Task gekillt, ein Signal gesendet oder
- * die Priorität geändert werden
- */
- int
- DisplayTaskInfo(struct objectid *obj)
- {
- struct Task *task = (struct Task *) obj->address,display_task;
- char *status[]=
- {
- "Invalid", "Adding ", "Running", "Ready ", "Waiting", "Except", "Remove"
- };
- int sel = 7,
- wins = 0,
- scrs = 0,
- ports = 0;
-
- DPOS;
-
- Disable();
- CopyMem(task,&display_task,sizeof(struct Task));
- Enable();
-
- CountAssocObjects(task, &wins, &scrs, &ports);
-
- sel = MyEasyRequest(SysWnd, (UBYTE *) NAME " " VERSION " - Task Control",
- (UBYTE *) "Continue|^C|^D|^E|^F|Prio|Kill!",
- (UBYTE *) "Name : %-20.20s (%s) Prio: %-4ld\n"
- "Address : 0x%08lx Flags : 0x%08lx\n"
- "State : %8s IDNest : %-8ld\n"
- "TDNest : %-8ld SigAlloc : 0x%08lx\n"
- "SigWait : 0x%08lx SigRecvd : 0x%08lx\n"
- "SigExcept : 0x%08lx Stack : %-5ld\n\n"
- "Associated Objects\n"
- "Ports : %4ld - Windows : %4ld\n"
- "Screens : %4ld",
- obj->fullname,
- (display_task.tc_Node.ln_Type == NT_TASK) ? "Task" : "Process",
- display_task.tc_Node.ln_Pri,
- task, display_task.tc_Flags, status[display_task.tc_State],
- display_task.tc_IDNestCnt, display_task.tc_TDNestCnt,
- display_task.tc_SigAlloc, display_task.tc_SigWait, display_task.tc_SigRecvd,
- display_task.tc_SigExcept,
- ((ULONG) display_task.tc_SPUpper - (ULONG) display_task.tc_SPLower),
- ports, wins, scrs);
-
- return (sel);
- }
-
- /*
- * savecpyid() kopiert den ID-String einer Library in ein
- * Zeichenfeld. Am Ende des Strings erscheinen häufig zwei
- * Sonderzeichen, die hier entfernt werden
- */
- static void
- savecpyid(char *IDStr,struct Library *lib)
- {
- char *id;
-
- id = (char *)lib->lib_IdString;
-
- if(id && *id)
- {
- strncpy(IDStr,id,40);
-
- if(!isprint((int)IDStr[strlen(IDStr)-1]))
- IDStr[strlen(IDStr)-1] = STRINGEND;
- if(!isprint((int)IDStr[strlen(IDStr)-2]))
- IDStr[strlen(IDStr)-2] = STRINGEND;
- }
- else
- strcpy(IDStr, field[NO_LIB_ID]);
-
- return;
- }
-
- /*
- * makelibflags() erzeugt entsprechend der Library-Flags
- * einen "lesbaren" String
- */
- static char *
- makelibflags(struct Library *lib,char *flags)
- {
- if(lib->lib_Flags == 0)
- strcpy(flags, field[NO_FLAGS]);
- else
- sprintf(flags,"%10s %10s %10s %10s",
- (lib->lib_Flags & LIBF_SUMMING) ? "CheckSum" : field[BLANK_FIELD],
- (lib->lib_Flags & LIBF_CHANGED) ? "Changed" : field[BLANK_FIELD],
- (lib->lib_Flags & LIBF_SUMUSED) ? "ResetByErr" : field[BLANK_FIELD],
- (lib->lib_Flags & LIBF_DELEXP) ? "DelExpunge" : field[BLANK_FIELD]);
-
- return(flags);
- }
-
- /*
- * DisplayLibraryInfo() zeigt alle Infos über eine Library
- * an
- */
- int
- DisplayLibraryInfo(struct objectid *obj)
- {
- int sel;
- struct Library *lib = (struct Library *) obj->address;
- char IDStr[41];
- char flags[45];
-
- DPOS;
-
- savecpyid(IDStr,lib);
-
- sel = MyEasyRequest(SysWnd, (UBYTE *) NAME " " VERSION " - Library Control",
- (UBYTE *) "Continue|Remove Library",
- (UBYTE *) "Type : Library\n"
- "Name : %s\n"
- "ID-String : %-30.30s\n"
- "Address : 0x%08lx\n"
- "Flags : %s\n"
- "Jump-Table-Size: %4ld Bytes Data-Size : %ld Bytes\n"
- "CheckSum : 0x%08lx",
- obj->fullname, IDStr, obj->address,
- makelibflags(lib,flags),
- lib->lib_NegSize,
- lib->lib_PosSize,
- lib->lib_Sum);
-
- return (sel);
- }
-
- /*
- * DisplaySoftDevInfo() zeigt alle Infos über ein
- * *.device an
- */
- void
- DisplaySoftDevInfo(struct objectid *obj)
- {
- struct Library *lib = (struct Library *) obj->address;
- char IDStr[40];
- char flags[45];
-
- DPOS;
-
- savecpyid(IDStr,lib);
-
- MyEasyRequest(SysWnd,
- (UBYTE *) NAME " " VERSION " - Software Device Info",
- (UBYTE *) "Continue",
- (UBYTE *) "Type : Software Device\n"
- "Name : %s\n"
- "ID-String : %-30.30s\n"
- "Address : 0x%08lx\n"
- "Flags : %s\n"
- "Jump-Table-Size: %4ld Bytes Data-Size : %ld Bytes\n"
- "CheckSum : 0x%08lx",
- obj->fullname, IDStr, obj->address,
- makelibflags(lib,flags),
- lib->lib_NegSize,
- lib->lib_PosSize,
- lib->lib_Sum);
-
- return;
- }
-
- /*
- * DisplayResourceInfo() zeigt alle Infos über eine .resource
- * an
- */
- void
- DisplayResourceInfo(struct objectid *obj)
- {
- struct Library *lib = (struct Library *) obj->address;
- char flags[45];
-
- DPOS;
-
- MyEasyRequest(SysWnd,
- (UBYTE *) NAME " " VERSION " - RessourceInfo",
- (UBYTE *) "Continue",
- (UBYTE *) "Type : Ressource\n"
- "Name : %s\n"
- "Address : 0x%08lx\n"
- "Flags : %s\n"
- "Jump-Table-Size: %4ld Bytes Data-Size : %ld Bytes\n"
- "CheckSum : 0x%08lx",
- obj->fullname, obj->address,
- makelibflags(lib,flags),
- lib->lib_NegSize,
- lib->lib_PosSize,
- lib->lib_Sum);
-
- return;
- }
-
- /*
- * DisplayPortInfo() zeigt Infos über einen Port an
- */
- int
- DisplayPortInfo(struct objectid *obj)
- {
- int sel;
- struct MsgPort *port;
- char sigtask[MAXFULLNAME];
- struct Task *task;
- char *flags[]=
- {
- "Signal", "SoftInt", "Ignore"
- };
-
- DPOS;
-
- Disable();
- port = (struct MsgPort *) obj->address;
- if (port->mp_SigTask)
- {
- task = (struct Task *) (port->mp_SigTask);
- savestrcpy(sigtask, &task->tc_Node, MAXFULLNAME, NT_TASK);
- }
- else
- strcpy(sigtask, field[NO_TASK]);
-
- Enable();
-
- sel = MyEasyRequest(SysWnd, (UBYTE *) NAME " " VERSION " - Port Control",
- (UBYTE *) "Continue|Remove Port",
- (UBYTE *) "Type : %s\n"
- "Address : 0x%08lx\n"
- "Name : %-20.20s\n"
- "Signal-Task : %-20.20s\n"
- "Flags : %s",
- "Port", obj->address, obj->fullname, sigtask,
- flags[port->mp_Flags]);
-
- return (sel);
- }
-
- /*
- * DisplayFontInfo() zeigt alle Infos über einen Font an.
- * Dieser kann dann wahlweise entfernt oder angezeigt
- * werden
- */
- int
- DisplayFontInfo(struct objectid *obj)
- {
- int sel;
-
- DPOS;
-
- sel = MyEasyRequest(SysWnd, (UBYTE *) NAME " " VERSION " - Font Control",
- (UBYTE *) "Continue|Show Font|Remove Font",
- (UBYTE *) "Type : %s\n"
- "Address : 0x%08lx\n"
- "Name : %s",
- "Font", obj->address, obj->fullname);
-
- return (sel);
- }
-
- /*
- * DisplayWindowInfo() zeigt Infos über ein Fenster an
- */
- int
- DisplayWindowInfo(struct objectid *obj)
- {
- int sel;
- struct Window disp_win;
- ULONG lock;
-
- DPOS;
-
- lock = LockIBase(NULL);
- CopyMem((struct Window *)(obj->address),&disp_win,sizeof(struct Window));
- UnlockIBase(lock);
-
- sel = MyEasyRequest(SysWnd, (UBYTE *) NAME " " VERSION " - Window Control",
- (UBYTE *) "Continue|Close Window",
- (UBYTE *)
- "Type : Window Address : 0x%08lx\n"
- "Name : %-30.30s\n"
- "Next : 0x%08lx\n"
- "LeftEdge : %-4ld TopEdge : %-4ld\n"
- "Width : %-4ld Height : %-4ld\n"
- "MinWidth : %-4ld MinHeight: %-4ld\n"
- "MaxWidth : %-4ld MaxHeight: %-4ld\n"
- "Flags : 0x%08lx Menu: %s\n"
- "Requester: %s ReqCount: %ld DMReq: %s\n"
- "IDCMP : 0x%08lx Detail: %-2ld Block: %2ld",
- obj->address, obj->fullname,
- disp_win.NextWindow,
- disp_win.LeftEdge,disp_win.TopEdge,
- disp_win.Width,disp_win.Height,
- disp_win.MinWidth,disp_win.MinHeight,
- disp_win.MaxWidth,disp_win.MaxHeight,
- disp_win.Flags,(disp_win.MenuStrip ? "Yes" : "No"),
- (disp_win.FirstRequest ? "Yes" : "No"),disp_win.ReqCount,
- (disp_win.DMRequest ? "Yes" : "No"),disp_win.IDCMPFlags,
- disp_win.DetailPen,disp_win.BlockPen );
-
- return (sel);
- }
-
- /*
- * DisplayScreenInfo() zeigt Infos über ein Screen an
- */
- int
- DisplayScreenInfo(struct objectid *obj)
- {
- int sel;
- struct Screen disp_scr;
- ULONG lock;
-
- DPOS;
-
- lock = LockIBase(NULL);
- CopyMem((struct Screen *)(obj->address),&disp_scr,sizeof(struct Screen));
- UnlockIBase(lock);
-
- sel = MyEasyRequest(SysWnd, (UBYTE *) NAME " " VERSION " - Screen Control",
- (UBYTE *) "Continue|Close Screen",
- (UBYTE *) "Type : Screen Address : 0x%08lx\n"
- "Name : %.20s\n"
- "Next : 0x%08lx\n"
- "LeftEdge : %-4ld TopEdge : %-4ld\n"
- "Width : %-4ld Height : %-4ld\n"
- "BarHeight: %-4ld BarVBord : %-4ld\n"
- "BarHBord : %-4ld MenuVBord: %-4ld\n"
- "MenuHBord: %-4ld WBorTop : %-4ld\n"
- "WBorLeft : %-4ld WBorRight: %-4ld\n"
- "WBorBott : %-4ld DetailPen: %-4ld\n"
- "BlockPen : %-4ld FlashCol : %-4ld\n"
- "Flags : 0x%08lx",
- obj->address, obj->fullname,
- disp_scr.NextScreen,
- disp_scr.LeftEdge,disp_scr.TopEdge,
- disp_scr.Width,disp_scr.Height,
- disp_scr.BarHeight,disp_scr.BarVBorder,
- disp_scr.BarHBorder,disp_scr.MenuVBorder,
- disp_scr.MenuHBorder,disp_scr.WBorTop,
- disp_scr.WBorLeft,disp_scr.WBorRight,
- disp_scr.WBorBottom,disp_scr.DetailPen,
- disp_scr.BlockPen,disp_scr.SaveColor0,
- disp_scr.Flags);
-
- return (sel);
- }
-