@@ -206,7 +206,7 @@ t_sensors *retrieve_sensors()
206206 tmp -> next -> next = NULL ;
207207 }
208208
209- fclose ( file ) ;
209+ s -> file = file ;
210210 sensors_found ++ ;
211211 }
212212
@@ -273,7 +273,7 @@ t_fans *retrieve_fans()
273273 strncat ( path_manual , path_man_end , strlen (path_begin ) );
274274
275275
276- FILE * file = fopen (path_output , "r " );
276+ FILE * file = fopen (path_output , "w " );
277277
278278 if (file != NULL ) {
279279 fan = (t_fans * ) malloc ( sizeof ( t_fans ) );
@@ -297,7 +297,7 @@ t_fans *retrieve_fans()
297297 tmp -> next -> next = NULL ;
298298 }
299299
300- fclose ( file ) ;
300+ fan -> file = file ;
301301 fans_found ++ ;
302302 }
303303
@@ -362,11 +362,11 @@ t_sensors *refresh_sensors(t_sensors *sensors)
362362 t_sensors * tmp = sensors ;
363363
364364 while (tmp != NULL ) {
365- FILE * file = fopen (tmp -> path , "r" );
366-
367- if ( file != NULL ) {
368- fscanf ( file , "%d" , & tmp -> temperature ) ;
369- fclose ( file );
365+ if (tmp -> file != NULL ) {
366+ char buf [ 16 ];
367+ int len = pread ( fileno ( tmp -> file ), buf , sizeof ( buf ), /*offset=*/ 0 );
368+ buf [ len ] = '\0' ;
369+ sscanf ( buf , "%d" , & tmp -> temperature );
370370 }
371371
372372 tmp = tmp -> next ;
@@ -380,14 +380,12 @@ t_sensors *refresh_sensors(t_sensors *sensors)
380380void set_fan_speed (t_fans * fans , int speed )
381381{
382382 t_fans * tmp = fans ;
383- FILE * file ;
384383
385384 while (tmp != NULL ) {
386- file = fopen (tmp -> fan_output_path , "rw+" );
387-
388- if (file != NULL ) {
389- fprintf (file , "%d" , speed );
390- fclose (file );
385+ if (tmp -> file != NULL ) {
386+ char buf [16 ];
387+ int len = snprintf (buf , sizeof (buf ), "%d" , speed );
388+ pwrite (fileno (tmp -> file ), buf , len , /*offset=*/ 0 );
391389 }
392390
393391 tmp = tmp -> next ;
0 commit comments