public unsafe string[] GetFiles(string path) { if (!this.connected) { throw new Exception("Not connected to device"); } string s = this.FullPath(this.current_directory, path); void * dir = null; if (MobileDevice.AFCDirectoryOpen(this.hAFC, Encoding.UTF8.GetBytes(s), ref dir) != 0) { throw new Exception("Path does not exist"); } string buffer = null; ArrayList list = new ArrayList(); MobileDevice.AFCDirectoryRead(this.hAFC, dir, ref buffer); while (buffer != null) { if (!this.IsDirectory(this.FullPath(s, buffer))) { list.Add(buffer); } MobileDevice.AFCDirectoryRead(this.hAFC, dir, ref buffer); } MobileDevice.AFCDirectoryClose(this.hAFC, dir); return((string[])list.ToArray(typeof(string))); }
public unsafe void GetFileInfo(string path, out ulong size, out bool directory) { string str; Dictionary <string, string> fileInfo = this.GetFileInfo(path); size = fileInfo.ContainsKey("st_size") ? ulong.Parse(fileInfo["st_size"]) : ((ulong)0L); bool flag = false; directory = false; if (fileInfo.ContainsKey("st_ifmt") && ((str = fileInfo["st_ifmt"]) != null)) { if (!(str == "S_IFDIR")) { if (str == "S_IFLNK") { flag = true; } } else { directory = true; } } if (flag) { void *dir = null; if (directory = MobileDevice.AFCDirectoryOpen(this.hAFC, Encoding.UTF8.GetBytes(path), ref dir) == 0) { MobileDevice.AFCDirectoryClose(this.hAFC, dir); } } }