Whamcloud - gitweb
LU-8648 all: remove all Sun license and URL references
[fs/lustre-release.git] / lustre / tests / checkstat.c
index ed97bd6..efc3afc 100644 (file)
@@ -1,3 +1,40 @@
+/*
+ * GPL HEADER START
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * 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.
+ *
+ * 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
+ * version 2 along with this program; If not, see
+ * http://www.gnu.org/licenses/gpl-2.0.html
+ *
+ * GPL HEADER END
+ */
+/*
+ * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * Copyright (c) 2011, Intel Corporation.
+ */
+/*
+ * Test program to compare the attributes of a files to verify that it
+ * desired file attributes are present.  This file predates availability
+ * of the stat(3) utility and is deprecated.  Either test(3) ([ ]) or
+ * stat(3) should be used in all new tests.
+ *
+ * This file is part of Lustre, http://www.lustre.org/
+ * Lustre is a trademark of Sun Microsystems, Inc.
+ */
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/types.h>
@@ -15,17 +52,17 @@ usage (char *argv0, int help)
 
        if (progname == NULL)
                progname = argv0;
-       
+
        fprintf (help ? stdout : stderr,
                 "Usage: %s [flags] file[s]\n",
                 progname);
-       
+
        if (!help)
        {
                fprintf (stderr, "   or try '-h' for help\n");
                exit (1);
        }
-       
+
        printf ("Check given files have...\n");
        printf (" -p    permission       file must have required permissions\n");
        printf (" -t    dir|file|link    file must be of the specified type\n");
@@ -55,7 +92,7 @@ main (int argc, char **argv)
        long long     size = -1;
        int           follow = 0;
        char         *term;
-   
+
        while ((c = getopt (argc, argv, "p:t:l:s:u:g:avfh")) != -1)
                switch (c)
                {
@@ -92,7 +129,7 @@ main (int argc, char **argv)
                                }
                        } else {
                                struct passwd *pw = getpwnam (optarg);
-                               
+
                                if (pw == NULL)
                                {
                                        fprintf (stderr, "Can't find user %s\n", optarg);
@@ -113,7 +150,7 @@ main (int argc, char **argv)
                                }
                        } else {
                                struct group *gr = getgrnam (optarg);
-                               
+
                                if (gr == NULL)
                                {
                                        fprintf (stderr, "Can't find group %s\n", optarg);
@@ -122,7 +159,7 @@ main (int argc, char **argv)
                                uid = gr->gr_gid;
                        }
                        break;
-                       
+
                case 't':
                        type = optarg;
                        break;
@@ -134,33 +171,33 @@ main (int argc, char **argv)
                case 'v':
                        verbose++;
                        break;
-                       
+
                case 'f':
                        follow++;
                        break;
-                       
+
                case 'h':
                        usage (argv[0], 1);
                        return (0);
-        
+
                default:
                        usage (argv[0], 0);
                }
 
        if (optind == argc)
                usage (argv[0], 0);
-       
+
        do
        {
                char *fname = argv[optind];
                int rc = follow ? stat64 (fname, &buf) : lstat64 (fname, &buf);
-      
+
                if (rc != 0)
                {
                        if (!(absent && errno == ENOENT))
                        {
                                if (verbose)
-                                       printf ("Can't %sstat %s: %s\n", 
+                                       printf ("Can't %sstat %s: %s\n",
                                                follow ? "" : "l",
                                                fname, strerror (errno));
                                return (1);
@@ -177,48 +214,49 @@ main (int argc, char **argv)
                                printf ("%s exists\n", fname);
                        return (1);
                }
-               
+
                if (type != NULL)
                {
-                       if (!strcmp (type, "d") || 
+                       if (!strcmp (type, "d") ||
                            !strcmp (type, "dir"))
                        {
                                if (!S_ISDIR (buf.st_mode))
                                {
                                        if (verbose)
-                                               printf ("%s is not a directory\n", 
+                                               printf ("%s is not a directory\n",
                                                         fname);
                                        return (1);
                                }
                        }
-                       else if (!strcmp (type, "f") || 
+                       else if (!strcmp (type, "f") ||
                                 !strcmp (type, "file"))
                        {
                                if (!S_ISREG (buf.st_mode))
                                {
                                        if (verbose)
-                                               printf ("%s is not a regular file\n", 
+                                               printf ("%s is not a regular file\n",
                                                        fname);
                                        return (1);
                                }
                        }
-                       else if (!strcmp (type, "l") || 
+                       else if (!strcmp (type, "l") ||
                                 !strcmp (type, "link"))
                        {
                                if (!S_ISLNK (buf.st_mode))
                                {
                                        if (verbose)
-                                               printf ("%s is not a link\n", 
+                                               printf ("%s is not a link\n",
                                                        fname);
                                        return (1);
                                }
                        }
                        else
                        {
-                               fprintf (stderr, "Can't parse file type %s\n", type);
+                               fprintf (stderr, "Can't parse file type %s\n",
+                                        type);
                                return (1);
                        }
-                       
+
                        if (verbose)
                                printf ("%s has type %s OK\n", fname, type);
                }
@@ -229,7 +267,8 @@ main (int argc, char **argv)
                        {
                                if (verbose)
                                        printf ("%s has perms 0%o, not 0%o\n",
-                                               fname, (buf.st_mode & ~S_IFMT), perms);
+                                               fname, (buf.st_mode & ~S_IFMT),
+                                               perms);
                                return (1);
                        }
 
@@ -238,20 +277,19 @@ main (int argc, char **argv)
                                        fname, perms);
                }
 
-               if (size != -1)
-               {
-                       if (buf.st_size != size)
-                       {
-                               if (verbose)
-                                       printf ("%s has size %Ld, not %Ld\n",
-                                               fname, (long long)buf.st_size, size);
-                               return (1);
-                       }
-                       
-                       if (verbose)
-                               printf ("%s has size %Ld OK\n", fname, size);
-               }
-               
+                if (size != -1) {
+                        if (buf.st_size != size) {
+                                if (verbose)
+                                        printf("%s has size %lld, not %lld\n",
+                                               fname, (long long)buf.st_size,
+                                               size);
+                                return 1;
+                        }
+
+                        if (verbose)
+                                printf("%s has size %lld OK\n", fname, size);
+                }
+
                if (checklink != NULL)
                {
                        static char lname[4<<10];
@@ -265,7 +303,7 @@ main (int argc, char **argv)
                                                fname, strerror (errno));
                                return (1);
                        }
-                       
+
                        lname[rc] = 0;
                        if (strcmp (checklink, lname))
                        {
@@ -274,7 +312,7 @@ main (int argc, char **argv)
                                                fname, lname, checklink);
                                return (1);
                        }
-                       
+
                        if (verbose)
                                printf ("%s links to %s OK\n", fname, checklink);
                }
@@ -288,12 +326,12 @@ main (int argc, char **argv)
                                                fname, (long)buf.st_uid, (long)uid);
                                return (1);
                        }
-                       
+
                        if (verbose)
                                printf ("%s is owned by user #%ld OK\n",
                                        fname, (long)uid);
                }
-               
+
                if (gid != (gid_t)-1)
                {
                        if (buf.st_gid != gid)
@@ -303,13 +341,12 @@ main (int argc, char **argv)
                                                fname, (long)buf.st_gid, (long)gid);
                                return (1);
                        }
-                       
+
                        if (verbose)
                                printf ("%s is owned by group #%ld OK\n",
                                        fname, (long)gid);
                }
-               
        } while (++optind < argc);
-       
+
        return (0);
 }