Beispiel #1
0
        internal static SftpATTRS getATTR(Buffer buf)
        {
            SftpATTRS attr = new SftpATTRS();

            attr.flags = buf.getInt();
            if ((attr.flags & SSH_FILEXFER_ATTR_SIZE) != 0)
            {
                attr.size = buf.getLong();
            }
            if ((attr.flags & SSH_FILEXFER_ATTR_UIDGID) != 0)
            {
                attr.uid = buf.getInt(); attr.gid = buf.getInt();
            }
            if ((attr.flags & SSH_FILEXFER_ATTR_PERMISSIONS) != 0)
            {
                attr.permissions = buf.getInt();
            }
            if ((attr.flags & SSH_FILEXFER_ATTR_ACMODTIME) != 0)
            {
                attr.atime = buf.getInt();
            }
            if ((attr.flags & SSH_FILEXFER_ATTR_ACMODTIME) != 0)
            {
                attr.mtime = buf.getInt();
            }
            if ((attr.flags & SSH_FILEXFER_ATTR_EXTENDED) != 0)
            {
                int count = buf.getInt();
                if (count > 0)
                {
                    attr.extended = new String[count * 2];
                    for (int i = 0; i < count; i++)
                    {
                        attr.extended[i * 2]     = Util.getString(buf.getString());
                        attr.extended[i * 2 + 1] = Util.getString(buf.getString());
                    }
                }
            }
            return(attr);
        }
Beispiel #2
0
 internal static SftpATTRS getATTR(Buffer buf)
 {
     SftpATTRS attr=new SftpATTRS();
     attr.flags=buf.getInt();
     if((attr.flags&SSH_FILEXFER_ATTR_SIZE)!=0){ attr.size=buf.getLong(); }
     if((attr.flags&SSH_FILEXFER_ATTR_UIDGID)!=0)
     {
         attr.uid=buf.getInt(); attr.gid=buf.getInt();
     }
     if((attr.flags&SSH_FILEXFER_ATTR_PERMISSIONS)!=0)
     {
         attr.permissions=buf.getInt();
     }
     if((attr.flags&SSH_FILEXFER_ATTR_ACMODTIME)!=0)
     {
         attr.atime=buf.getInt();
     }
     if((attr.flags&SSH_FILEXFER_ATTR_ACMODTIME)!=0)
     {
         attr.mtime=buf.getInt();
     }
     if((attr.flags&SSH_FILEXFER_ATTR_EXTENDED)!=0)
     {
         int count=buf.getInt();
         if(count>0)
         {
             attr.extended=new String[count*2];
             for(int i=0; i<count; i++)
             {
                 attr.extended[i*2]=Util.getString(buf.getString());
                 attr.extended[i*2+1]=Util.getString(buf.getString());
             }
         }
     }
     return attr;
 }
Beispiel #3
0
			void setAttrs(SftpATTRS attrs) {this.attrs = attrs;}
Beispiel #4
0
			internal LsEntry(String filename, String longname, SftpATTRS attrs)
			{
				setFilename(filename);
				setLongname(longname);
				setAttrs(attrs);
			}
Beispiel #5
0
		private void sendMKDIR(byte[] path, SftpATTRS attr) 
		{
			packet.reset();
			putHEAD(SSH_FXP_MKDIR, 9+path.Length+(attr!=null?attr.length():4));
			buf.putInt(count++);
			buf.putString(path);             // path
			if(attr!=null) attr.dump(buf);
			else buf.putInt(0);
			session.write(packet, this, 9+path.Length+(attr!=null?attr.length():4)+4);
		}
Beispiel #6
0
		private void sendSETSTAT(byte[] path, SftpATTRS attr) 
		{
			packet.reset();
			putHEAD(SSH_FXP_SETSTAT, 9+path.Length+attr.length());
			buf.putInt(count++);
			buf.putString(path);             // path
			attr.dump(buf);
			session.write(packet, this, 9+path.Length+attr.length()+4);
		}
Beispiel #7
0
		private void _setStat(String path, SftpATTRS attr) 
		{
			try
			{
				sendSETSTAT(Util.getBytes(path), attr);

				buf.rewind();
				int i=io.ins.Read(buf.buffer, 0, buf.buffer.Length);
				int length=buf.getInt();
				int type=buf.getByte();
				if(type!=SSH_FXP_STATUS)
				{
					throw new SftpException(SSH_FX_FAILURE, "");
				}
				buf.getInt();
				i=buf.getInt();
				if(i!=SSH_FX_OK)
				{
					throwStatusError(buf, i);
				}
			}
			catch(Exception e)
			{
				if(e is SftpException) throw (SftpException)e;
				throw new SftpException(SSH_FX_FAILURE, "");
			}
		}
Beispiel #8
0
		public void setStat(String path, SftpATTRS attr) 
		{
			try
			{
				if(!path.StartsWith("/")){ path=cwd+"/"+path; }
				ArrayList v=glob_remote(path);
				for(int j=0; j<v.Count; j++)
				{
					path=(String)(v[j]);
					_setStat(path, attr);
				}
			}
			catch(Exception e)
			{
				if(e is SftpException) throw (SftpException)e;
				throw new SftpException(SSH_FX_FAILURE, "");
			}
		}