Patch to sysinfo V2.0
David H. Brierley
dave at galaxia.Newport.RI.US
Mon Feb 20 09:15:32 AEST 1989
Here is a handy little patch to the sysinfo program. In version 2.0 Lenny
introduced a new compile time option called CHGWIND which would cause the
status line display to follow the currently active window. This is really
handy if you use windy or any other windowing software. However, it can
be a pain in the neck if you occasionaly bring up a window that wants to
use the label lines for it's own purpose. What this patch does is to have
the program check to see if it's ok to use the label lines before writing
all over them. The program defines "ok to write" as either of the following
two conditions: the label lines are blank or the label lines contain info
written by the sysinfo program.
This patch is kinda-sorta an official patch. I developed the patch, sent
a copy of it to Lenny, he made a few changes and sent it back to me along
with his blessing to go ahead and post it.
--- cut here for Patch to sysinfo.c --- --- cut here for Patch to sysinfo.c ---
*** sysinfo.orig Sun Feb 19 01:44:47 1989
--- sysinfo.c Sun Feb 19 01:44:46 1989
***************
*** 2,8
** **
** Program name: sysinfo.c (System Info) **
** Programmer: Lenny Tropiano UUCP: ...icus!lenny **
! ** Organization: ICUS Software Systems (c)1988 **
** Date: January 23, 1988 **
** Version 2.0: June 27, 1988 **
** **
--- 2,8 -----
** **
** Program name: sysinfo.c (System Info) **
** Programmer: Lenny Tropiano UUCP: ...icus!lenny **
! ** Organization: ICUS Software Systems (c)1988, 1989 **
** Date: January 23, 1988 **
** Version 2.0: June 27, 1988 **
** Version 2.1: Februrary 19, 1989 (Revision Level 4) **
***************
*** 5,10
** Organization: ICUS Software Systems (c)1988 **
** Date: January 23, 1988 **
** Version 2.0: June 27, 1988 **
** **
** Revision Level: 1 [Updated to switch to current window] **
** Revision Level: 2 [Updated to show load average in the window] **
--- 5,11 -----
** Organization: ICUS Software Systems (c)1988, 1989 **
** Date: January 23, 1988 **
** Version 2.0: June 27, 1988 **
+ ** Version 2.1: Februrary 19, 1989 (Revision Level 4) **
** **
** Revision Level: 1 [Updated to switch to current window] **
** Revision Level: 2 [Updated to show load average in the window] **
***************
*** 9,15
** Revision Level: 1 [Updated to switch to current window] **
** Revision Level: 2 [Updated to show load average in the window] **
** Revision Level: 3 [Updated to available main memory in the window] **
! ** Revision Level: 4 [Updated to available main memory in the window] **
** **
**************************************************************************
** **
--- 10,21 -----
** Revision Level: 1 [Updated to switch to current window] **
** Revision Level: 2 [Updated to show load average in the window] **
** Revision Level: 3 [Updated to available main memory in the window] **
! ** Revision Level: 4 [Updated by David H. Brierley to check the the **
! ** current status of the SLK lines for existing **
! ** information and not display the sysinfo lines **
! ** over those SLK's if in CHGWIND #define'd, good **
! ** for use with the UA and Telephone Manager F-key **
! ** SLK definitions] -- dave at galaxia.Newport.RI.US **
** **
**************************************************************************
** **
***************
*** 56,61
{ NULL }
};
#define UNIX "/unix"
#define KMEM "/dev/kmem"
#define MINUTE 60L
--- 62,70 -----
{ NULL }
};
+ static char *LINE_1 = "%-20.20s %-25.25s up %2d day%1.1s %2d hour%1.1s %2d minute%1.1s";
+ static char *LINE_2 = "Filesystem: %6ld free %6ld total %2d%% available %5d i-nodes %4.2fMB memory";
+
#define UNIX "/unix"
#define KMEM "/dev/kmem"
#define MINUTE 60L
***************
*** 65,72
#define NICE 5 /* Niceness value */
#define MEGABYTE 1048576.0
- #define LINE_1 "%-20.20s %-25.25s up %2d day%1.1s %2d hour%1.1s %2d minute%1.1s"
- #define LINE_2 "Filesystem: %6ld free %6ld total %2d%% available %5d i-nodes %4.2fMB memory"
#define FILESYS "/dev/rfp002"
#ifndef TRUE
#define TRUE 1
--- 74,79 -----
#define NICE 5 /* Niceness value */
#define MEGABYTE 1048576.0
#define FILESYS "/dev/rfp002"
#ifndef TRUE
#define TRUE 1
***************
*** 159,168
open_current_window();
#endif
! filestatus();
! uptime();
! mailcheck(mailbuffer);
! loadaverage(loadbuf);
utd.ut_num = WTXTSLK1;
sprintf(utd.ut_text,LINE_1,
--- 166,176 -----
open_current_window();
#endif
! if (slktest(wd) == 0) {
! filestatus();
! uptime();
! mailcheck(mailbuffer);
! loadaverage(loadbuf);
utd.ut_num = WTXTSLK1;
sprintf(utd.ut_text,LINE_1,
***************
*** 164,177
mailcheck(mailbuffer);
loadaverage(loadbuf);
! utd.ut_num = WTXTSLK1;
! sprintf(utd.ut_text,LINE_1,
! mailbuffer, loadbuf,
! days,(days == 1) ? " " : "s",
! hrs, (hrs == 1) ? " " : "s",
! mins,(mins == 1) ? " " : "s"
! );
! ioctl(wd, WIOCSETTEXT, &utd);
utd.ut_num = WTXTSLK2;
freemem = memory() / MEGABYTE;
--- 172,185 -----
mailcheck(mailbuffer);
loadaverage(loadbuf);
! utd.ut_num = WTXTSLK1;
! sprintf(utd.ut_text,LINE_1,
! mailbuffer, loadbuf,
! days,(days == 1) ? " " : "s",
! hrs, (hrs == 1) ? " " : "s",
! mins,(mins == 1) ? " " : "s"
! );
! ioctl(wd, WIOCSETTEXT, &utd);
utd.ut_num = WTXTSLK2;
freemem = memory() / MEGABYTE;
***************
*** 173,186
);
ioctl(wd, WIOCSETTEXT, &utd);
! utd.ut_num = WTXTSLK2;
! freemem = memory() / MEGABYTE;
! sprintf(utd.ut_text,LINE_2,
! fs.s_tfree * 2, fs.s_fsize * 2,
! (int)((((float)fs.s_tfree / (float)fs.s_fsize) + 0.005)
! * 100.0), fs.s_tinode, freemem
! );
! ioctl(wd, WIOCSETTEXT, &utd);
#ifdef CHGWIND
close(wd);
#endif
--- 181,195 -----
);
ioctl(wd, WIOCSETTEXT, &utd);
! utd.ut_num = WTXTSLK2;
! freemem = memory() / MEGABYTE;
! sprintf(utd.ut_text,LINE_2,
! fs.s_tfree * 2, fs.s_fsize * 2,
! (int)((((float)fs.s_tfree / (float)fs.s_fsize) + 0.005)
! * 100.0), fs.s_tinode, freemem
! );
! ioctl(wd, WIOCSETTEXT, &utd);
! }
#ifdef CHGWIND
close(wd);
#endif
***************
*** 329,331
return(ctob(mem));
}
--- 338,393 -----
return(ctob(mem));
}
+ slktest (wd)
+ int wd;
+ {
+ /*
+ * check the SLK lines for the existence of anything currently there
+ * if found two blank SLK lines or some remaining sysinfo information,
+ * denoted by "Filesystem" in the second line, then return 0, else
+ * return -1
+ * Developed by David H. Brierley (dave at galaxia.Newport.RI.US)
+ */
+
+ int rvalue;
+ int n;
+
+ rvalue = 0;
+ utd.ut_num = WTXTSLK1;
+ ioctl (wd, WIOCGETTEXT, &utd);
+ if (utd.ut_text[0] == '\0')
+ ++rvalue;
+ else
+ for (n = 0; n < WTXTLEN; ++n)
+ if ((utd.ut_text[n] != '\0') &&
+ (utd.ut_text[n] != ' '))
+ break;
+
+ if (n == WTXTLEN)
+ ++rvalue;
+
+ utd.ut_num = WTXTSLK2;
+ ioctl (wd, WIOCGETTEXT, &utd);
+ if (utd.ut_text[0] == '\0')
+ ++rvalue;
+ else
+ for (n = 0; n < WTXTLEN; ++n)
+ if ((utd.ut_text[n] != '\0') &&
+ (utd.ut_text[n] != ' '))
+ break;
+
+ if (n == WTXTLEN)
+ ++rvalue;
+
+ if (rvalue == 2) /* two blank lines */
+ return (0);
+
+ /* found the beginning of LINE_2 */
+
+ if (strncmp (utd.ut_text, LINE_2, 12) == 0)
+ return (0);
+
+ /* not blank, return -1 */
+ return (-1);
+
+ }
--
David H. Brierley
Home: dave at galaxia.Newport.RI.US {rayssd,xanth,lazlo,jclyde}!galaxia!dave
Work: dhb at rayssd.ray.com {sun,decuac,gatech,necntc,ukma}!rayssd!dhb
More information about the Unix-pc.sources
mailing list