This is LoginStatPanelObject.m in view mode; [Download] [Up]
#import "LoginStatPanelObject.h"
#include <stdio.h>
#include <time.h>
#include <sys/types.h>
@implementation LoginStatPanelObject
NSRect frame;
int temp_x, temp_y;
//INIT
// This is one of the first methods executed. (Presently not used)
// after the nib is loaded. This is not the best way to initialize
// an object because not all method and varibles are ready to be used.
- init
{
[super init];
return self;
}
// AWAKEFROMNIB
// This is one of the last methods executed after the nib file is loaded.
// This is the BEST way I know how to initialize an object and jump into
// a method after the nib file was loaded, because you are all the methods
// and variables needed can be used. (Unlike init which is not compeletly
// ready when that message is sent
- (void)awakeFromNib
{
[self SetDate:NULL];
[self Last:NULL];
}
- (void)Last:(id)sender
{
// Local Variables
FILE *calCmd;
char c, buff[100000], *pbuff;
[LoginStatsPanel makeKeyAndOrderFront:NULL];
sprintf( buff, "last");
if ( (calCmd=popen(buff, "r")) == NULL )
[[LoginStatsView documentView] setString:@"Can't build the Scrollview!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[[LoginStatsView documentView] setString:[NSString stringWithCString:buff]];
}
[LoginStatsView display];
}
// LastComm
// Lastcomm gives information on previously executed commands.
// With no arguments, lastcomm prints information about all the
// commands recorded during the current accounting file's life-
// time.
- (void)LastComm:(id)sender
{
// Local Variables
FILE *calCmd;
char c, buff[500000], *pbuff;
[LoginStatsPanel makeKeyAndOrderFront:NULL];
sprintf( buff, "lastcomm");
if ( (calCmd=popen(buff, "r")) == NULL )
[[LoginStatsView documentView] setString:@"Can't build the Scrollview!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[[LoginStatsView documentView] setString:[NSString stringWithCString:buff]];
}
[LoginStatsView display];
}
- (void)LoginAccounting:(id)sender
{
// Local Variables
FILE *calCmd;
char c, buff[100000], *pbuff;
[LoginStatsPanel makeKeyAndOrderFront:NULL];
sprintf( buff, "/usr/etc/ac -p");
if ( (calCmd=popen(buff, "r")) == NULL )
[[LoginStatsView documentView] setString:@"Can't build the Scrollview!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[[LoginStatsView documentView] setString:[NSString stringWithCString:buff]];
}
[LoginStatsView display];
}
- (void)SearchLast:(id)sender
{
// Local Variables
FILE *calCmd;
char c, buff[100000], *pbuff;
char *username;
char *datestring;
[LoginStatsPanel makeKeyAndOrderFront:NULL];
username = [[StringInput stringValue] cString];
datestring = [[DateInput stringValue] cString];
//sprintf( buff, "last | grep eric | grep 'Jun 25'");
sprintf( buff,"last | grep %s | grep '%s'",username,datestring);
if ( (calCmd=popen(buff, "r")) == NULL )
[[LoginStatsView documentView] setString:@"Can't build calendar!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[[LoginStatsView documentView] setString:[NSString stringWithCString:buff]];
}
[LoginStatsView display];
}
// SystemAccounting
// system accounting information for every process executed
- (void)SystemAccounting:(id)sender
{
// Local Variables
FILE *calCmd;
char c, buff[100000], *pbuff;
[LoginStatsPanel makeKeyAndOrderFront:NULL];
sprintf( buff, "/usr/etc/sa");
if ( (calCmd=popen(buff, "r")) == NULL )
[[LoginStatsView documentView] setString:@"Can't build the Scrollview!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[[LoginStatsView documentView] setString:[NSString stringWithCString:buff]];
}
[LoginStatsView display];
}
// SystemAccounting
// system accounting information for every process executed
// -m Print number of processes and number of CPU minutes for
// each user.
- (void)SystemAccountingM:(id)sender
{
// Local Variables
FILE *calCmd;
char c, buff[100000], *pbuff;
[LoginStatsPanel makeKeyAndOrderFront:NULL];
sprintf( buff, "/usr/etc/sa -m");
if ( (calCmd=popen(buff, "r")) == NULL )
[[LoginStatsView documentView] setString:@"Can't build the Scrollview!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[[LoginStatsView documentView] setString:[NSString stringWithCString:buff]];
}
[LoginStatsView display];
}
// SET DATE
- (void)SetDate:(id)sender
// This will assign variables for the current date.
{
// Local Variables
char *MonthString;
char buff[500];
long time(), tmpTime;
struct tm *tm, *localtime();
tmpTime = time(0);
tm = localtime( &tmpTime );
day = (tm->tm_mday);
month = (tm->tm_mon+1);
switch (month) { /* start switch */
case 1:
MonthString = "Jan";
break;
case 2:
MonthString = "Feb";
break;
case 3:
MonthString = "Mar";
break;
case 4:
MonthString = "Apr";
break;
case 5:
MonthString = "May";
break;
case 6:
MonthString = "Jun";
break;
case 7:
MonthString = "Jul";
break;
case 8:
MonthString = "Aug";
break;
case 9:
MonthString = "Sep";
break;
case 10:
MonthString = "Oct";
break;
case 11:
MonthString = "Nov";
break;
case 12:
MonthString = "Dec";
break;
} /* end switch */
sprintf( buff,"%s %d",MonthString,day);
[DateInput setStringValue:[NSString stringWithCString:buff]];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.