private async void OpenFile()
        {
            SearchResultItemViewModel <T> selectedItem = SelectedItem;

            if (selectedItem == null)
            {
                return;
            }
            LibgenObject selectedLibgenObject = selectedItem.LibgenObject;

            if (selectedLibgenObject == null || !selectedLibgenObject.FileId.HasValue)
            {
                return;
            }
            LibraryFile file = await MainModel.LoadFileAsync(selectedLibgenObject.FileId.Value);

            string filePath = file.FilePath;

            if (File.Exists(filePath))
            {
                Process.Start(filePath);
            }
            else
            {
                ShowMessage(Localization.ErrorMessageTitle, Localization.GetFileNotFoundErrorText(filePath));
            }
        }
Пример #2
0
        public DownloadBookViewModel GetDownloadBookViewModel(string md5Hash)
        {
            NonFictionBook nonFictionBook = localDatabase.GetNonFictionBookByMd5Hash(md5Hash.ToLowerInvariant());

            if (nonFictionBook == null || !nonFictionBook.FileId.HasValue)
            {
                return(null);
            }
            LibraryFile libraryFile      = localDatabase.GetFileById(nonFictionBook.FileId.Value);
            string      downloadFileName = String.Concat(nonFictionBook.Authors, " - ", nonFictionBook.Title, ".", nonFictionBook.Format);

            if (downloadFileName.Length > 200)
            {
                downloadFileName = String.Concat(nonFictionBook.Md5Hash, ".", nonFictionBook.Format);
            }
            DownloadBookViewModel result = new DownloadBookViewModel
            {
                DownloadFileName = downloadFileName,
                LocalFilePath    = libraryFile.FilePath
            };

            if (fileExtensionContentTypeProvider.TryGetContentType(downloadFileName, out string contentTypeFromFormat))
            {
                result.ContentType = contentTypeFromFormat;
            }
            else if (fileExtensionContentTypeProvider.TryGetContentType(downloadFileName, out string contentTypeFromLocalFileExtension))
            {
                result.ContentType = contentTypeFromLocalFileExtension;
            }
            else
            {
                result.ContentType = "application/octet-stream";
            }
            return(result);
        }
            public TargetFileModuleListViewItem(LibraryFile file)
            {
                this.m_TargetFile = file;

                this.Text = Path.GetFileName(file.FileName);
                this.SubItems.Add(file.Revision);
            }
Пример #4
0
 public ParticleImageInfo(LibraryFile file, int index)
 {
     Index = index;
     if (CEnvir.LibraryList.TryGetValue(file, out Library))
     {
         Size = Library.GetSize(index);
     }
 }
            public TargetLibraryPair(LibraryFile baseFile, List <Library> targetLibraries)
            {
                this.m_PairFileList = new List <SelectableLibraryFile>();
                this.m_BaseFile     = baseFile;
                this.m_BaseFileName = Path.GetFileName(this.m_BaseFile.FileName);

                this.SearchPair(targetLibraries);
            }
Пример #6
0
        public MirProjectile(int startIndex, int frameCount, TimeSpan frameDelay, LibraryFile file, int startlight, int endlight, Color lightColour, Point origin) : base(startIndex, frameCount, frameDelay, file, startlight, endlight, lightColour)
        {
            Has16Directions = true;

            Origin  = origin;
            Speed   = 50;
            Explode = false;
        }
 private void OpenFile(LibraryFile file)
 {
     try {
         this.m_TextEditor.Start(new TextEditorInfo(file));
     }
     catch (ApplicationException ex) {
         MessageBox.Show(ex.Message, "エディタ起動エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Пример #8
0
        private async void Initialize()
        {
            mainActionProgress = 0;
            downloadId         = null;
            if (LibgenObject.FileId.HasValue)
            {
                LibraryFile file = await MainModel.LoadFileAsync(LibgenObject.FileId.Value);

                localFilePath = file.FilePath;
            }
            else
            {
                localFilePath = null;
            }
            if (localFilePath != null)
            {
                downloadUrl = null;
                IsMainActionButtonEnabled     = true;
                mainActionButtonMode          = MainActionButtonMode.OPEN_FILE;
                mainActionButtonCaptionOption = MainActionButtonCaptionOption.OPEN;
                mainActionButtonTooltipOption = MainActionButtonTooltipOption.NO_TOOLTIP;
            }
            else
            {
                mainActionButtonMode          = MainActionButtonMode.START_DOWNLOAD;
                mainActionButtonCaptionOption = MainActionButtonCaptionOption.DOWNLOAD;
                if (downloadMirrorName == null)
                {
                    downloadActionTextOption      = DownloadActionTextOption.DOWNLOAD;
                    IsMainActionButtonEnabled     = false;
                    mainActionButtonTooltipOption = MainActionButtonTooltipOption.NO_DOWNLOAD_MIRROR;
                    downloadUrl = null;
                }
                else
                {
                    downloadActionTextOption = DownloadActionTextOption.DOWNLOAD_FROM_MIRROR;
                    if (IsInOfflineMode)
                    {
                        IsMainActionButtonEnabled     = false;
                        mainActionButtonTooltipOption = MainActionButtonTooltipOption.OFFLINE_MODE_IS_ON;
                        downloadUrl = null;
                    }
                    else
                    {
                        IsMainActionButtonEnabled     = true;
                        mainActionButtonTooltipOption = MainActionButtonTooltipOption.NO_TOOLTIP;
                        downloadUrl = GenerateDownloadUrl(MainModel.Mirrors[downloadMirrorName]);
                    }
                }
            }
            UpdateMainActionButtonCaption();
            UpdateMainActionButtonTooltip();
            UpdateDownloadStatus(MainModel.Downloader.GetDownloadItemByDownloadPageUrl(downloadUrl));
            MainModel.Downloader.DownloaderEvent += DownloaderEvent;
            await InitializeCoverAsync();
        }
Пример #9
0
        public LibraryFileItem(LibraryFile item)
        {
            InitializeComponent();

            if (!DesignMode)
            {
                _item = item;
                Init();
            }
        }
Пример #10
0
        /// <summary>
        /// ファイルを開きます。
        /// </summary>
        /// <param name="file"></param>
        public void OpenFile(LibraryFile file)
        {
            //パスの設定
            string editorPath = this.GetEditorPath();
            //引数の設定
            string editorArguments = this.GetEditorArguments(file);

            //プロセスの起動
            this.StartProcess(editorPath, editorArguments);
        }
Пример #11
0
        public void CanUnpackFile()
        {
            var file = new LibraryFile("TestFile.txt", SampleData.SampleFile);

            string unpackedFile = file.UnpackResources(Assembly.GetExecutingAssembly());

            unpackedFile.ShouldNotBeNullOrEmpty();
            File.Exists(unpackedFile).ShouldBeTrue();
            File.ReadAllText(unpackedFile).ShouldBe(Encoding.UTF8.GetString(SampleData.SampleFile));
            File.Delete(unpackedFile);
        }
Пример #12
0
        public Library(LibraryFile libraryFile)
        {
            _libraryFile = libraryFile;

            Initialize();

            foreach (var entry in libraryFile.Entries)
            {
                Add(entry);
            }
        }
Пример #13
0
        private void cmdOpenFile_ItemClick(object sender, ItemClickEventArgs e)
        {
            dsTree.TreeRow row =
                (uxWhere.Properties.TreeList.GetDataRecordByNode(uxWhere.Properties.TreeList.FocusedNode) as DataRowView).Row as dsTree.TreeRow;
            LibraryGroup group = row.Data as LibraryGroup;
            LibraryFile  file  = row.Data as LibraryFile;

            if (file != null)
            {
                OpenPresentation(file.FullPath);
            }
        }
Пример #14
0
        public MirProjectile(int startIndex, int frameCount, TimeSpan frameDelay, LibraryFile file, int startlight, int endlight, Color lightColour, Point origin, Type particleEmitter = null) : base(startIndex, frameCount, frameDelay, file, startlight, endlight, lightColour)
        {
            Has16Directions = true;

            Origin  = origin;
            Speed   = 50;
            Explode = false;

            if (Config.DrawParticles && particleEmitter != null)
            {
                _particleEmitter = (ParticleEmitter)Activator.CreateInstance(particleEmitter, this);

                GameScene.Game.MapControl.ParticleEffects.Add(_particleEmitter);
            }
        }
Пример #15
0
        /// <summary>
        /// エディタの引数を指定します。
        /// 引数内の%filename%は指定したLibraryFileのFileNameに置き換えられます。
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        private string GetEditorArguments(LibraryFile file)
        {
            string editorArguments = AppMain.g_AppMain.AppInfo.EditorArguments;

            if (!editorArguments.Contains("%filename%"))
            {
                //引数に%filename%が含まれていない場合、末尾に追加する
                if (editorArguments.Length > 0)
                {
                    editorArguments += " ";
                }
                editorArguments += "%filename%";
            }
            editorArguments = editorArguments.Replace("%filename%", "\"" + file.FileName + "\"");
            return(editorArguments);
        }
Пример #16
0
            /// <summary>
            /// BaseFileに対応するファイルをライブラリから検索します。
            /// </summary>
            /// <param name="lib"></param>
            /// <param name="directoryName"></param>
            private void SearchPair2(Library lib, string directoryName)
            {
                string path         = directoryName;
                string baseFileName = Path.GetFileName(this.m_BaseFile.FileName);

                string filename = Directory.GetFiles(path).Where(f => Path.GetFileName(f) == baseFileName).FirstOrDefault() ?? "";

                if (File.Exists(filename))
                {
                    LibraryFile file = LibraryFile.FromFile(filename);
                    this.PairFileList.Add(new SelectableLibraryFile(file, lib));
                }
                //サブディレクトリに対して再帰処理
                Directory.GetDirectories(path).ToList().ForEach(subDir => {
                    this.SearchPair2(lib, subDir);
                });
            }
Пример #17
0
        /// <summary>
        /// Attempts to load album artwork from { tag pictures, album folder, web services }
        /// </summary>
        public static void Load(LibraryFile libraryFile)
        {
            // Create specific artwork keys for download
            var artworkGrouping = libraryFile.Entries
                                  .Where(entry => LibraryArtworkLoader.HasValidArtworkKey(entry))
                                  .GroupBy(entry => LibraryArtworkLoader.GetArtworkKey(entry))
                                  .Actualize();

            var artworkDict = new ConcurrentDictionary <string, SerializableBitmap>();

            // Create tasks for downloading the artwork
            Parallel.ForEach(artworkGrouping, new ParallelOptions()
            {
                MaxDegreeOfParallelism = 8
            }, group =>
            {
                // Tag Pictures (TODO)

                // Album Folder (TODO)

                // Web Services
                //
                // 1) LastFm
                // 2) ...
                //

                // Attemp to download artwork
                var artworkTask = LastFmClient.DownloadArtwork(group.First());

                // Run task
                artworkTask.Wait();

                // Add to artwork result
                if (artworkTask.Result != null)
                {
                    artworkDict.TryAdd(group.Key, artworkTask.Result);
                }
            });

            // Distribute results
            foreach (var element in artworkDict)
            {
                // Add distinct artwork to library by "Artwork Key"
                libraryFile.AddArtwork(element.Key, element.Value);
            }
        }
Пример #18
0
 /// <summary>
 /// Saves library file to specified path with specified name (no extension)
 /// </summary>
 public static void Save(LibraryFile libraryFile)
 {
     using (var stream = File.Create(LIBRARY_FILE))
     {
         using (var zipStream = new GZipStream(stream, CompressionMode.Compress))
         {
             try
             {
                 Serializer.Serialize(libraryFile, zipStream);
             }
             catch (Exception ex)
             {
                 throw ex;
             }
         }
     }
 }
Пример #19
0
        private void Filter()
        {
            uxWhat.Properties.Buttons[(int)WhatButtons.Search].Enabled = false;

            Regex regEx = new Regex(uxWhat.Tag == null ? uxWhat.Text : "", RegexOptions.IgnoreCase);

            dsTree.TreeRow row  = treeTable.FindByID((int)uxWhere.EditValue);
            var            list = LibraryData.GetAllItems();
            int            n    = list.Count();

            if (row.ParentID == -1)
            {
                list = list.Where(item =>
                                  regEx.IsMatch(item.Keywords)
                                  );
            }
            else if (row.Data is LibraryFile)
            {
                LibraryFile file = row.Data as LibraryFile;
                list = list.Where(item =>
                                  item.File.Group.Name == file.Group.Name &&
                                  item.File.Name == file.Name &&
                                  regEx.IsMatch(item.Keywords)
                                  );
            }
            else
            {
                LibraryGroup group = row.Data as LibraryGroup;
                if (group != null)
                {
                    list = list.Where(item =>
                                      item.File.Group.FullPath == group.FullPath &&
                                      regEx.IsMatch(item.Keywords)
                                      );
                }
                else
                {
                    list = Enumerable.Empty <IFileItem>();
                }
            }

            uxImagesView.DataSource = list.ToList();
        }
Пример #20
0
        // Generate a new library file using the selected directory.
        private async Task <LibraryFile> DoGenerateLibrary(string selectedFolder, string libraryName)
        {
            LibraryFile tempLibraryFile = new LibraryFile();
            await Task.Run(() =>
            {
                ObservableCollection <Song> tempLibrary = GenerateLibrary.Create(selectedFolder);

                // Adds the songs contained within this new library to the library window.
                MusickLibrary.SongList.Union(tempLibrary).ToList();

                // Create library entry for the application to use and see.
                tempLibraryFile = GenerateLibrary.CreateLibraryEntry(tempLibrary, libraryName);

                // Serialize Library.
                JSON.SerializeLibrary(libraryName, tempLibrary);

                return(tempLibraryFile);
            }
                           );

            return(tempLibraryFile);
        }
Пример #21
0
        public MirEffect(int startIndex, int frameCount, TimeSpan frameDelay, LibraryFile file, int startLight, int endLight, Color lightColour)
        {
            StartIndex = startIndex;
            FrameCount = frameCount;
            Skip       = 10;

            StartTime  = CEnvir.Now;
            StartLight = startLight;
            EndLight   = endLight;

            Delays       = new TimeSpan[FrameCount];
            LightColours = new Color[FrameCount];
            for (int i = 0; i < frameCount; i++)
            {
                Delays[i] = frameDelay;
                //Light[i] = startLight + (endLight - startLight)/frameCount*i;
                LightColours[i] = lightColour;
            }

            CEnvir.LibraryList.TryGetValue(file, out Library);

            GameScene.Game.MapControl.Effects.Add(this);
        }
Пример #22
0
        public static LibraryFile Load(string[] directories)
        {
            var libraryFile = new LibraryFile();

            // Scan directories for files
            var files = directories.SelectMany(directory =>
            {
                return(Directory.GetFiles(directory, "*.mp3", SearchOption.AllDirectories));
            }).ToList();

            var entries = new ConcurrentBag <ILibraryEntry>();

            // Use TPL to create library entries
            Parallel.ForEach(files, /* new ParallelOptions() { MaxDegreeOfParallelism = 4 }, */ (file) =>
            {
                // Generate entry
                var entry = LibraryEntryLoader.Load(file);

                // Keep track of completed entries
                if (entry != null)
                {
                    entries.Add(entry);
                }
            });

            foreach (var entry in entries)
            {
                // Add entry to the library
                //
                // TODO: HANDLE INVALID ENTRIES
                // if (entry.IsValid)
                libraryFile.AddEntry(entry);
            }

            return(libraryFile);
        }
Пример #23
0
 public SelectableLibraryFile(LibraryFile file, Library lib)
 {
     this.m_TargetFile    = file;
     this.m_TargetLibrary = lib;
 }
Пример #24
0
 private void ScanDirectory <T>(string rootScanDirectory, string scanDirectory, Func <string, T> getObjectByMd5HashFunction,
                                List <LibraryFile> foundFiles, ref int found, ref int notFound, ref int errors)
     where T : LibgenObject
 {
     try
     {
         foreach (string filePath in Directory.EnumerateFiles(scanDirectory))
         {
             string relativeFilePath = filePath;
             if (relativeFilePath.StartsWith(rootScanDirectory, StringComparison.OrdinalIgnoreCase))
             {
                 relativeFilePath = relativeFilePath.Substring(rootScanDirectory.Length + 1);
             }
             string md5Hash;
             try
             {
                 using (MD5 md5 = MD5.Create())
                     using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
                     {
                         byte[] md5HashArray = md5.ComputeHash(fileStream);
                         md5Hash = BitConverter.ToString(md5HashArray).Replace("-", String.Empty).ToLowerInvariant();
                     }
             }
             catch (Exception exception)
             {
                 Logger.Debug($"Couldn't calculate MD5 hash for the file: {filePath}");
                 Console.WriteLine($"Couldn't calculate MD5 hash for the file: {filePath}");
                 Logger.Exception(exception);
                 errors++;
                 continue;
             }
             try
             {
                 T libgenObject = getObjectByMd5HashFunction(md5Hash);
                 if (libgenObject != null)
                 {
                     Console.WriteLine($"Found: {relativeFilePath}");
                     LibraryFile libraryFile = new LibraryFile
                     {
                         FilePath     = Path.Combine(rootScanDirectory, relativeFilePath),
                         ArchiveEntry = null,
                         ObjectType   = libgenObject.LibgenObjectType,
                         ObjectId     = libgenObject.Id
                     };
                     foundFiles.Add(libraryFile);
                     found++;
                 }
                 else
                 {
                     Console.WriteLine($"Not found: {relativeFilePath}");
                     notFound++;
                 }
             }
             catch (Exception exception)
             {
                 Logger.Debug($"Couldn't lookup the MD5 hash: {md5Hash} in the database for the file: {filePath}");
                 Console.WriteLine($"Error: couldn't lookup the MD5 hash: {md5Hash} in the database for the file: {filePath}");
                 Logger.Exception(exception);
                 errors++;
                 continue;
             }
         }
         foreach (string directoryPath in Directory.EnumerateDirectories(scanDirectory))
         {
             ScanDirectory(rootScanDirectory, directoryPath, getObjectByMd5HashFunction, foundFiles, ref found, ref notFound, ref errors);
         }
     }
     catch (Exception exception)
     {
         Logger.Exception(exception);
         Console.WriteLine($"Error while scanning the directory: {scanDirectory}");
         Console.WriteLine(exception.ToString());
         errors++;
     }
 }
Пример #25
0
        // If a local library (or libraries) exists, this will deserialise the file(s) into the songList object for the Library window to use.
        private async Task <string> DoLoadLibrary()
        {
            await Task.Run(() =>
            {
                foreach (var file in Directory.GetFiles(ConfigClass.appLibraryFolder))
                {
                    ObservableCollection <Song> tempLibrary = JSON.DeserializeLibrary(file);
                    LibraryFile tempLibFile = GenerateLibrary.CreateLibraryEntry(tempLibrary, file);
                    foreach (var song in tempLibrary.ToList())
                    {
                        if (!File.Exists(song.FileLocation))
                        {
                            tempLibrary.Remove(song);
                        }
                    }
                    foreach (var musicFile in Directory.GetFiles(tempLibFile.LibrarySource, "*", SearchOption.AllDirectories))
                    {
                        if (!tempLibrary.Any(p => p.FileLocation == musicFile))
                        {
                            if (file.Contains(".mp3") || file.Contains(".wma") || file.Contains(".wav"))
                            {
                                tempLibrary.Add(GenerateLibrary.GenerateSong(musicFile));
                            }
                        }
                    }
                    JSON.SerializeLibrary(file, tempLibrary);
                    try
                    {
                        foreach (var tempSong in tempLibrary)
                        {
                            tempSongList.Add(tempSong);
                        }

                        MusickSettings.libList.Add(tempLibFile); // Creates an entry for the local library file to be displayed and interracted with.
                    }


                    catch // If the object returned is unusable, it'll throw this error.
                    {
                        Dispatcher.Invoke(() =>
                        {
                            MusickError errorWin      = new MusickError();
                            errorWin.Owner            = this;
                            errorWin.lblError.Content = "One or more libraries are corrupt/missing - Restart to generate a new library";
                            if (errorWin.ShowDialog() == true)
                            {
                                foreach (var libFile in Directory.GetFiles(ConfigClass.appLibraryFolder))
                                {
                                    File.Delete(libFile);
                                }
                                this.Close();
                            }
                        }
                                          );
                    }
                }
            }
                           );

            MusickLibrary.SongList = tempSongList;
            lblStatus.Content      = "Library loaded...";
            await Task.Delay(729);

            return("");
        }
Пример #26
0
 /// <summary>
 /// TextEditorInfoオブジェクトの新しいインスタンスを初期化します。
 /// </summary>
 /// <param name="targetFile"></param>
 public TextEditorInfo(LibraryFile targetFile)
 {
     this.m_TargetFile = targetFile;
 }
Пример #27
0
        private void addFile(Project proj, WJPUser curUser, HttpPostedFileBase file, string FileType)
        {
            string needExt;
            if (FileType == "Source")
                needExt = ".java";
            else
            if (FileType == "Library")
                needExt = ".jar";
            else
                needExt = "";

            if (file != null && file.ContentLength > 0)
            {
                if (needExt == "" || Path.GetExtension(file.FileName) == needExt)
                {
                    string fileName = Path.GetFileName(file.FileName);
                    bool found = false;
                    if (FileType == "Source")
                        foreach (SourceFile f in proj.SourceFiles)
                        {
                            if (f.FileName == fileName) { found = true; break; }
                        }
                    else
                    if (FileType == "Library")
                        foreach (LibraryFile f in proj.LibraryFiles)
                        {
                            if (f.FileName == fileName) { found = true; break; }
                        }
                    else
                        foreach (DataFile f in proj.DataFiles)
                        {
                            if (f.FileName == fileName) { found = true; break; }
                        }

                    if (!found)
                    {
                        string path = Path.Combine(
                            Server.MapPath("~/Projects/") + proj.ProjectID + "/" + FileType, fileName);
                        file.SaveAs(path);

                        ProjectFile f;
                        if (FileType == "Source")
                            f = new SourceFile();
                        else
                        if (FileType == "Library")
                            f = new LibraryFile();
                        else
                            f = new DataFile();

                        f.Adder = curUser;
                        f.Modifier = curUser;
                        f.FileName = fileName;
                        f.Project = proj;

                        curUser.LastChangesDate = DateTime.Now;
                        curUser.LastProject = proj;

                        if (FileType == "Source")
                        {
                            curUser.SourcesAdded++;
                            proj.SourceFiles.Add( (SourceFile)f );
                            profileDB.SourceFiles.Add( (SourceFile)f );
                        } else

                        if (FileType == "Library")
                        {
                            curUser.LibrariesAdded++;
                            proj.LibraryFiles.Add((LibraryFile)f);
                            profileDB.LibraryFiles.Add((LibraryFile)f);
                        }
                        else
                        {
                            curUser.DataAdded++;
                            proj.DataFiles.Add((DataFile)f);
                            profileDB.DataFiles.Add((DataFile)f);
                        }

                        proj.LastChangesDate = DateTime.Now;
                        proj.LastChanger = curUser;

                        profileDB.Entry(curUser).State = EntityState.Modified;
                        profileDB.Entry(proj).State = EntityState.Modified;
                        profileDB.SaveChanges();
                    }
                    else
                        ViewBag.FileTypeError = "File with such name already exists";
                }
                else
                    ViewBag.FileTypeError = "Uploaded file isn't " + FileType + " file";
            }
        }
Пример #28
0
        static void Main(string[] args)
        {
            Console.WriteLine("Zak's Linker (early version...)");

            ZLink link = new ZLink();

            int argi = 0;

            while (argi < args.Length)
            {
                switch (args[argi])
                {
                case "--memory":
                    link.memsz = (int)link.NumberArg(args, ++argi);
                    break;

                case "--offset":
                    link.offset = (int)link.NumberArg(args, ++argi);
                    break;

                case "--limit":
                    link._limit = (int)link.NumberArg(args, ++argi);
                    break;

                case "--dump":
                    link.Finish();
                    byte[] data = new byte[link.GetLimit() - link.offset];
                    for (int i = 0; i < data.Length; i++)
                    {
                        data[i] = link.GetMemory().getU8((ulong)(link.offset + i), false);
                    }
                    File.WriteAllBytes(link.StringArg(args, ++argi), data);
                    break;

                case "--readable":
                    link._readable = true;
                    break;

                case "--writable":
                    link._writable = true;
                    break;

                case "--executable":
                    link._executable = true;
                    break;

                case "--align":
                    link.align = (int)link.NumberArg(args, ++argi);
                    break;

                case "--section":
                    link.GetLinker().setup(link.StringArg(args, ++argi), (ulong)link.offset, link._readable, link._writable, link._executable, (uint)link.align);
                    link._readable = link._writable = link._executable = false;
                    break;

                case "--help":
                case "--usage":
                case "-h":
                case "-u":
                    Usage();
                    return;

                default:
                    byte[]       fbytes = File.ReadAllBytes(args[argi]);
                    SimpleMemory fmem   = new SimpleMemory(fbytes);
                    LibraryFile  f      = new LibraryFile(args[argi], fmem);
                    //Dump(f);
                    link.GetLinker().add(f);
                    break;
                }
                argi++;
            }
        }