Example #1
0
        /// <summary>
        /// Converts <see cref="Operation"/> to a well-formed string that can be used as command line input
        /// </summary>
        public string ToCommandLine(PathTable pathTable, bool escapeResult = false)
        {
            PathTable = pathTable;

            StringBuilder sb = new StringBuilder();

            sb.Append(((int)OpType).ToString(System.Globalization.CultureInfo.CurrentCulture));

            var orderOfArgs = new string[]
            {
                Path.IsValid?FileOrDirectoryToString(Path) : null,
                    Content,
                    LinkPath.IsValid ? FileOrDirectoryToString(LinkPath) : null,
                    SymLinkFlag.ToString(),
                    AdditionalArgs
                    // The process as a test executable does not use the DoNotInfer field
            };

            foreach (var arg in orderOfArgs)
            {
                sb.Append(OperationArgsDelimiter);
                if (arg != null)
                {
                    sb.Append(arg.ToString());
                }
            }

            return(escapeResult
                ? CommandLineEscaping.EscapeAsCommandLineWord(sb.ToString())
                : sb.ToString());
        }
Example #2
0
        public static bool IsSymLink(string path,
                                     SymLinkFlag dwFlags)
        {
            switch (dwFlags)
            {
            case SymLinkFlag.File:
                return(new FileInfo(path).Attributes.HasFlag(FileAttributes.ReparsePoint));

            case SymLinkFlag.Directory:
                return(new DirectoryInfo(path).Attributes.HasFlag(FileAttributes.ReparsePoint));

            default:
                throw new ArgumentOutOfRangeException(nameof(dwFlags), dwFlags, null);
            }
        }
Example #3
0
 public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName,
                                              SymLinkFlag dwFlags);
Example #4
0
 public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, SymLinkFlag dwFlags);