static void Main(string[] args) { // Registering handler for unhandled exceptions AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler; // Fetching global configuration var general = new ConfigurationGeneral(); general.LoadGeneral(Globals.SettingsFile); // Fetching data from command-line arguments var argumentdata = new ArgumentData(args); // Create temporary directory for copied files. Common.CreateTemporaryDirectory(); // List of URLs to be copied to clipboard. Links links = new Links(); for (int i = argumentdata.Files.Count - 1; i >= 0; i--) { var filename = Path.GetFileName(argumentdata.Files[i]); var currentclipboardurl = Common.ParseTemplate(argumentdata.Profile.ClipboardURL).Replace("%file%", HttpUtility.UrlPathEncode(filename)); links.Add(currentclipboardurl); var newfilename = Path.Combine(Globals.TemporaryDirectory, filename); File.Copy(argumentdata.Files[i], newfilename, true); // TODO: touch or not? Store this preference in profile configuration System.IO.File.SetLastWriteTimeUtc(newfilename, DateTime.UtcNow.AddSeconds(i)); } if (Directory.GetFileSystemEntries(Globals.TemporaryDirectory).Length > 0) { Upload.UploadFiles(argumentdata.Profile, Globals.TemporaryDirectory, argumentdata.Profile.RemoteDir); links.ToClipboard(argumentdata.Profile); Common.PlaySound(argumentdata.Profile); } Common.DeleteTemporaryDirectory(); Environment.Exit(0); }