@@ -16,9 +16,8 @@ static int parse_env_file_internal(
1616 FILE * f ,
1717 const char * fname ,
1818 int (* push ) (const char * filename , unsigned line ,
19- const char * key , char * value , void * userdata , int * n_pushed ),
20- void * userdata ,
21- int * n_pushed ) {
19+ const char * key , char * value , void * userdata ),
20+ void * userdata ) {
2221
2322 size_t n_key = 0 , n_value = 0 , last_value_whitespace = SIZE_MAX , last_key_whitespace = SIZE_MAX ;
2423 _cleanup_free_ char * contents = NULL , * key = NULL , * value = NULL ;
@@ -99,7 +98,7 @@ static int parse_env_file_internal(
9998 if (last_key_whitespace != SIZE_MAX )
10099 key [last_key_whitespace ] = 0 ;
101100
102- r = push (fname , line , key , value , userdata , n_pushed );
101+ r = push (fname , line , key , value , userdata );
103102 if (r < 0 )
104103 return r ;
105104
@@ -142,7 +141,7 @@ static int parse_env_file_internal(
142141 if (last_key_whitespace != SIZE_MAX )
143142 key [last_key_whitespace ] = 0 ;
144143
145- r = push (fname , line , key , value , userdata , n_pushed );
144+ r = push (fname , line , key , value , userdata );
146145 if (r < 0 )
147146 return r ;
148147
@@ -261,7 +260,7 @@ static int parse_env_file_internal(
261260 if (last_key_whitespace != SIZE_MAX )
262261 key [last_key_whitespace ] = 0 ;
263262
264- r = push (fname , line , key , value , userdata , n_pushed );
263+ r = push (fname , line , key , value , userdata );
265264 if (r < 0 )
266265 return r ;
267266
@@ -299,8 +298,7 @@ static int check_utf8ness_and_warn(
299298static int parse_env_file_push (
300299 const char * filename , unsigned line ,
301300 const char * key , char * value ,
302- void * userdata ,
303- int * n_pushed ) {
301+ void * userdata ) {
304302
305303 const char * k ;
306304 va_list aq , * ap = userdata ;
@@ -322,9 +320,6 @@ static int parse_env_file_push(
322320 free (* v );
323321 * v = value ;
324322
325- if (n_pushed )
326- (* n_pushed )++ ;
327-
328323 return 1 ;
329324 }
330325 }
@@ -340,16 +335,13 @@ int parse_env_filev(
340335 const char * fname ,
341336 va_list ap ) {
342337
343- int r , n_pushed = 0 ;
338+ int r ;
344339 va_list aq ;
345340
346341 va_copy (aq , ap );
347- r = parse_env_file_internal (f , fname , parse_env_file_push , & aq , & n_pushed );
342+ r = parse_env_file_internal (f , fname , parse_env_file_push , & aq );
348343 va_end (aq );
349- if (r < 0 )
350- return r ;
351-
352- return n_pushed ;
344+ return r ;
353345}
354346
355347int parse_env_file_sentinel (
@@ -370,8 +362,7 @@ int parse_env_file_sentinel(
370362static int load_env_file_push (
371363 const char * filename , unsigned line ,
372364 const char * key , char * value ,
373- void * userdata ,
374- int * n_pushed ) {
365+ void * userdata ) {
375366 char * * * m = userdata ;
376367 char * p ;
377368 int r ;
@@ -388,34 +379,28 @@ static int load_env_file_push(
388379 if (r < 0 )
389380 return r ;
390381
391- if (n_pushed )
392- (* n_pushed )++ ;
393-
394382 free (value );
395383 return 0 ;
396384}
397385
398386int load_env_file (FILE * f , const char * fname , char * * * rl ) {
399- char * * m = NULL ;
387+ _cleanup_strv_free_ char * * m = NULL ;
400388 int r ;
401389
402- r = parse_env_file_internal (f , fname , load_env_file_push , & m , NULL );
403- if (r < 0 ) {
404- strv_free (m );
390+ r = parse_env_file_internal (f , fname , load_env_file_push , & m );
391+ if (r < 0 )
405392 return r ;
406- }
407393
408- * rl = m ;
394+ * rl = TAKE_PTR ( m ) ;
409395 return 0 ;
410396}
411397
412398static int load_env_file_push_pairs (
413399 const char * filename , unsigned line ,
414400 const char * key , char * value ,
415- void * userdata ,
416- int * n_pushed ) {
401+ void * userdata ) {
402+
417403 char * * * m = ASSERT_PTR (userdata );
418- bool added = false;
419404 int r ;
420405
421406 r = check_utf8ness_and_warn (filename , line , key , value );
@@ -426,49 +411,37 @@ static int load_env_file_push_pairs(
426411 for (char * * t = * m ; t && * t ; t += 2 )
427412 if (streq (t [0 ], key )) {
428413 if (value )
429- r = free_and_replace (t [1 ], value );
414+ return free_and_replace (t [1 ], value );
430415 else
431- r = free_and_strdup (t + 1 , "" );
432- goto finish ;
416+ return free_and_strdup (t + 1 , "" );
433417 }
434418
435419 r = strv_extend (m , key );
436420 if (r < 0 )
437- return - ENOMEM ;
421+ return r ;
438422
439423 if (value )
440- r = strv_push (m , value );
424+ return strv_push (m , value );
441425 else
442- r = strv_extend (m , "" );
443- added = true;
444- finish :
445- if (r < 0 )
446- return r ;
447-
448- if (n_pushed && added )
449- (* n_pushed )++ ;
450- return 0 ;
426+ return strv_extend (m , "" );
451427}
452428
453429int load_env_file_pairs (FILE * f , const char * fname , char * * * rl ) {
454- char * * m = NULL ;
430+ _cleanup_strv_free_ char * * m = NULL ;
455431 int r ;
456432
457- r = parse_env_file_internal (f , fname , load_env_file_push_pairs , & m , NULL );
458- if (r < 0 ) {
459- strv_free (m );
433+ r = parse_env_file_internal (f , fname , load_env_file_push_pairs , & m );
434+ if (r < 0 )
460435 return r ;
461- }
462436
463- * rl = m ;
437+ * rl = TAKE_PTR ( m ) ;
464438 return 0 ;
465439}
466440
467441static int merge_env_file_push (
468442 const char * filename , unsigned line ,
469443 const char * key , char * value ,
470- void * userdata ,
471- int * n_pushed ) {
444+ void * userdata ) {
472445
473446 char * * * env = userdata ;
474447 char * expanded_value ;
@@ -497,7 +470,7 @@ static int merge_env_file_push(
497470
498471 log_debug ("%s:%u: setting %s=%s" , filename , line , key , value );
499472
500- return load_env_file_push (filename , line , key , value , env , n_pushed );
473+ return load_env_file_push (filename , line , key , value , env );
501474}
502475
503476int merge_env_file (
@@ -509,7 +482,7 @@ int merge_env_file(
509482 * plus "extended" substitutions, unlike other exported parsing functions.
510483 */
511484
512- return parse_env_file_internal (f , fname , merge_env_file_push , env , NULL );
485+ return parse_env_file_internal (f , fname , merge_env_file_push , env );
513486}
514487
515488static void write_env_var (FILE * f , const char * v ) {
0 commit comments