public bool MoveFileDown(C64Studio.Types.FileInfo File) { _LastError = ""; DirEntryLocation dirLocOrig = LocateDirEntry(File.StartTrack, File.StartSector); if (dirLocOrig == null) { return(false); } DirEntryLocation dirLocNext = null; if (!FindNextDirEntry(dirLocOrig, out dirLocNext)) { _LastError = "could not find next directory entry"; return(false); } Sector secOrig = Tracks[dirLocOrig.Track - 1].Sectors[dirLocOrig.Sector]; Sector secPrev = Tracks[dirLocNext.Track - 1].Sectors[dirLocNext.Sector]; // exchange dir entry content GR.Memory.ByteBuffer tempData = secOrig.Data.SubBuffer(0x20 * dirLocOrig.DirEntry + 2, 30); secPrev.Data.CopyTo(secOrig.Data, 0x20 * dirLocNext.DirEntry + 2, 30, 0x20 * dirLocOrig.DirEntry + 2); tempData.CopyTo(secPrev.Data, 0, 30, 0x20 * dirLocNext.DirEntry + 2); return(true); }
private void DeleteSelectedItems() { if (listFiles.SelectedItems.Count > 0) { if (System.Windows.Forms.MessageBox.Show("Do you really want to delete the selected files?", "Delete Files?", MessageBoxButtons.YesNo) == DialogResult.Yes) { bool deletedFile = false; foreach (ListViewItem item in listFiles.SelectedItems) { C64Studio.Types.FileInfo fileToDelete = (C64Studio.Types.FileInfo)item.Tag; if (m_Media != null) { if (m_Media.DeleteFile(fileToDelete.Filename)) { deletedFile = true; } } } if (deletedFile) { RefreshFileView(); SetModified(); UpdateStatusInfo(); } } } }
public override Types.FileInfo LoadFile(GR.Memory.ByteBuffer Filename) { _LastError = ""; int fileIndex = 0; Types.FileInfo fileInfo = new C64Studio.Types.FileInfo(); foreach (FileRecord file in FileRecords) { if (file.EntryType == 1) { if (file.Filename == Filename) { GR.Memory.ByteBuffer exportData = new GR.Memory.ByteBuffer(); exportData.AppendU16(file.StartAddress); exportData.Append(FileDatas[fileIndex]); fileInfo.Data = exportData; fileInfo.Filename = new GR.Memory.ByteBuffer(file.Filename); fileInfo.Type = C64Studio.Types.FileType.PRG; return(fileInfo); } } ++fileIndex; } _LastError = "file not found"; return(null); }
void itemRename_Click(object sender, EventArgs e) { bool renamedFile = false; foreach (ListViewItem item in listFiles.SelectedItems) { C64Studio.Types.FileInfo fileToRename = (C64Studio.Types.FileInfo)item.Tag; FormRenameFile formRename = new FormRenameFile(Core, fileToRename.Filename); if (formRename.ShowDialog() == DialogResult.OK) { if (m_Media.RenameFile(fileToRename.Filename, formRename.Filename)) { renamedFile = true; } } } if (renamedFile) { RefreshFileView(); SetModified(); UpdateStatusInfo(); } }
private void toolStripBtnMoveFileDown_Click(object sender, EventArgs e) { if (m_Media is Formats.D64) { Formats.D64 disk = m_Media as Formats.D64; C64Studio.Types.FileInfo fileToMove = (C64Studio.Types.FileInfo)listFiles.SelectedItems[0].Tag; int oldIndex = listFiles.SelectedIndices[0]; if (disk.MoveFileDown(fileToMove)) { RefreshFileView(); listFiles.SelectedIndices.Clear(); listFiles.SelectedIndices.Add(oldIndex + 1); SetModified(); UpdateStatusInfo(); } } else if (m_Media is Formats.D81) { Formats.D81 disk = m_Media as Formats.D81; C64Studio.Types.FileInfo fileToMove = (C64Studio.Types.FileInfo)listFiles.SelectedItems[0].Tag; int oldIndex = listFiles.SelectedIndices[0]; if (disk.MoveFileDown(fileToMove)) { RefreshFileView(); listFiles.SelectedIndices.Clear(); listFiles.SelectedIndices.Add(oldIndex + 1); SetModified(); UpdateStatusInfo(); } } }
private void UpdateStatusInfo() { if (m_Media == null) { saveToolStripMenuItem.Enabled = false; saveasToolStripMenuItem.Enabled = false; validateMediumToolStripMenuItem.Enabled = false; } else { saveToolStripMenuItem.Enabled = Modified; saveasToolStripMenuItem.Enabled = true; validateMediumToolStripMenuItem.Enabled = true; } if (listFiles.SelectedItems.Count == 0) { if ((m_Media is Formats.D64) || (m_Media is Formats.D81)) { statusFileManager.Text = m_Media.FreeSlots.ToString() + "/" + m_Media.Slots.ToString() + " blocks free"; return; } if (m_Media != null) { statusFileManager.Text = m_Media.FreeSlots.ToString() + "/" + m_Media.Slots.ToString() + " files free"; return; } statusFileManager.Text = "No media opened"; return; } C64Studio.Types.FileInfo file = (C64Studio.Types.FileInfo)listFiles.SelectedItems[0].Tag; statusFileManager.Text = Util.FilenameToUnicode(file.Filename) + " " + file.Blocks.ToString() + " blocks"; }
void OpenSelectedItemsInHexEditor() { foreach (ListViewItem item in listFiles.SelectedItems) { C64Studio.Types.FileInfo fileToExport = (C64Studio.Types.FileInfo)item.Tag; OpenInHexEditor(fileToExport); } }
void ExportSelectedItemsToBASIC() { foreach (ListViewItem item in listFiles.SelectedItems) { C64Studio.Types.FileInfo fileToExport = (C64Studio.Types.FileInfo)item.Tag; ExportToBASIC(fileToExport); } }
private void listFiles_MouseClick(object sender, MouseEventArgs e) { if ((e.Button != MouseButtons.Right) || (listFiles.SelectedItems.Count == 0)) { return; } System.Windows.Forms.ContextMenuStrip contextMenu = new System.Windows.Forms.ContextMenuStrip(); System.Windows.Forms.ToolStripMenuItem item = new System.Windows.Forms.ToolStripMenuItem("Export"); item.Tag = 0; contextMenu.Items.Add(item); System.Windows.Forms.ToolStripMenuItem subItem = new System.Windows.Forms.ToolStripMenuItem("Export to file"); subItem.Tag = 0; subItem.Click += new EventHandler(itemExport_Click); item.DropDownItems.Add(subItem); bool exportToBasicPossible = true; foreach (ListViewItem listItem in listFiles.SelectedItems) { C64Studio.Types.FileInfo fileInfo = (C64Studio.Types.FileInfo)listItem.Tag; if (fileInfo.Type != C64Studio.Types.FileType.PRG) { exportToBasicPossible = false; } } if (exportToBasicPossible) { subItem = new System.Windows.Forms.ToolStripMenuItem("Export to Basic code"); subItem.Tag = 0; subItem.Click += new EventHandler(itemExportToBasic_Click); item.DropDownItems.Add(subItem); } // view in Hex display item = new System.Windows.Forms.ToolStripMenuItem("View in Hex Editor"); item.Tag = 2; item.Click += new EventHandler(itemViewInHexEditor_Click); contextMenu.Items.Add(item); item = new System.Windows.Forms.ToolStripMenuItem("Rename"); item.Tag = 2; item.Click += new EventHandler(itemRename_Click); contextMenu.Items.Add(item); item = new System.Windows.Forms.ToolStripMenuItem("Delete"); item.Tag = 1; item.Click += new EventHandler(itemDelete_Click); contextMenu.Items.Add(item); contextMenu.Show(listFiles.PointToScreen(e.Location)); }
public override List <C64Studio.Types.FileInfo> Files() { _LastError = ""; List <C64Studio.Types.FileInfo> fileList = new List <C64Studio.Types.FileInfo>(); C64Studio.Types.FileInfo info = new C64Studio.Types.FileInfo(); info.Filename = Filename; info.Blocks = (int)Data.Length / 254; info.Type = C64Studio.Types.FileType.PRG; fileList.Add(info); return(fileList); }
void OpenInHexEditor(C64Studio.Types.FileInfo FileToImport) { C64Studio.Types.FileInfo fileInfo = null; if (m_Media != null) { fileInfo = m_Media.LoadFile(FileToImport.Filename); } if (fileInfo != null) { BinaryDisplay display = new BinaryDisplay(Core, fileInfo.Data, false, true); display.Show(Core.MainForm.panelMain, DockState.Float); } }
bool LocateFile(GR.Memory.ByteBuffer Filename, out Location FileLocation, out Types.FileInfo FileInfo) { _LastError = ""; FileLocation = null; FileInfo = null; Location curLoc = new Location(TRACK_DIRECTORY, SECTOR_DIRECTORY); bool endFound = false; while (!endFound) { Sector sec = Tracks[curLoc.Track - 1].Sectors[curLoc.Sector]; for (int i = 0; i < 8; ++i) { int fileTrack = sec.Data.ByteAt(0x20 * i + 3); int fileSector = sec.Data.ByteAt(0x20 * i + 4); if (fileTrack != 0) { // valid entry? if (sec.Data.ByteAt(0x20 * i + 2) != (byte)C64Studio.Types.FileType.SCRATCHED) { GR.Memory.ByteBuffer filename = sec.Data.SubBuffer(0x20 * i + 5, 16); if (Filename.Compare(filename) == 0) { FileLocation = new Location(fileTrack, fileSector); FileInfo = new C64Studio.Types.FileInfo(); FileInfo.Filename = new GR.Memory.ByteBuffer(filename); FileInfo.StartSector = fileSector; FileInfo.StartTrack = fileTrack; FileInfo.Type = (C64Studio.Types.FileType)sec.Data.ByteAt(0x20 * i + 2); FileInfo.Blocks = 0; return(true); } } } } curLoc = sec.NextLocation; if (curLoc == null) { // track = 0 marks last directory entry break; } } _LastError = "Could not locate directory entry for file"; return(false); }
public override Types.FileInfo LoadFile(GR.Memory.ByteBuffer Filename) { _LastError = ""; if (Filename.Compare(this.Filename) != 0) { _LastError = "file not found"; return(null); } Types.FileInfo fileInfo = new C64Studio.Types.FileInfo(); fileInfo.Type = C64Studio.Types.FileType.PRG; fileInfo.Data = new GR.Memory.ByteBuffer(Data); fileInfo.Filename = new GR.Memory.ByteBuffer(Filename); return(fileInfo); }
public override List <C64Studio.Types.FileInfo> Files() { _LastError = ""; List <C64Studio.Types.FileInfo> files = new List <C64Studio.Types.FileInfo>(); int curTrack = TRACK_DIRECTORY; int curSector = SECTOR_DIRECTORY; bool endFound = false; if (Tracks.Count < curTrack - 1) { return(files); } while (!endFound) { Sector sec = Tracks[curTrack - 1].Sectors[curSector]; for (int i = 0; i < 8; ++i) { int fileTrack = sec.Data.ByteAt(0x20 * i + 3); int fileSector = sec.Data.ByteAt(0x20 * i + 4); if (sec.Data.ByteAt(0x20 * i + 2) != (byte)C64Studio.Types.FileType.SCRATCHED) { // valid entry? C64Studio.Types.FileInfo info = new C64Studio.Types.FileInfo(); info.Filename = sec.Data.SubBuffer(0x20 * i + 5, 16); info.StartSector = fileSector; info.StartTrack = fileTrack; info.Type = (C64Studio.Types.FileType)sec.Data.ByteAt(0x20 * i + 2); info.Blocks = sec.Data.ByteAt(0x20 * i + 30) + 256 * sec.Data.ByteAt(0x20 * i + 31); files.Add(info); } } curTrack = sec.Data.ByteAt(0); curSector = sec.Data.ByteAt(1); if (curTrack == 0) { // track = 0 marks last directory entry endFound = true; } } return(files); }
public override List <C64Studio.Types.FileInfo> Files() { _LastError = ""; List <C64Studio.Types.FileInfo> files = new List <C64Studio.Types.FileInfo>(); foreach (FileEntry file in TapFiles) { C64Studio.Types.FileInfo info = new C64Studio.Types.FileInfo(); info.Filename = new GR.Memory.ByteBuffer(file.Filename); info.Blocks = (int)(file.Data.Length + 253) / 254; info.Type = C64Studio.Types.FileType.PRG; files.Add(info); } return(files); }
public override Types.FileInfo LoadFile(GR.Memory.ByteBuffer Filename) { _LastError = ""; Types.FileInfo fileInfo = new C64Studio.Types.FileInfo(); foreach (FileEntry file in TapFiles) { if (file.Filename.Compare(Filename) == 0) { fileInfo.Filename = new GR.Memory.ByteBuffer(file.Filename); fileInfo.Data = file.Data; fileInfo.Type = C64Studio.Types.FileType.PRG; return(fileInfo); } } _LastError = "file not found"; return(null); }
public override List <C64Studio.Types.FileInfo> Files() { _LastError = ""; List <C64Studio.Types.FileInfo> files = new List <C64Studio.Types.FileInfo>(); foreach (FileRecord file in FileRecords) { if (file.EntryType == 1) { C64Studio.Types.FileInfo info = new C64Studio.Types.FileInfo(); info.Filename = file.Filename; info.Blocks = (file.EndAddress - file.StartAddress) / 254 + 1; info.Type = file.C64FileType; files.Add(info); } } return(files); }
public List <string> CheckForErrors() { List <string> errors = new List <string>(); GR.Collections.Map <GR.Generic.Tupel <int, int>, GR.Memory.ByteBuffer> usedSectors = new GR.Collections.Map <GR.Generic.Tupel <int, int>, GR.Memory.ByteBuffer>(); int curTrack = TRACK_DIRECTORY; int curSector = SECTOR_DIRECTORY; bool endFound = false; while (!endFound) { Sector sec = Tracks[curTrack - 1].Sectors[curSector]; for (int i = 0; i < 8; ++i) { int fileTrack = sec.Data.ByteAt(0x20 * i + 3); int fileSector = sec.Data.ByteAt(0x20 * i + 4); if (sec.Data.ByteAt(0x20 * i + 2) != (byte)C64Studio.Types.FileType.SCRATCHED) { // valid entry? C64Studio.Types.FileInfo info = new C64Studio.Types.FileInfo(); FollowChain(fileTrack, fileSector, usedSectors, info.Filename, errors); } } curTrack = sec.Data.ByteAt(0); curSector = sec.Data.ByteAt(1); if (curTrack == 0) { // track = 0 marks last directory entry endFound = true; } } return(errors); }
private void ExportToBASIC(Types.FileInfo fileToExport) { C64Studio.Types.FileInfo fileInfo = null; if (m_Media != null) { fileInfo = m_Media.LoadFile(fileToExport.Filename); } if (fileInfo != null) { if (fileInfo.Data.Length >= 2) { //if ( startAddress == 0x0801 ) { // can only load from that address List <string> lines; // trunc load address if (C64Studio.Parser.BasicFileParser.Disassemble(fileInfo.Data.SubBuffer(2), out lines)) { BaseDocument document = new SourceBasicEx(Core); document.ShowHint = DockState.Document; document.Core = Core; document.Show(Core.MainForm.panelMain); StringBuilder sb = new StringBuilder(); foreach (string line in lines) { sb.AppendLine(line); } document.FillContent(sb.ToString()); } } } } }
private void listFiles_SelectedIndexChanged(object sender, EventArgs e) { if (listFiles.SelectedIndices.Count == 0) { toolStripBtnOpenHex.Enabled = false; toolStripBtnOpenBASIC.Enabled = false; toolStripBtnExportToFile.Enabled = false; } else { toolStripBtnOpenHex.Enabled = true; toolStripBtnExportToFile.Enabled = true; bool exportToBasicPossible = true; foreach (ListViewItem listItem in listFiles.SelectedItems) { C64Studio.Types.FileInfo fileInfo = (C64Studio.Types.FileInfo)listItem.Tag; if (fileInfo.Type != C64Studio.Types.FileType.PRG) { exportToBasicPossible = false; break; } } toolStripBtnOpenBASIC.Enabled = exportToBasicPossible; } if ((listFiles.Items.Count <= 1) || (listFiles.SelectedIndices.Count == 0)) { toolStripBtnMoveFileDown.Enabled = false; toolStripBtnMoveFileUp.Enabled = false; return; } toolStripBtnMoveFileUp.Enabled = (listFiles.SelectedIndices[0] > 0); toolStripBtnMoveFileDown.Enabled = (listFiles.SelectedIndices[0] + 1 < listFiles.Items.Count); }
private void ExportSelectedItems() { foreach (ListViewItem item in listFiles.SelectedItems) { C64Studio.Types.FileInfo fileToExport = (C64Studio.Types.FileInfo)item.Tag; C64Studio.Types.FileInfo fileInfo = null; if (m_Media != null) { fileInfo = m_Media.LoadFile(fileToExport.Filename); } if (fileInfo != null) { System.Windows.Forms.SaveFileDialog saveDlg = new System.Windows.Forms.SaveFileDialog(); string readableFilename = Util.FilenameToReadableUnicode(fileToExport.Filename).TrimEnd(); char[] invalidChars = System.IO.Path.GetInvalidFileNameChars(); foreach (char invChar in invalidChars) { readableFilename = readableFilename.Replace(invChar, '_'); } saveDlg.Title = "Select target file name for " + readableFilename; saveDlg.Filter = "All Files|*.*"; saveDlg.FileName = readableFilename; if (fileToExport.Type == C64Studio.Types.FileType.PRG) { saveDlg.FileName += ".prg"; } if (saveDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { GR.IO.File.WriteAllBytes(saveDlg.FileName, fileInfo.Data); } } } }
public int Handle(string[] args) { if (args.Length == 0) { System.Console.WriteLine("MediaManager V" + System.Windows.Forms.Application.ProductVersion); System.Console.WriteLine(""); System.Console.WriteLine("Call with mediamanager"); System.Console.WriteLine(" [-d64 <disk image>]"); System.Console.WriteLine(" [-t64 <tape file>]"); System.Console.WriteLine(" [-import <file name>[,load address]]"); System.Console.WriteLine(" [-export <file name>]"); System.Console.WriteLine(" [-rename <file name>]"); System.Console.WriteLine(" [-renameto <file name>]"); System.Console.WriteLine(" [-delete <file name>]"); System.Console.WriteLine(" [-listfiles]"); System.Console.WriteLine(""); System.Console.WriteLine("load address can be given as decimal, hexadecimal (prefix $ or 0x). If load address is given it is prepended to the import file data."); System.Console.WriteLine("The filename given to -renameto is used for the actually written file when exporting"); System.Console.WriteLine("The filename given to -renameto is used for the file info entry when importing"); return(1); } bool expectingParameter = false; string expectingParameterName = ""; string methodToUse = ""; GR.Collections.Map <string, string> paramMap = new GR.Collections.Map <string, string>(); for (int i = 0; i < args.Length; ++i) { if (expectingParameter) { paramMap[expectingParameterName] = args[i]; expectingParameter = false; } else if ((args[i].ToUpper() == "-D64") || (args[i].ToUpper() == "-T64") || (args[i].ToUpper() == "-IMPORT") || (args[i].ToUpper() == "-DELETE") || (args[i].ToUpper() == "-RENAME") || (args[i].ToUpper() == "-RENAMETO") || (args[i].ToUpper() == "-EXPORT")) { expectingParameter = true; expectingParameterName = args[i].ToUpper(); if ((expectingParameterName == "-IMPORT") || (expectingParameterName == "-EXPORT") || (expectingParameterName == "-DELETE") || (expectingParameterName == "-RENAME")) { methodToUse = expectingParameterName; } } else if (args[i].ToUpper() == "-LISTFILES") { paramMap[args[i].ToUpper()] = ""; methodToUse = args[i].ToUpper(); } else { System.Console.Error.WriteLine("Unsupported option " + args[i]); return(1); } } if (expectingParameter) { System.Console.Error.WriteLine("Missing value for " + expectingParameterName); return(1); } // do we have a container? if ((!paramMap.ContainsKey("-D64")) && (!paramMap.ContainsKey("-T64"))) { System.Console.Error.WriteLine("Missing medium"); return(1); } // load C64Studio.Formats.MediaFormat medium = null; string mediumFilename = ""; if (paramMap.ContainsKey("-D64")) { medium = new C64Studio.Formats.D64(); mediumFilename = paramMap["-D64"]; } else if (paramMap.ContainsKey("-T64")) { medium = new C64Studio.Formats.T64(); mediumFilename = paramMap["-T64"]; } if (!medium.Load(mediumFilename)) { System.Console.WriteLine("No image found, start empty"); medium.CreateEmptyMedia(); } // handle command if (methodToUse == "-LISTFILES") { List <C64Studio.Types.FileInfo> files = medium.Files(); foreach (C64Studio.Types.FileInfo file in files) { string filename = C64Studio.Util.FilenameToReadableUnicode(file.Filename); filename = filename.PadRight(16); System.Console.WriteLine("\"" + filename + "\" " + file.Blocks + " blocks " + file.Type.ToString() + " " + file.Filename); } System.Console.WriteLine(files.Count + " files"); } else if (methodToUse == "-EXPORT") { C64Studio.Types.FileInfo fileInfo = medium.LoadFile(C64Studio.Util.ToFilename(paramMap["-EXPORT"])); if (fileInfo != null) { string outputFilename = paramMap["-EXPORT"]; if (paramMap.ContainsKey("-RENAMETO")) { outputFilename = paramMap["-RENAMETO"]; } GR.IO.File.WriteAllBytes(outputFilename, fileInfo.Data); System.Console.WriteLine("File " + paramMap["-EXPORT"] + " exported"); } else { System.Console.Error.WriteLine("File " + paramMap["-EXPORT"] + " not found in medium"); } } else if (methodToUse == "-DELETE") { C64Studio.Types.FileInfo fileInfo = medium.LoadFile(C64Studio.Util.ToFilename(paramMap["-DELETE"])); if (fileInfo != null) { if (!medium.DeleteFile(C64Studio.Util.ToFilename(paramMap["-DELETE"]))) { System.Console.Error.WriteLine("File could not be deleted: " + medium.LastError); } else { System.Console.WriteLine("File deleted"); medium.Save(mediumFilename); } } else { System.Console.Error.WriteLine("File " + paramMap["-DELETE"] + " not found in medium"); } } else if (methodToUse == "-IMPORT") { bool addAddress = false; ushort startAddress = 0x0801; string filenameImport = paramMap["-IMPORT"]; string[] paramList = filenameImport.Split(','); if ((paramList.Length == 0) || (paramList.Length > 2)) { System.Console.Error.WriteLine("Invalid parameter value for -IMPORT"); return(1); } filenameImport = paramList[0]; if (paramList.Length >= 2) { addAddress = true; string loadAdressPart = paramList[1]; if (loadAdressPart.StartsWith("0x")) { ushort.TryParse(loadAdressPart.Substring(2), System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out startAddress); } else if (loadAdressPart.StartsWith("$")) { ushort.TryParse(loadAdressPart.Substring(1), System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out startAddress); } else { ushort.TryParse(loadAdressPart, out startAddress); } } GR.Memory.ByteBuffer data = GR.IO.File.ReadAllBytes(filenameImport); if (data == null) { System.Console.Error.WriteLine("Could not read file " + paramMap["-IMPORT"]); return(1); } // insert load address if (addAddress) { GR.Memory.ByteBuffer newData = new GR.Memory.ByteBuffer(2 + data.Length); newData.SetU16At(0, startAddress); data.CopyTo(newData, 0, (int)data.Length, 2); data = newData; } if (paramMap.ContainsKey("-RENAMETO")) { filenameImport = paramMap["-RENAMETO"]; } if (!medium.WriteFile(C64Studio.Util.ToFilename(filenameImport), data, C64Studio.Types.FileType.PRG)) { System.Console.Error.WriteLine("Could not write file to medium: " + medium.LastError); return(1); } System.Console.WriteLine("File imported"); medium.Save(mediumFilename); } else if (methodToUse == "-RENAME") { if (!paramMap.ContainsKey("-RENAMETO")) { System.Console.Error.WriteLine("Missing -renameto directive"); return(1); } string origFilename = paramMap["-RENAME"]; GR.Memory.ByteBuffer origFilenameBuffer = C64Studio.Util.ToFilename(origFilename); string targetFilename = paramMap["-RENAMETO"]; GR.Memory.ByteBuffer targetFilenameBuffer = C64Studio.Util.ToFilename(targetFilename); if (!medium.RenameFile(origFilenameBuffer, targetFilenameBuffer)) { System.Console.Error.WriteLine("Failed to rename file"); return(1); } System.Console.WriteLine("File renamed"); medium.Save(mediumFilename); } else { System.Console.Error.WriteLine("Unsupported method " + methodToUse); } return(0); }