The default_log(/var/log/cxl-monitor.log) should be used when no '-l'
argument is specified in daemon mode, but it was not working at all.

Simplify the sanity checks so that the default log file is assigned
correctly, and the behavior is consistent with the documentation.

Remove the unnecessary fix_filename() for monitor.log since
parse_options_prefix() has done similar stuff if needed.

Reviewed-by: Dave Jiang <[email protected]>
Signed-off-by: Li Zhijian <[email protected]>
---
V4: add reviewed tag and minor fixes: comment style and change log.
V2: exchange order of previous patch1 and patch2 # Alison
    a few commit log updated
Signed-off-by: Li Zhijian <[email protected]>
---
 cxl/monitor.c | 38 ++++++++++++++++++++------------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/cxl/monitor.c b/cxl/monitor.c
index e3469b9a4792..d8245ed8d0e9 100644
--- a/cxl/monitor.c
+++ b/cxl/monitor.c
@@ -164,6 +164,7 @@ int cmd_monitor(int argc, const char **argv, struct cxl_ctx 
*ctx)
        };
        const char *prefix ="./";
        int rc = 0, i;
+       const char *log;
 
        argc = parse_options_prefix(argc, argv, prefix, options, u, 0);
        for (i = 0; i < argc; i++)
@@ -171,32 +172,33 @@ int cmd_monitor(int argc, const char **argv, struct 
cxl_ctx *ctx)
        if (argc)
                usage_with_options(u, options);
 
+       /* sanity check */
+       if (monitor.daemon && monitor.log && !strncmp(monitor.log, "./", 2)) {
+               error("relative path or 'standard' are not compatible with 
daemon mode\n");
+               return -EINVAL;
+       }
+
        log_init(&monitor.ctx, "cxl/monitor", "CXL_MONITOR_LOG");
-       monitor.ctx.log_fn = log_standard;
+       if (monitor.log)
+               log = monitor.log;
+       else
+               log = monitor.daemon ? default_log : "./standard";
 
        if (monitor.verbose)
                monitor.ctx.log_priority = LOG_DEBUG;
        else
                monitor.ctx.log_priority = LOG_INFO;
 
-       if (monitor.log) {
-               if (strncmp(monitor.log, "./", 2) != 0)
-                       fix_filename(prefix, (const char **)&monitor.log);
-               if (strncmp(monitor.log, "./standard", 10) == 0 && 
!monitor.daemon) {
-                       monitor.ctx.log_fn = log_standard;
-               } else {
-                       const char *log = monitor.log;
-
-                       if (!monitor.log)
-                               log = default_log;
-                       monitor.log_file = fopen(log, "a+");
-                       if (!monitor.log_file) {
-                               rc = -errno;
-                               error("open %s failed: %d\n", monitor.log, rc);
-                               goto out;
-                       }
-                       monitor.ctx.log_fn = log_file;
+       if (strncmp(log, "./standard", 10) == 0)
+               monitor.ctx.log_fn = log_standard;
+       else {
+               monitor.log_file = fopen(log, "a+");
+               if (!monitor.log_file) {
+                       rc = -errno;
+                       error("open %s failed: %d\n", log, rc);
+                       goto out;
                }
+               monitor.ctx.log_fn = log_file;
        }
 
        if (monitor.daemon) {
-- 
2.29.2


Reply via email to