allow it to accept the text form of a file handle
authorDean Roehrich <roehrich@sgi.com>
Mon, 25 Feb 2002 22:36:32 +0000 (22:36 +0000)
committerDean Roehrich <roehrich@sgi.com>
Mon, 25 Feb 2002 22:36:32 +0000 (22:36 +0000)
dmapi/src/suite1/cmd/get_fileattr.c

index b95e45bc12f362042712ddabdd48e1f02d2f6a71..26d6ece137335813c98fb3d7954fba90a8792755 100644 (file)
@@ -48,7 +48,7 @@ char  *Progname;
 static void
 usage(void)
 {
-       fprintf(stderr, "Usage: %s [-a|-A] [-s sid] [-t token] pathname\n",
+       fprintf(stderr, "Usage: %s [-a|-A] [-s sid] [-t token] {pathname|handle}\n",
                Progname);
        exit(1);
 }
@@ -67,10 +67,11 @@ main(
        void            *hanp;
        size_t          hlen;
        dm_stat_t       dmstat;
-       char            *pathname;
+       char            *pathname_obj;
        int             a_flag = 0;
        char            *name;
        int             opt;
+       int             validate = 0;
 
        if (Progname = strrchr(argv[0], '/')) {
                Progname++;
@@ -79,7 +80,7 @@ main(
        }
 
        opterr = 0;
-       while ((opt = getopt(argc, argv, "Aas:t:")) != EOF) {
+       while ((opt = getopt(argc, argv, "Aas:t:v")) != EOF) {
                switch (opt) {
                case 'A':
                        a_flag = 2;
@@ -93,6 +94,9 @@ main(
                case 't':
                        token = atol(optarg);
                        break;
+               case 'v':
+                       validate = 1;
+                       break;
                case '?':
                        usage();
                }
@@ -100,7 +104,7 @@ main(
        if (optind + 1 != argc) {
                usage();
        }
-       pathname = argv[optind];
+       pathname_obj = argv[optind];
 
        if (dm_init_service(&name) == -1)  {
                fprintf(stderr, "Can't initialize the DMAPI\n");
@@ -109,19 +113,20 @@ main(
        if (sid == DM_NO_SESSION)
                find_test_session(&sid);
 
+       /* Get the file's handle or convert the external handle. */
+
+       if (opaque_to_handle(pathname_obj, &hanp, &hlen)) {
+               fprintf(stderr, "can't get handle for %s\n", pathname_obj);
+               exit(1);
+       }
+
        if (!a_flag) {
-               fprintf(stdout, "path            %s\n", pathname);
+               fprintf(stdout, "path/handle            %s\n", pathname_obj);
 
                /* Get the file's state, print it, then verify it against
                   what is in the file's stat block.
                */
 
-               if (dm_path_to_handle(pathname, &hanp, &hlen)) {
-                       fprintf(stderr, "dm_path_to_handle failed, %s\n",
-                               strerror(errno));
-                       exit(1);
-               }
-
                if (dm_get_fileattr(sid, hanp, hlen, token,
        DM_AT_EMASK|DM_AT_PMANR|DM_AT_PATTR|DM_AT_DTIME|DM_AT_CFLAG|DM_AT_STAT,
                    &dmstat)) {
@@ -131,7 +136,8 @@ main(
                }
 
                print_state(&dmstat);
-               (void)validate_state(&dmstat, pathname, 1);
+               if(validate)
+                       (void)validate_state(&dmstat, pathname_obj, 1);
 #if 0
        } else {
                if ((rc = filesys_bulkscan_init(pathname, &scanp)) != 0) {