1 #ifndef _global_h
2 #	include "global.h"
3 #endif
4 #ifndef _logfile_h
5 #	include "logfile.h"
6 #endif
7 #ifndef USE_EXTERNAL_STANDARD_INCLUDES
8 #	include <stdio.h>
9 #endif
10 
11 #include <errno.h>
12 #include <unistd.h>
13 
14 static char		message[200];
15 static time_t	start_time;
16 
end_log()17 void end_log() {
18 FILE		*fp1,*fp2;
19 char		buffer[200];
20 time_t	end_time;
21 // char		new_message[200];
22 double	dt;
23 int		hh, mm;
24 
25 	time(&end_time);
26 	dt = end_time - start_time;
27 	mm = (int)(dt/60);
28 	hh = mm/60;
29 	mm = mm%60;
30 
31 	if ( rename( LOG_FILE, LOG_FILE".BAK" ) ) {
32 		// perror( LOG_FILE );
33 	}
34 	fp1 = fopen( LOG_FILE, "w" );
35 	if (!fp1)	return;
36 
37 	fp2 = fopen( LOG_FILE".BAK", "r" );
38 	if (fp2) {
39 		while ( fgets( buffer, sizeof(buffer), fp2 ) ) {
40 			if ( !strcmp(buffer, message) ) {
41 				message[strlen(message)-1]='\0';
42 				if (dt/60>1)
43 					fprintf( fp1, "%s (%d:%02d)\n", message, hh, mm );
44 			}
45 			else fputs( buffer, fp1 );
46 		}
47 		fclose(fp2);
48 	}
49 	unlink( LOG_FILE".BAK" );
50 
51 	fclose( fp1 );
52 }
53 
start_log(const char * game)54 void start_log( const char *game ) {
55 FILE	*fp1,*fp2;
56 char	buffer[200];
57 const char	*user_string = getenv("USER");
58 	if (!user_string || *user_string=='\0')		user_string = "unknown";
59 const char	*dpy_string  = getenv( "DISPLAY" );
60 	if (!dpy_string || *dpy_string=='\0')	      dpy_string = "localhost:0.0";
61 
62 	printf( "flying:\n" );
63 	printf( "\t%s", flying_descriptor_string+4 );
64 	printf( "\t%s", flying_version_string+4 );
65 
66 	time(&start_time);
67 	strftime( buffer, sizeof(buffer), "%d-%m-%y %H:%M:%S", localtime(&start_time) );
68 	sprintf( message, "%-8s%s %s: %s started by ", game, buffer,
69 			dpy_string,revision );
70 	if ( !strcmp( user_string, "emshh" ) )		return;
71 
72 	strcat( message, user_string );
73 	strcat( message, "\n" );
74 
75 	if ( rename( LOG_FILE, LOG_FILE".BAK" ) ) {
76 		// perror( LOG_FILE );
77 	}
78 	fp1 = fopen( LOG_FILE, "w" );
79 	if (!fp1)	return;
80 	fputs( message, fp1 );
81 
82 	fp2 = fopen( LOG_FILE".BAK", "r" );
83 	if (fp2) {
84 		while ( fgets( buffer, sizeof(buffer), fp2 ) ) {
85 			fputs( buffer, fp1 );
86 		}
87 		fclose(fp2);
88 	}
89 	unlink( LOG_FILE".BAK" );
90 
91 	fclose( fp1 );
92 
93 	// only for ANSI C, therefor commented out
94 	// atexit( end_log );
95 }
96