@@ -90,7 +90,7 @@ struct daemon {
90
90
char * base ;
91
91
struct list_head sessions ;
92
92
FILE * out ;
93
- char perf [ PATH_MAX ] ;
93
+ char * perf ;
94
94
int signal_fd ;
95
95
time_t start ;
96
96
};
@@ -1490,6 +1490,14 @@ static int __cmd_ping(struct daemon *daemon, struct option parent_options[],
1490
1490
return send_cmd (daemon , & cmd );
1491
1491
}
1492
1492
1493
+ static char * alloc_perf_exe_path (void )
1494
+ {
1495
+ char path [PATH_MAX ];
1496
+
1497
+ perf_exe (path , sizeof (path ));
1498
+ return strdup (path );
1499
+ }
1500
+
1493
1501
int cmd_daemon (int argc , const char * * argv )
1494
1502
{
1495
1503
struct option daemon_options [] = {
@@ -1502,31 +1510,35 @@ int cmd_daemon(int argc, const char **argv)
1502
1510
"field separator" , "print counts with custom separator" , "," ),
1503
1511
OPT_END ()
1504
1512
};
1513
+ int ret = -1 ;
1514
+
1515
+ __daemon .perf = alloc_perf_exe_path ();
1516
+ if (!__daemon .perf )
1517
+ return - ENOMEM ;
1505
1518
1506
- perf_exe (__daemon .perf , sizeof (__daemon .perf ));
1507
1519
__daemon .out = stdout ;
1508
1520
1509
1521
argc = parse_options (argc , argv , daemon_options , daemon_usage ,
1510
1522
PARSE_OPT_STOP_AT_NON_OPTION );
1511
1523
1512
1524
if (argc ) {
1513
1525
if (!strcmp (argv [0 ], "start" ))
1514
- return __cmd_start (& __daemon , daemon_options , argc , argv );
1526
+ ret = __cmd_start (& __daemon , daemon_options , argc , argv );
1515
1527
if (!strcmp (argv [0 ], "signal" ))
1516
- return __cmd_signal (& __daemon , daemon_options , argc , argv );
1528
+ ret = __cmd_signal (& __daemon , daemon_options , argc , argv );
1517
1529
else if (!strcmp (argv [0 ], "stop" ))
1518
- return __cmd_stop (& __daemon , daemon_options , argc , argv );
1530
+ ret = __cmd_stop (& __daemon , daemon_options , argc , argv );
1519
1531
else if (!strcmp (argv [0 ], "ping" ))
1520
- return __cmd_ping (& __daemon , daemon_options , argc , argv );
1521
-
1522
- pr_err ("failed: unknown command '%s'\n" , argv [0 ]);
1523
- return -1 ;
1524
- }
1525
-
1526
- if ( setup_config ( & __daemon )) {
1527
- pr_err ( "failed: config not found\n" );
1528
- return -1 ;
1532
+ ret = __cmd_ping (& __daemon , daemon_options , argc , argv );
1533
+ else
1534
+ pr_err ("failed: unknown command '%s'\n" , argv [0 ]);
1535
+ } else {
1536
+ ret = setup_config ( & __daemon );
1537
+ if ( ret )
1538
+ pr_err ( "failed: config not found\n" );
1539
+ else
1540
+ ret = send_cmd_list ( & __daemon ) ;
1529
1541
}
1530
-
1531
- return send_cmd_list ( & __daemon ) ;
1542
+ zfree ( & __daemon . perf );
1543
+ return ret ;
1532
1544
}
0 commit comments