int main( int argc, char **argv) { char *han_str; char *name; void *hanp, *fshanp; size_t hlen, fshlen; char buffer[100]; int error; if (Progname = strrchr(argv[0], '/')) { Progname++; } else { Progname = argv[0]; } if (argc != 2) usage(); han_str = argv[1]; (void)dm_init_service(&name); if ((error = atohan(han_str, &hanp, &hlen)) != 0) { fprintf(stderr, "atohan() failed, %s\n", strerror(error)); return(1); } if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen) != 0) { fprintf(stderr, "dm_handle_to_fshandle failed, %s\n", strerror(errno)); return(1); } hantoa(fshanp, fshlen, buffer); fprintf(stdout, "%s\n", buffer); dm_handle_free(hanp, hlen); dm_handle_free(fshanp, fshlen); return(0); }
int opaque_to_handle( char *name, void **hanpp, size_t *hlenp) { if (atohan(name, hanpp, hlenp)) { /* not a handle */ } else if (dm_handle_is_valid(*hanpp, *hlenp) == DM_FALSE) { dm_handle_free(*hanpp, *hlenp); /* not a handle */ } else { return(0); } /* Perhaps it is a pathname */ if (dm_path_to_handle(name, hanpp, hlenp)) { return(errno); } return(0); }
int main( int argc, char **argv) { u_int nelem = DM_EVENT_MAX; char *han_str; dm_eventset_t eventset; void *hanp; size_t hlen; u_int nelemp; char *name; int error; int opt; int i; Progname = strrchr(argv[0], '/'); if (Progname) { Progname++; } else { Progname = argv[0]; } /* Crack and validate the command line options. */ while ((opt = getopt(argc, argv, "n:")) != EOF) { switch (opt) { case 'n': nelem = atol(optarg); break; case '?': usage(); } } if (optind + 1 != argc) usage(); han_str = argv[optind]; if ((error = atohan(han_str, &hanp, &hlen)) != 0) { fprintf(stderr, "atohan() failed, %s\n", strerror(error)); return(1); } if (dm_init_service(&name)) { fprintf(stderr, "Can't initialize the DMAPI\n"); return(1); } DMEV_ZERO(eventset); if (dm_get_config_events(hanp, hlen, nelem, &eventset, &nelemp)) { fprintf(stderr, "dm_get_config_events failed, %s\n", strerror(errno)); return(1); } fprintf(stdout, "Events supported (0x%llx), nelemp %d:\n", (unsigned long long) eventset, nelemp); for (i = 0; i < nelemp; i++) { if (!DMEV_ISSET(i, eventset)) continue; switch (i) { case DM_EVENT_CANCEL: fprintf(stdout, "DM_EVENT_CANCEL"); break; case DM_EVENT_MOUNT: fprintf(stdout, "DM_EVENT_MOUNT"); break; case DM_EVENT_PREUNMOUNT: fprintf(stdout, "DM_EVENT_PREUNMOUNT"); break; case DM_EVENT_UNMOUNT: fprintf(stdout, "DM_EVENT_UNMOUNT"); break; case DM_EVENT_DEBUT: fprintf(stdout, "DM_EVENT_DEBUT"); break; case DM_EVENT_CREATE: fprintf(stdout, "DM_EVENT_CREATE"); break; case DM_EVENT_CLOSE: fprintf(stdout, "DM_EVENT_CLOSE"); break; case DM_EVENT_POSTCREATE: fprintf(stdout, "DM_EVENT_POSTCREATE"); break; case DM_EVENT_REMOVE: fprintf(stdout, "DM_EVENT_REMOVE"); break; case DM_EVENT_POSTREMOVE: fprintf(stdout, "DM_EVENT_POSTREMOVE"); break; case DM_EVENT_RENAME: fprintf(stdout, "DM_EVENT_RENAME"); break; case DM_EVENT_POSTRENAME: fprintf(stdout, "DM_EVENT_POSTRENAME"); break; case DM_EVENT_LINK: fprintf(stdout, "DM_EVENT_LINK"); break; case DM_EVENT_POSTLINK: fprintf(stdout, "DM_EVENT_POSTLINK"); break; case DM_EVENT_SYMLINK: fprintf(stdout, "DM_EVENT_SYMLINK"); break; case DM_EVENT_POSTSYMLINK: fprintf(stdout, "DM_EVENT_POSTSYMLINK"); break; case DM_EVENT_READ: fprintf(stdout, "DM_EVENT_READ"); break; case DM_EVENT_WRITE: fprintf(stdout, "DM_EVENT_WRITE"); break; case DM_EVENT_TRUNCATE: fprintf(stdout, "DM_EVENT_TRUNCATE"); break; case DM_EVENT_ATTRIBUTE: fprintf(stdout, "DM_EVENT_ATTRIBUTE"); break; case DM_EVENT_DESTROY: fprintf(stdout, "DM_EVENT_DESTROY"); break; case DM_EVENT_NOSPACE: fprintf(stdout, "DM_EVENT_NOSPACE"); break; case DM_EVENT_USER: fprintf(stdout, "DM_EVENT_USER"); break; case DM_EVENT_MAX: fprintf(stdout, "DM_EVENT_23"); break; } fprintf(stdout, " (%d)\n", i); } dm_handle_free(hanp, hlen); return(0); }