Whamcloud - gitweb
b=16408
[fs/lustre-release.git] / lustre / utils / lustre_cfg.c
index 234b2e9..478a930 100644 (file)
@@ -1,27 +1,44 @@
 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
  * vim:expandtab:shiftwidth=8:tabstop=8:
  *
- *  Copyright (C) 2002 Cluster File Systems, Inc.
- *   Author: Peter J. Braam <braam@clusterfs.com>
- *   Author: Phil Schwan <phil@clusterfs.com>
- *   Author: Andreas Dilger <adilger@clusterfs.com>
- *   Author: Robert Read <rread@clusterfs.com>
+ * GPL HEADER START
  *
- *   This file is part of Lustre, http://www.lustre.org.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
- *   Lustre is free software; you can redistribute it and/or
- *   modify it under the terms of version 2 of the GNU General Public
- *   License as published by the Free Software Foundation.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 only,
+ * as published by the Free Software Foundation.
  *
- *   Lustre is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License version 2 for more details (a copy is included
+ * in the LICENSE file that accompanied this code).
  *
- *   You should have received a copy of the GNU General Public License
- *   along with Lustre; if not, write to the Free Software
- *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU General Public License
+ * version 2 along with this program; If not, see
+ * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
  *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ * GPL HEADER END
+ */
+/*
+ * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Use is subject to license terms.
+ */
+/*
+ * This file is part of Lustre, http://www.lustre.org/
+ * Lustre is a trademark of Sun Microsystems, Inc.
+ *
+ * lustre/utils/lustre_cfg.c
+ *
+ * Author: Peter J. Braam <braam@clusterfs.com>
+ * Author: Phil Schwan <phil@clusterfs.com>
+ * Author: Andreas Dilger <adilger@clusterfs.com>
+ * Author: Robert Read <rread@clusterfs.com>
  */
 
 #include <stdlib.h>
@@ -52,7 +69,7 @@
 
 #include "obdctl.h"
 #include <lnet/lnetctl.h>
-#include "parser.h"
+#include <libcfs/libcfsutil.h>
 #include <stdio.h>
 
 static char * lcfg_devname;
@@ -546,13 +563,17 @@ static char *strnchr(const char *p, char c, size_t n)
 int jt_lcfg_getparam(int argc, char **argv)
 {
         int fp;
-        int rc = 0, i, show_path = 0;
-        char buf[CFS_PAGE_SIZE] = {'\0'}, pattern[PATH_MAX];
-        char *path, *tmp;
+        int rc = 0, i, show_path = 0, only_path = 0;
+        char pattern[PATH_MAX];
+        char *path, *tmp, *buf;
         glob_t glob_info;
 
-        if (argc == 3 && strcmp(argv[1], "-n") == 0) {
+        if (argc == 3 && (strcmp(argv[1], "-n") == 0 || strcmp(argv[1], "-N") == 0)) {
                 path = argv[2];
+                if (strcmp(argv[1], "-N") == 0) {
+                        only_path = 1;
+                        show_path = 1;
+                }
         } else if (argc == 2) {
                 show_path = 1;
                 path = argv[1];
@@ -586,12 +607,19 @@ int jt_lcfg_getparam(int argc, char **argv)
                 return rc;
         }
 
+        buf = malloc(CFS_PAGE_SIZE);
         for (i = 0; i  < glob_info.gl_pathc; i++) {
                 char *valuename = NULL;
+
+                memset(buf, 0, CFS_PAGE_SIZE);
                 if (show_path) {
                         char *filename;
                         filename = strdup(glob_info.gl_pathv[i]);
                         valuename = display_name(filename);
+                        if (valuename && only_path) {
+                                printf("%s\n", valuename);
+                                continue;
+                        }
                 }
 
                 /* Write the contents of file to stdout */
@@ -604,7 +632,7 @@ int jt_lcfg_getparam(int argc, char **argv)
                 }
 
                 do {
-                        rc = read(fp, buf, sizeof(buf));
+                        rc = read(fp, buf, CFS_PAGE_SIZE);
                         if (rc == 0)
                                 break;
                         if (rc < 0) {
@@ -633,11 +661,11 @@ int jt_lcfg_getparam(int argc, char **argv)
                                 break;
                         }
                 } while (1);
-                memset(buf, 0, sizeof(buf));
                 close(fp);
         }
 
         globfree(&glob_info);
+        free(buf);
         return rc;
 }