int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; char *string; dm_token_t token; char *name; int opt; Progname = strrchr(argv[0], '/'); if (Progname) { Progname++; } else { Progname = argv[0]; } /* Crack and validate the command line options. */ while ((opt = getopt(argc, argv, "s:")) != EOF) { switch (opt) { case 's': sid = atol(optarg); break; case '?': usage(); } } if (optind + 1 != argc) usage(); string = argv[optind++]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't initialize the DMAPI\n"); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); if (dm_create_userevent(sid, strlen(string)+ 1, string, &token)) { fprintf(stderr, "dm_create_userevent failed, %s\n", strerror(errno)); exit(1); } fprintf(stdout, "New token %d\n", token); exit(0); }
/* * Initialize the interface to the DMAPI */ int setup_dmapi(dm_sessid_t *sidp) { char *cp; if (dm_init_service(&cp) == -1) { err_msg("%s/%d: Can't init dmapi", __FILE__, __LINE__); return(1); } if (strcmp(cp, DM_VER_STR_CONTENTS)) { err_msg("%s/%d: Compiled for a different version", __FILE__, __LINE__); return(1); } find_test_session(sidp); return(0); }
int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; char *pathname; void *bufp = NULL; size_t buflen = 10000; size_t rlenp; void *fshanp; size_t fshlen; char *name; int opt; Progname = strrchr(argv[0], '/'); if (Progname) { Progname++; } else { Progname = argv[0]; } /* Crack and validate the command line options. */ while ((opt = getopt(argc, argv, "b:s:")) != EOF) { switch (opt) { case 'b': buflen = atol(optarg); break; case 's': sid = atol(optarg); break; case '?': usage(); } } if (optind + 1 != argc) usage(); pathname = argv[optind++]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't initialize the DMAPI\n"); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); /* Get the file's handle. */ if (dm_path_to_fshandle(pathname, &fshanp, &fshlen)) { fprintf(stderr, "can't get fshandle for file %s, %s\n", pathname, strerror(errno)); exit(1); } if (buflen > 0) { if ((bufp = malloc(buflen)) == NULL) { fprintf(stderr, "malloc failed, %s\n", strerror(errno)); exit(1); } } if (dm_get_mountinfo(sid, fshanp, fshlen, DM_NO_TOKEN, buflen, bufp, &rlenp)) { if (errno == E2BIG) { fprintf(stderr, "dm_get_mountinfo buffer too small, " "should be %zd bytes\n", rlenp); } else { fprintf(stderr, "dm_get_mountinfo failed, %s\n", strerror(errno)); } exit(1); } fprintf(stdout, "rlenp is %zd\n", rlenp); print_one_mount_event(bufp); dm_handle_free(fshanp, fshlen); exit(0); }
int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; dm_token_t token; dm_right_t right; char *object; void *hanp; size_t hlen; int Fflag = 0; char *name; int opt; Progname = strrchr(argv[0], '/'); if (Progname) { Progname++; } else { Progname = argv[0]; } /* Crack and validate the command line options. */ while ((opt = getopt(argc, argv, "Fs:")) != EOF) { switch (opt) { case 'F': Fflag++; break; case 's': sid = atol(optarg); break; case '?': usage(); } } if (optind + 2 != argc) usage(); token = atol(argv[optind++]); object = argv[optind++]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't initialize the DMAPI\n"); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); /* Get the file or filesystem's handle. */ if (opaque_to_handle(object, &hanp, &hlen)) { fprintf(stderr, "can't get handle from %s\n", object); exit(1); } if (Fflag) { void *fshanp; size_t fshlen; if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { fprintf(stderr, "can't get filesystem handle from %s\n", object); exit(1); } dm_handle_free(hanp, hlen); hanp = fshanp; hlen = fshlen; } if (dm_query_right(sid, hanp, hlen, token, &right)) { fprintf(stderr, "dm_query_right failed, %s\n", strerror(errno)); return(1); } fprintf(stderr, "right is %s\n", rt_value_to_name(right)); dm_handle_free(hanp, hlen); exit(0); }
int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; void *hanp; size_t hlen; dm_fileattr_t fileattr; u_int mask = 0; char *pathname; char *name; int opt; if (Progname = strrchr(argv[0], '/')) { Progname++; } else { Progname = argv[0]; } opterr = 0; while ((opt = getopt(argc, argv, "M:u:g:a:m:c:d:S:s:")) != EOF) { switch (opt) { case 'M': mask |= DM_AT_MODE; fileattr.fa_mode = strtol (optarg, NULL, 8); break; case 'u': mask |= DM_AT_UID; fileattr.fa_uid = atol(optarg); break; case 'g': mask |= DM_AT_GID; fileattr.fa_gid = atol(optarg); break; case 'a': mask |= DM_AT_ATIME; if (get_absolute_date(optarg, &fileattr.FA_ATIME)) break; if (get_relative_date(optarg, &fileattr.FA_ATIME)) break; usage(); case 'm': mask |= DM_AT_MTIME; if (get_absolute_date(optarg, &fileattr.FA_MTIME)) break; if (get_relative_date(optarg, &fileattr.FA_MTIME)) break; usage(); case 'c': mask |= DM_AT_CTIME; if (get_absolute_date(optarg, &fileattr.FA_CTIME)) break; if (get_relative_date(optarg, &fileattr.FA_CTIME)) break; usage(); case 'd': mask |= DM_AT_DTIME; if (get_absolute_date(optarg, &fileattr.FA_DTIME)) break; if (get_relative_date(optarg, &fileattr.FA_DTIME)) break; usage(); case 'S': mask |= DM_AT_SIZE; fileattr.fa_size = atol(optarg); break; case 's': sid = atol(optarg); break; case '?': usage(); } } if (optind + 1 != argc) { usage(); } pathname = argv[optind]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't inititalize the DMAPI\n"); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); if (dm_path_to_handle(pathname, &hanp, &hlen)) { fprintf(stderr, "dm_path_to_handle failed, %s\n", strerror(errno)); exit(1); } if (dm_set_fileattr(sid, hanp, hlen, DM_NO_TOKEN, mask, &fileattr)) { fprintf(stderr, "dm_set_fileattr failed, %s\n", strerror(errno)); exit(1); } exit(0); }
int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; dm_token_t token = DM_NO_TOKEN; #if 0 char buffer[500]; #endif void *hanp; size_t hlen; dm_stat_t dmstat; char *pathname_obj; int a_flag = 0; char *name; int opt; int validate = 0; Progname = strrchr(argv[0], '/'); if (Progname) { Progname++; } else { Progname = argv[0]; } opterr = 0; while ((opt = getopt(argc, argv, "Aas:t:v")) != EOF) { switch (opt) { case 'A': a_flag = 2; break; case 'a': a_flag = 1; break; case 's': sid = atol(optarg); break; case 't': token = atol(optarg); break; case 'v': validate = 1; break; case '?': usage(); } } if (optind + 1 != argc) { usage(); } pathname_obj = argv[optind]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't initialize the DMAPI\n"); exit(1); } 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/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_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)) { fprintf(stderr, "dm_get_fileattr failed, %s\n", strerror(errno)); exit(1); } print_state(&dmstat); if(validate) (void)validate_state(&dmstat, pathname_obj, 1); #if 0 } else { if ((rc = filesys_bulkscan_init(pathname, &scanp)) != 0) { fprintf(stderr, "filesys_bulkscan failed, %s\n", fileio_err_image(rc)); exit(1); } for (;;) { rc = filesys_bulkscan_read(scanp, &fhandle, &fullstat); if (rc != FILEIO_NOERROR) break; (void)fhandle_to_buffer(&fhandle, buffer, sizeof(buffer)); if (a_flag == 1) { fprintf(stdout, "handle %s\n", buffer); print_state(&fullstat); fprintf(stdout, "--------------------------\n"); } else { fprintf(stdout, "%s|", buffer); print_line(&fullstat); } } if (rc != FILEIO_ENDOFSCAN) { fprintf(stderr, "filesys_bulkscan_read failed, %s\n", fileio_err_image(rc)); exit(1); } if ((rc = filesys_bulkscan_close(&scanp)) != 0) { fprintf(stderr, "filesys_bulkscan_close failed, %s\n", fileio_err_image(rc)); exit(1); } #endif } exit(0); }
int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; char *object = NULL; dm_off_t offset = 0; dm_size_t length = 0; void *hanp; size_t hlen; char *name; int opt; if (Progname = strrchr(argv[0], '/')) { Progname++; } else { Progname = argv[0]; } /* Crack and validate the command line options. */ while ((opt = getopt(argc, argv, "o:l:s:")) != EOF) { switch (opt) { case 'o': offset = atol(optarg); break; case 'l': length = atol(optarg); break; case 's': sid = atol(optarg); break; case '?': usage(); } } if (optind + 1 != argc) usage(); object = argv[optind]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't initialize the DMAPI\n"); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); /* Get the file's handle. */ if (opaque_to_handle(object, &hanp, &hlen)) { fprintf(stderr, "can't get handle for %s\n", object); exit(1); } if (dm_punch_hole(sid, hanp, hlen, DM_NO_TOKEN, offset, length)) { fprintf(stderr, "dm_punch_hole failed, %s\n", strerror(errno)); exit(1); } dm_handle_free(hanp, hlen); exit(0); }
int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; dm_token_t token = DM_NO_TOKEN; u_int nelem = DM_EVENT_MAX; char *object; dm_eventset_t eventset; void *hanp; size_t hlen; u_int nelemp; char *name; int Fflag = 0; int error; int opt; int i; if (Progname = strrchr(argv[0], '/')) { Progname++; } else { Progname = argv[0]; } /* Crack and validate the command line options. */ while ((opt = getopt(argc, argv, "Fn:s:t:")) != EOF) { switch (opt) { case 'F': Fflag++; break; case 'n': nelem = atol(optarg); break; case 's': sid = atol(optarg); break; case 't': token = atol(optarg); break; case '?': usage(); } } if (optind + 1 != argc) usage(); object = argv[optind]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't initialize the DMAPI\n"); exit(1); } if ((error = opaque_to_handle(object, &hanp, &hlen)) != 0) { fprintf(stderr, "can't get a handle from %s, %s\n", object, strerror(error)); return(1); } if (Fflag) { void *fshanp; size_t fshlen; if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { fprintf(stderr, "can't get filesystem handle from %s\n", object); exit(1); } dm_handle_free(hanp, hlen); hanp = fshanp; hlen = fshlen; } if (sid == DM_NO_SESSION) find_test_session(&sid); DMEV_ZERO(eventset); if (dm_get_eventlist(sid, hanp, hlen, token, nelem, &eventset, &nelemp)) { fprintf(stderr, "dm_get_eventlist failed, %s\n", strerror(errno)); return(1); } #ifdef VERITAS_21 fprintf(stdout, "Events on object %s (0x%x), nelemp %d:\n", #else fprintf(stdout, "Events on object %s (0x%llx), nelemp %d:\n", #endif object, 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); }
int main( int argc, char **argv) { dm_region_t region = { 0, 0, 0 }; dm_region_t checkregion = { 0, 0, 0 }; dm_sessid_t sid = DM_NO_SESSION; char *dir_name = NULL; char *ls_path = NULL; char object[128]; char command[128]; u_int exactflag; u_int nelem_read = 0; void *hanp; size_t hlen; char *name; int opt; int i; int Vflag = 0; dm_token_t test_token = DM_NO_TOKEN; if (Progname = strrchr(argv[0], '/')) { Progname++; } else { Progname = argv[0]; } /* Crack and validate the command line options. */ while ((opt = getopt(argc, argv, "vo:l:s:")) != EOF) { switch (opt) { case 'v': Vflag++; break; case 'o': region.rg_offset = atol(optarg); break; case 'l': region.rg_size = atol(optarg); break; case 's': sid = atol(optarg); break; case '?': usage(); } } if (optind + 2 > argc) usage(); ls_path = argv[optind]; dir_name = argv[optind+1]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't inititalize the DMAPI\n"); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); /***********************************************\ |* Beginning the testing of set/get_region... *| \***********************************************/ printf("Region test beginning...\n"); sprintf(object, "%s/VeryLongUnlikelyFilename.REGIONTEST", dir_name); sprintf(command, "cp %s %s \n", ls_path, object); system(command); /* Get the test file's handle. */ if (dm_path_to_handle(object, &hanp, &hlen)) { fprintf(stderr, "can't get handle for file %s\n", object); exit(1); } /* Loop over all possible region flag combinations, * setting and getting. See what works! */ for (i = 0; i < 8; i++) { region.rg_flags = reg_flags[i]; if (dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, NELEM, ®ion, &exactflag)) { fprintf(stderr, "dm_set_region failed, %s\n", ERR_NAME); continue; } if (exactflag != DM_TRUE){ fprintf(stdout, "oops...exactflag was false!\n"); } if (dm_get_region(sid, hanp, hlen, DM_NO_TOKEN, NELEM, &checkregion, &nelem_read)) { fprintf(stderr, "dm_get_region failed, %s\n", ERR_NAME); continue; } if (region.rg_flags != checkregion.rg_flags) { fprintf(stdout, "set region flags %d, but found %d\n", region.rg_flags, checkregion.rg_flags); } else if (Vflag) { fprintf(stdout, "Test #%d okay\n", i); } } /*************************************\ |* Correct-input testing complete. *| |* Beginning improper-input testing. *| \*************************************/ printf("\t(errno subtests beginning...)\n"); region.rg_flags = 7; /**** SET tests ****/ /*---------------------------------------------------------*/ ERRTEST(E2BIG, "set", dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, 2, ®ion, &exactflag)) ERRTEST(E2BIG, "set", dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, -1, ®ion, &exactflag)) /*---------------------------------------------------------*/ EXCLTEST("set", hanp, hlen, test_token, dm_set_region(sid, hanp, hlen, test_token, NELEM, ®ion, &exactflag)) /*---------------------------------------------------------*/ ERRTEST(EFAULT, "set", dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, NELEM, (dm_region_t*)(-1000), &exactflag)) ERRTEST(EFAULT, "set", dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, NELEM, ®ion, (dm_boolean_t*)(-1000))) /*---------------------------------------------------------*/ ERRTEST(EINVAL, "set (bad session id)", dm_set_region(-100, hanp, hlen, DM_NO_TOKEN, NELEM, ®ion, &exactflag)) /*---------------------------------------------------------*/ /**** GET tests ****/ /*---------------------------------------------------------*/ ERRTEST (E2BIG, "get", dm_get_region(sid, hanp, hlen, DM_NO_TOKEN, 0, &checkregion, &nelem_read)) /*---------------------------------------------------------*/ ERRTEST(EFAULT, "get (bad handle)", dm_get_region(sid, NULL, hlen, DM_NO_TOKEN, NELEM, &checkregion, &nelem_read)) /*---------------------------------------------------------*/ ERRTEST(EFAULT, "get (bad regbufp)", dm_get_region(sid, hanp, hlen, DM_NO_TOKEN, NELEM, (dm_region_t *)(-1000), &nelem_read)) /*---------------------------------------------------------*/ ERRTEST(EFAULT, "get (bad nelemp)", dm_get_region(sid, hanp, hlen, DM_NO_TOKEN, NELEM, &checkregion, (u_int *)(-1000))) /*---------------------------------------------------------*/ SHAREDTEST("get", hanp, hlen, test_token, dm_get_region(sid, hanp, hlen, test_token, NELEM, &checkregion, &nelem_read)) /*---------------------------------------------------------*/ ERRTEST(EINVAL, "get", dm_get_region(-100, hanp, hlen, DM_NO_TOKEN, NELEM, &checkregion, &nelem_read)) /*---------------------------------------------------------*/ printf("\t(errno subtests complete)\n"); /**********************************\ |* End of improper-input testing. *| \**********************************/ sprintf(command, "rm %s \n", object); system(command); printf("Region test complete.\n"); /***********************************\ |* End of set/get_region testing. *| \***********************************/ dm_handle_free(hanp, hlen); exit(0); }
int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; dm_attrloc_t loc = 0; char *dirpath; char buffer[100]; void *bufp; size_t buflen = 10000; u_int mask; size_t rlenp; void *hanp; size_t hlen; char *name; int opt; int i; int ret; int oneline = 0; int quiet = 0; if (Progname = strrchr(argv[0], '/')) { Progname++; } else { Progname = argv[0]; } /* Crack and validate the command line options. */ while ((opt = getopt(argc, argv, "b:l:s:1q")) != EOF) { switch (opt) { case 'b': buflen = atol(optarg); break; case 'l': loc = atol(optarg); break; case 's': sid = atol(optarg); break; case '1': oneline = 1; break; case 'q': quiet = 1; break; case '?': usage(); } } if (optind + 1 != argc) usage(); dirpath = argv[optind++]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't initialize the DMAPI\n"); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); /* Get the directory's handle. */ if (dm_path_to_handle(dirpath, &hanp, &hlen)) { fprintf(stderr, "can't get handle for file %s, %s\n", dirpath, strerror(errno)); exit(1); } if ((bufp = malloc(buflen == 0 ? 1 : buflen)) == NULL) { fprintf(stderr, "malloc failed, %s\n", strerror(errno)); exit(1); } mask = DM_AT_HANDLE|DM_AT_EMASK|DM_AT_PMANR|DM_AT_PATTR|DM_AT_DTIME|DM_AT_CFLAG|DM_AT_STAT; do { memset(bufp, 0, buflen); if ((ret = dm_get_dirattrs(sid, hanp, hlen, DM_NO_TOKEN, mask, &loc, buflen, bufp, &rlenp)) < 0) { fprintf(stderr, "dm_get_dirattrs failed, %s\n", strerror(errno)); exit(1); } if (!quiet) { fprintf(stdout, "ret = %d, rlenp is %d, loc is %lld\n", ret, rlenp, loc); } if (rlenp > 0) { dm_stat_t *statp; statp = (dm_stat_t *)bufp; while (statp != NULL) { hantoa((char *)statp + statp->dt_handle.vd_offset, statp->dt_handle.vd_length, buffer); if (oneline) { fprintf(stdout, "%s %s\n", (char *)statp + statp->dt_compname.vd_offset, buffer); } else { fprintf(stdout, "handle %s\n", buffer); fprintf(stdout, "name %s\n", (char *)statp + statp->dt_compname.vd_offset); print_line(statp); } statp = DM_STEP_TO_NEXT(statp, dm_stat_t *); } } else if ((ret == 1) && (rlenp == 0) && (!quiet)) { fprintf(stderr, "buflen is too short to hold anything\n"); exit(1); } } while (ret != 0);
int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; dm_token_t token = DM_NO_TOKEN; char *object; dm_eventset_t eventset; void *hanp; size_t hlen; int Fflag = 0; u_int maxevent = DM_EVENT_MAX; char *name; int opt; Progname = strrchr(argv[0], '/'); if (Progname) { Progname++; } else { Progname = argv[0]; } /* Crack and validate the command line options. */ while ((opt = getopt(argc, argv, "Fm:s:t:")) != EOF) { switch (opt) { case 'F': Fflag++; break; case 'm': maxevent = atol(optarg); break; case 's': sid = atol(optarg); break; case 't': token = atol(optarg); break; case '?': usage(); } } if (optind + 1 > argc) usage(); object = argv[optind++]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't initialize the DMAPI\n"); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); DMEV_ZERO(eventset); /* Get the file's handle or convert the external handle. */ if (opaque_to_handle(object, &hanp, &hlen)) { fprintf(stderr, "can't get handle for %s\n", object); exit(1); } if (Fflag) { void *fshanp; size_t fshlen; if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { fprintf(stderr, "can't get filesystem handle from %s\n", object); exit(1); } dm_handle_free(hanp, hlen); hanp = fshanp; hlen = fshlen; } for (; optind < argc; optind++) { dm_eventtype_t event; event = ev_name_to_value(argv[optind]); if (event == DM_EVENT_INVALID) { fprintf(stderr, "invalid event %s\n", argv[optind]); usage(); } if ((event == DM_EVENT_READ) || (event == DM_EVENT_WRITE) || (event == DM_EVENT_TRUNCATE)) { fprintf(stderr, "Use set_region to twiddle read/write/trunc events\n"); exit(1); } DMEV_SET(event, eventset); } if (dm_set_eventlist(sid, hanp, hlen, token, &eventset, maxevent)) { fprintf(stderr, "dm_set_eventlist failed, %s\n", strerror(errno)); exit(1); } dm_handle_free(hanp, hlen); exit(0); }
int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; dm_token_t token = DM_NO_TOKEN; char *pathname; dm_attrname_t *attrnamep = NULL; dm_boolean_t enable = DM_FALSE; void *hanp; size_t hlen; char *name; int opt; int Fflag = 0; Progname = strrchr(argv[0], '/'); if (Progname) { Progname++; } else { Progname = argv[0]; } /* Crack and validate the command line options. */ while ((opt = getopt(argc, argv, "Fs:t:")) != EOF) { switch (opt) { case 's': sid = atol(optarg); break; case 't': token = atol(optarg); break; case 'F': Fflag++; break; case '?': usage(); } } if (optind == argc || optind + 2 < argc) usage(); pathname = argv[optind++]; if (optind < argc) { enable = DM_TRUE; attrnamep = (dm_attrname_t *)argv[optind++]; } if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't initialize the DMAPI\n"); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); if (opaque_to_handle(pathname, &hanp, &hlen)) { fprintf(stderr, "can't get handle for %s\n", pathname); exit(1); } /* Get the file's handle. */ if (Fflag) { void *fshanp; size_t fshlen; if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { fprintf(stderr, "can't get filesystem handle for file %s, %s\n", pathname, strerror(errno)); exit(1); } dm_handle_free(hanp, hlen); hanp = fshanp; hlen = fshlen; } if (dm_set_return_on_destroy(sid, hanp, hlen, token, attrnamep, enable)) { fprintf(stderr, "dm_set_return_on_destroy failed, %s\n", strerror(errno)); exit(1); } dm_handle_free(hanp, hlen); exit(0); }
int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; char *pathname = NULL; dm_off_t offset = 0; dm_size_t length = 0; dm_off_t roffp; dm_size_t rlenp; void *hanp; size_t hlen; char *name; int opt; Progname = strrchr(argv[0], '/'); if (Progname) { Progname++; } else { Progname = argv[0]; } /* Crack and validate the command line options. */ while ((opt = getopt(argc, argv, "o:l:s:")) != EOF) { switch (opt) { case 'o': offset = atol(optarg); break; case 'l': length = atol(optarg); break; case 's': sid = atol(optarg); break; case '?': usage(); } } if (optind + 1 != argc) usage(); pathname = argv[optind]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't initialize the DMAPI\n"); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); /* Get the file's handle. */ if (dm_path_to_handle(pathname, &hanp, &hlen)) { fprintf(stderr, "can't get handle for file %s\n", pathname); exit(1); } if (dm_probe_hole(sid, hanp, hlen, DM_NO_TOKEN, offset, length, &roffp, &rlenp)) { fprintf(stderr, "dm_probe_hole failed, %s\n", strerror(errno)); exit(1); } fprintf(stdout, "roffp is %lld, rlenp is %llu\n", (long long) roffp, (unsigned long long) rlenp); dm_handle_free(hanp, hlen); exit(0); }
int main(int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; dm_token_t token[NUM_TOKENS]; dm_token_t test_token; void *fs_hanp; size_t fs_hlen; void *dir_hanp; size_t dir_hlen; void *ap; size_t alen; void *bp; size_t blen; void *cp; size_t clen; char *name; char *ls_path; char *pathname; char fname_a[100]; char fname_b[100]; char fname_c[100]; char command[150]; int opt; int i=0; if (Progname = strrchr(argv[0], '/')) { Progname++; } else { Progname = argv[0]; } opterr = 0; while ((opt = getopt(argc, argv, "vn:s:")) != EOF) { switch (opt) { case 'v': Vflag++; break; case 's': sid = atol(optarg); break; case '?': usage(); } } if (optind + 2 != argc) { usage(); } ls_path = argv[optind]; pathname = argv[optind+1]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't inititalize the DMAPI\n"); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); printf("Beginning access rights testing...\n"); sprintf(fname_a, "%s/DMAPI_rights_test_file_a", pathname); sprintf(command, "cp %s %s\n", ls_path, fname_a); system(command); if (dm_path_to_handle(fname_a, &ap, &alen)) { fprintf(stderr, "ERROR: can't get handle for %s; %s\n", fname_a, ERR_NAME); goto abort_test; } sprintf(fname_b, "%s/DMAPI_rights_test_file_b", pathname); sprintf(command, "cp %s %s\n", ls_path, fname_b); system(command); if (dm_path_to_handle(fname_b, &bp, &blen)) { fprintf(stderr, "ERROR: can't get handle for %s; %s\n", fname_b, ERR_NAME); goto abort_test; } sprintf(fname_c, "%s/DMAPI_rights_test_file_c", pathname); sprintf(command, "cp %s %s\n", ls_path, fname_c); system(command); if (dm_path_to_handle(fname_c, &cp, &clen)) { fprintf(stderr, "ERROR: can't get handle for %s; %s\n", fname_c, ERR_NAME); goto abort_test; } if (dm_path_to_fshandle(pathname, &fs_hanp, &fs_hlen)) { fprintf(stderr, "ERROR: can't get handle for %s; %s\n", pathname, ERR_NAME); goto abort_test; } sprintf(pathname, "%s/DMAPI_rights_test_dir", pathname); sprintf(command, "mkdir %s\n", pathname); system(command); if (dm_path_to_handle(pathname, &dir_hanp, &dir_hlen)) { fprintf(stderr, "ERROR: can't get handle for %s; %s\n", pathname, ERR_NAME); goto abort_test; } /* Test remaining functions for appropriate * right requirements... *------------------------------------------------------------*/ { dm_off_t off = (dm_off_t)0; dm_extent_t extent; u_int nelem_ret; SHAREDTEST("get_allocinfo", ap, alen, test_token, dm_get_allocinfo(sid, ap, alen, test_token, &off, 1, &extent, &nelem_ret)) } /*------------------------------------------------------------*/ { void *bufp=(void*)malloc(5*sizeof(dm_attrlist_t)); size_t rlen; SHAREDTEST("getall_dmattr", ap, alen, test_token, dm_getall_dmattr(sid, ap, alen, test_token, 5, bufp, &rlen)) } /*------------------------------------------------------------*/ { dm_attrloc_t loc; SHAREDTEST("init_attrloc", dir_hanp, dir_hlen, test_token, dm_init_attrloc(sid, dir_hanp, dir_hlen, test_token, &loc)) } /*------------------------------------------------------------*/ #if 0 mkdir_by_handle is NOT SUPPORTED in current SGI DMAPI { SHAREDTEST("mkdir_by_handle", fs_hanp, fs_hlen, test_token, dm_mkdir_by_handle(sid, fs_hanp, fs_hlen, test_token, dir_hanp, dir_hlen, "FUBAR_DIR")) } #endif /*------------------------------------------------------------*/ { dm_eventset_t eventset; DMEV_ZERO(eventset); EXCLTEST("set_disp", fs_hanp, fs_hlen, test_token, dm_set_disp(sid, fs_hanp, fs_hlen, test_token, &eventset, DM_EVENT_MAX)) }
int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; dm_off_t startoff = 0; /* starting offset */ u_int nelem = 100; char *pathname; void *hanp; size_t hlen; dm_stat_t sbuf; char *name; int opt; if (Progname = strrchr(argv[0], '/')) { Progname++; } else { Progname = argv[0]; } /* Crack and validate the command line options. */ while ((opt = getopt(argc, argv, "Dn:o:s:")) != EOF) { switch(opt) { case 'D': Dflag++; break; case 'n': nelem = atol(optarg); break; case 'o': startoff = atoll(optarg); break; case 's': sid = atol(optarg); break; case '?': usage(); } } if (optind + 1 != argc) usage(); pathname = argv[optind]; if (dm_init_service(&name)) { fprintf(stderr, "dm_init_service failed, %s\n", strerror(errno)); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); /* Get the file's handle and verify that it is a regular file. */ if (dm_path_to_handle(pathname, &hanp, &hlen)) { fprintf(stderr, "can't get handle for %s\n", pathname); exit(1); } if (dm_get_fileattr(sid, hanp, hlen, DM_NO_TOKEN, DM_AT_STAT, &sbuf)) { fprintf(stderr, "dm_get_fileattr failed\n"); exit(1); } if (!S_ISREG(sbuf.dt_mode)) { fprintf(stderr, "%s is not a regular file\n", pathname); exit(1); } /* Print the allocation. */ if (print_alloc(sid, hanp, hlen, pathname, startoff, nelem)) exit(1); dm_handle_free(hanp, hlen); exit(0); }