Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
Archivo: util.c Proyecto: crossmeta/sgi
/*
 * 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);
}
Ejemplo n.º 3
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);
}
Ejemplo n.º 4
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);
}
Ejemplo n.º 5
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);
}
Ejemplo n.º 6
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);
}
Ejemplo n.º 7
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);
}
Ejemplo n.º 8
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);
}
Ejemplo n.º 9
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, 
				  &region, &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, &region, &exactflag))
	ERRTEST(E2BIG,
		"set", 
		dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, 
			      -1, &region, &exactflag))
	/*---------------------------------------------------------*/
	EXCLTEST("set", hanp, hlen, test_token, 
		 dm_set_region(sid, hanp, hlen, test_token,
			       NELEM, &region, &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, &region, (dm_boolean_t*)(-1000)))
       	/*---------------------------------------------------------*/
	ERRTEST(EINVAL, 
		"set (bad session id)",
		dm_set_region(-100, hanp, hlen, DM_NO_TOKEN, 
			      NELEM, &region, &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);
}
Ejemplo n.º 10
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);
Ejemplo n.º 11
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);
}
Ejemplo n.º 12
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);
}
Ejemplo n.º 13
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);
}
Ejemplo n.º 14
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))
	}
Ejemplo n.º 15
0
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);
}