This is CalObject.m in view mode; [Download] [Up]
#import "CalObject.h"
#include <stdio.h>
#include <time.h>
#include <sys/types.h>
@implementation CalObject
NXRect frame;
int temp_x, temp_y;
// LoginStats by Eric "E.T." Tremblay, January 29, 1996
//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
- awakeFromNib
{
[self SetDate:NULL];
[self Last:NULL];
return self;
}
// LoginAccounting
// Executes the /usr/etc/ac to produces a printout giving connect time for each // user who has logged in during the life of the current wtmp file.
- LoginAccounting: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 docView] setText:"Can't build the Scrollview!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[[LoginStatsView docView] setText:buff];
}
[LoginStatsView display];
return self;
}
// Last
- Last:sender
{
// Local Variables
FILE *calCmd;
char c, buff[100000], *pbuff;
[LoginStatsPanel makeKeyAndOrderFront:NULL];
sprintf( buff, "last");
if ( (calCmd=popen(buff, "r")) == NULL )
[[LoginStatsView docView] setText:"Can't build the Scrollview!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[[LoginStatsView docView] setText:buff];
}
[LoginStatsView display];
return self;
}
// SearchLast
// This method builds the proper calendar in the window
- SearchLast:sender
{
// Local Variables
FILE *calCmd;
char c, buff[100000], *pbuff;
char *username;
char *datestring;
[LoginStatsPanel makeKeyAndOrderFront:NULL];
username = [UsernameInput stringValue];
datestring = [DateInput stringValue];
//sprintf( buff, "last | grep eric | grep 'Dec 29'");
sprintf( buff,"last | grep %s | grep '%s'",username,datestring);
if ( (calCmd=popen(buff, "r")) == NULL )
[[LoginStatsView docView] setText:"Can't build calendar!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[[LoginStatsView docView] setText:buff];
}
[LoginStatsView display];
return self;
}
// SET DATE
- SetDate: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:buff];
return self;
}
// PRINT
- Print:sender
// This method will print the LoginStatsView to the printer
// Printing is rather simple; just send printPSCode: to the text view
// you wish to print. The print panel will automatically pop up and unless
// the user cancels the printout the text view will be printed.
{
[[LoginStatsView docView] printPSCode:self];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.