Example #1
0
static int
fstat_file(struct file_context *fc, struct stat *st)
{
	if (fc->is_nfs == 0) {
		return fstat(fc->fd, st);
	} else {
		int res;
		struct nfs_stat_64 nfs_st;
		res = nfs_fstat64(fc->nfs, fc->nfsfh, &nfs_st);
		st->st_dev          = nfs_st.nfs_dev;
		st->st_ino          = nfs_st.nfs_ino;
		st->st_mode         = nfs_st.nfs_mode;
		st->st_nlink        = nfs_st.nfs_nlink;
		st->st_uid          = nfs_st.nfs_uid;
		st->st_gid          = nfs_st.nfs_gid;
		st->st_rdev         = nfs_st.nfs_rdev;
		st->st_size         = nfs_st.nfs_size;
		st->st_blksize      = nfs_st.nfs_blksize;
		st->st_blocks       = nfs_st.nfs_blocks;
		st->st_atim.tv_sec  = nfs_st.nfs_atime;
		st->st_mtim.tv_sec  = nfs_st.nfs_mtime;
		st->st_ctim.tv_sec  = nfs_st.nfs_ctime;

		return res;
	}
}
Example #2
0
static int
fstat_file(struct file_context *fc, struct stat *st)
{
	if (fc->is_nfs == 0) {
		return fstat(fc->fd, st);
	} else {
		int res;
		struct nfs_stat_64 nfs_st;
		res = nfs_fstat64(fc->nfs, fc->nfsfh, &nfs_st);
		st->st_dev          = (dev_t)nfs_st.nfs_dev;
		st->st_ino          = (ino_t)nfs_st.nfs_ino;
#ifndef WIN32
		st->st_mode         = (mode_t)nfs_st.nfs_mode;
		st->st_nlink        = (nlink_t)nfs_st.nfs_nlink;
		st->st_blksize      = nfs_st.nfs_blksize;
		st->st_blocks       = nfs_st.nfs_blocks;
#endif
		st->st_uid          = (uid_t)nfs_st.nfs_uid;
		st->st_gid          = (gid_t)nfs_st.nfs_gid;
		st->st_rdev         = (dev_t)nfs_st.nfs_rdev;
		st->st_size         = (off_t)nfs_st.nfs_size;
		st->st_atime        = nfs_st.nfs_atime;
		st->st_mtime        = nfs_st.nfs_mtime;
		st->st_ctime        = nfs_st.nfs_ctime;

		return res;
	}
}
Example #3
0
int main(int argc, char *argv[])
{
	int ret;
	struct file_context *nf;
	struct nfs_stat_64 st;
	uint64_t off;
	int64_t count;
	
#ifdef WIN32
	if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) {
		printf("Failed to start Winsock2\n");
		return 10;
	}
#endif

#ifdef AROS
	aros_init_socket();
#endif

	if (argc < 2) {
		usage();
	}

	nf = open_file(argv[1], O_RDONLY);
	if (nf == NULL) {
		fprintf(stderr, "Failed to open %s\n", argv[1]);
		exit(10);
	}
	if (nfs_fstat64(nf->nfs, nf->nfsfh, &st) < 0) {
		fprintf(stderr, "Failed to stat %s\n", argv[1]);
		exit(10);
	}

	off = 0;
	while (off < st.nfs_size) {
		count = st.nfs_size - off;
		if (count > BUFSIZE) {
			count = BUFSIZE;
		}
		count = nfs_pread(nf->nfs, nf->nfsfh, off, count, buf);
		if (count < 0) {
			fprintf(stderr, "Failed to read from file\n");
			free_file_context(nf);
			return 10;
		}
		fwrite(buf, count, 1, stdout);
		off += count;
	}

	free_file_context(nf);

	return 0;
}