Date: Wed, 8 Jul 2009 20:06:59 GMT From: Tatsiana Severyna <tatsianka@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 165836 for review Message-ID: <200907082006.n68K6xGU092431@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=165836 Change 165836 by tatsianka@tatsianka_zonder on 2009/07/08 20:06:06 psshfs port Affected files ... .. //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/Makefile#2 edit .. //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/fs.c#2 edit .. //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/psbuf.c#2 edit .. //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/psshfs.c#2 edit .. //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/subr.c#2 edit .. //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/util_compat.h#1 add Differences ... ==== //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/Makefile#2 (text+ko) ==== @@ -1,9 +1,13 @@ -# $NetBSD: Makefile,v 1.4 2009/04/22 15:23:07 lukem Exp $ - PROG= mount_psshfs -SRCS= psshfs.c fs.c node.c psbuf.c subr.c -LDADD+= -lpuffs -lutil +SRCS= psshfs.c fs.c node.c psbuf.c subr.c getmntopts.c +LDADD+= -lpuffs MAN= mount_psshfs.8 +MOUNT= /usr/src/sbin/mount +.PATH: ${MOUNT} + +CFLAGS+= -g -I${.CURDIR}/../libpuffs -I${.CURDIR}/../puffs -I${.CURDIR}/../putter -I${MOUNT} +LDFLAGS+= -L${.OBJDIR}/../libpuffs + .include <bsd.prog.mk> ==== //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/fs.c#2 (text+ko) ==== @@ -173,14 +173,18 @@ } int -psshfs_fs_statvfs(struct puffs_usermount *pu, struct statvfs *sbp) +psshfs_fs_statvfs(struct puffs_usermount *pu, struct statfs *sbp) { PSSHFSAUTOVAR(pu); uint64_t tmpval; uint8_t type; memset(sbp, 0, sizeof(*sbp)); +#ifdef XXX_TS sbp->f_bsize = sbp->f_frsize = sbp->f_iosize = 512; +#else + sbp->f_bsize = sbp->f_iosize = 512; +#endif if ((pctx->extensions & SFTP_EXT_STATVFS) == 0) goto out; @@ -198,13 +202,19 @@ psbuf_get_8(pb, &tmpval); sbp->f_bsize = tmpval; psbuf_get_8(pb, &tmpval); +#ifdef XXX_TS sbp->f_frsize = tmpval; +#endif psbuf_get_8(pb, &sbp->f_blocks); psbuf_get_8(pb, &sbp->f_bfree); psbuf_get_8(pb, &sbp->f_bavail); psbuf_get_8(pb, &sbp->f_files); psbuf_get_8(pb, &sbp->f_ffree); +#ifdef XXX_TS psbuf_get_8(pb, &sbp->f_favail); +#else + psbuf_get_8(pb, &tmpval); +#endif psbuf_get_8(pb, &tmpval); /* fsid */ psbuf_get_8(pb, &tmpval); /* flag */ ==== //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/psbuf.c#2 (text+ko) ==== @@ -37,17 +37,19 @@ */ #include <sys/types.h> +#include <sys/endian.h> #include <sys/time.h> +#include <sys/socket.h> #include <sys/vnode.h> #include <err.h> #include <errno.h> #include <stdlib.h> -#include <util.h> #include <unistd.h> #include "psshfs.h" #include "sftp_proto.h" +#include "util_compat.h" #define FAILRV(x) do { int rv; if ((rv=x)) return (rv); } while (/*CONSTCOND*/0) #define READSTATE_LENGTH(off) (off < 4) @@ -58,6 +60,22 @@ #define CHECK(v) if (!(v)) abort() +#ifndef HTOBE16 +#if BYTE_ORDER == BIG_ENDIAN +#define HTOBE16(x) (void) (x) +#define HTOBE32(x) (void) (x) +#define HTOBE64(x) (void) (x) +#else /* LITTLE_ENDIAN */ +#define HTOBE16(x) (x) = htobe16((uint16_t)(x)) +#define HTOBE32(x) (x) = htobe32((uint32_t)(x)) +#define HTOBE64(x) (x) = htobe64((uint64_t)(x)) +#endif + +#define BE16TOH(x) HTOBE16(x) +#define BE32TOH(x) HTOBE32(x) +#define BE64TOH(x) HTOBE64(x) +#endif + uint8_t psbuf_get_type(struct puffs_framebuf *pb) { @@ -265,7 +283,7 @@ flags |= SSH_FILEXFER_ATTR_SIZE; if (va->va_uid != PUFFS_VNOVAL) flags |= SSH_FILEXFER_ATTR_UIDGID; - if (va->va_mode != PUFFS_VNOVAL) + if (va->va_mode != (u_short) PUFFS_VNOVAL) flags |= SSH_FILEXFER_ATTR_PERMISSIONS; if (va->va_atime.tv_sec != PUFFS_VNOVAL) @@ -357,6 +375,7 @@ { uint32_t flags; uint32_t val; + uint32_t tmpval; puffs_vattr_null(vap); @@ -371,7 +390,8 @@ FAILRV(psbuf_get_4(pb, &vap->va_gid)); } if (flags & SSH_FILEXFER_ATTR_PERMISSIONS) { - FAILRV(psbuf_get_4(pb, &vap->va_mode)); + FAILRV(psbuf_get_4(pb, &tmpval)); + vap->va_mode = tmpval; vap->va_type = puffs_mode2vt(vap->va_mode); } if (flags & SSH_FILEXFER_ATTR_ACCESSTIME) { ==== //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/psshfs.c#2 (text+ko) ==== @@ -46,17 +46,19 @@ #include <sys/types.h> #include <sys/wait.h> +#include <sys/ioctl.h> +#include <sys/socket.h> +#include <sys/uio.h> #include <assert.h> #include <err.h> #include <errno.h> -#include <mntopts.h> #include <paths.h> #include <poll.h> #include <puffs.h> #include <signal.h> #include <stdlib.h> -#include <util.h> +#include <stdio.h> #include <unistd.h> #include "psshfs.h" @@ -111,7 +113,6 @@ struct puffs_node *pn_root; puffs_framev_fdnotify_fn notfn; struct vattr *rva; - mntoptparse_t mp; char **sshargs; char *userhost; char *hostpath; @@ -158,10 +159,7 @@ add_ssharg(&sshargs, &nargs, optarg); break; case 'o': - mp = getmntopts(optarg, puffsmopts, &mntflags, &pflags); - if (mp == NULL) - err(1, "getmntopts"); - freemntopts(mp); + getmntopts(optarg, puffsmopts, &mntflags, &pflags); break; case 'p': notfn = psshfs_notify; ==== //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/subr.c#2 (text+ko) ==== @@ -35,10 +35,11 @@ #include <errno.h> #include <puffs.h> #include <stdlib.h> -#include <util.h> +#include <stdio.h> #include "psshfs.h" #include "sftp_proto.h" +#include "util_compat.h" static void freedircache(struct psshfs_dir *base, size_t count)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907082006.n68K6xGU092431>