CmisSync.Lib.Utils.IsFilenameWorthSyncing C# (CSharp) Method

IsFilenameWorthSyncing() private static method

Check whether the filename is worth syncing or not. Files that are not worth syncing include temp files, locks, etc.
private static IsFilenameWorthSyncing ( string localDirectory, string filename ) : bool
localDirectory string
filename string
return bool
        private static bool IsFilenameWorthSyncing(string localDirectory, string filename)
        {
            if (null == filename)
            {
                return false;
            }

            filename = filename.ToLower();

            if (ignoredFilenames.Contains(filename) ||
                ignoredFilenamesRegex.IsMatch(filename))
            {
                Logger.DebugFormat("Skipping {0}: ignored file", filename);
                return false;
            }

            // Check filename extension if there is one.
            if (filename.Contains('.'))
            {
                string extension = filename.Split('.').Last();

                if (ignoredExtensions.Contains(extension))
                {
                    Logger.DebugFormat("Skipping {0}: ignored file extension", filename);
                    return false;
                }
            }

            // Check resulting file path length
            string fullPath = Path.Combine(localDirectory, filename);

            #if __COCOA__ || __MonoCS__
            // TODO Check filename length for OS X
            // * Max "FileName" length: 255 charactors.
            // * FileName encoding is UTF-16 (Modified NFD).

            #else
            // Get Path.MaxPath
            // It is not a public field so reflection is necessary.

			FieldInfo maxPathField = typeof(Path).GetField("MaxPath",
                BindingFlags.Static |
                BindingFlags.GetField |
                BindingFlags.NonPublic);

            if (fullPath.Length > (int)maxPathField.GetValue(null))
            {
                Logger.WarnFormat("Skipping {0}: path too long", fullPath);
                return false;
            }
            #endif

            return true;
        }