Convert TimeZones.cs to C# script
authorRobert Corrigan <corrigan@rohrer.com>
Thu, 5 Oct 2017 00:18:38 +0000 (20:18 -0400)
committerRobert Corrigan <corrigan@rohrer.com>
Thu, 5 Oct 2017 00:18:38 +0000 (20:18 -0400)
scripts/TimeZones.cs [deleted file]
scripts/TimeZones.csx [new file with mode: 0644]

diff --git a/scripts/TimeZones.cs b/scripts/TimeZones.cs
deleted file mode 100644 (file)
index 33459ba..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-/**\r
- * FreeRDP: A Remote Desktop Protocol Implementation\r
- * Time Zone Redirection Table Generator\r
- *\r
- * Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-using System;\r
-using System.IO;\r
-using System.Globalization;\r
-using System.Collections.ObjectModel;\r
-\r
-namespace TimeZones\r
-{\r
-    struct SYSTEM_TIME_ENTRY\r
-    {\r
-        public UInt16 wYear;\r
-        public UInt16 wMonth;\r
-        public UInt16 wDayOfWeek;\r
-        public UInt16 wDay;\r
-        public UInt16 wHour;\r
-        public UInt16 wMinute;\r
-        public UInt16 wSecond;\r
-        public UInt16 wMilliseconds;\r
-    };\r
-\r
-    struct TIME_ZONE_RULE_ENTRY\r
-    {\r
-        public long TicksStart;\r
-        public long TicksEnd;\r
-        public Int32 DaylightDelta;\r
-        public SYSTEM_TIME_ENTRY StandardDate;\r
-        public SYSTEM_TIME_ENTRY DaylightDate;\r
-    };\r
-\r
-    struct TIME_ZONE_ENTRY\r
-    {\r
-        public string Id;\r
-        public Int32 Bias;\r
-        public bool SupportsDST;\r
-        public string DisplayName;\r
-        public string StandardName;\r
-        public string DaylightName;\r
-        public string RuleTable;\r
-        public UInt32 RuleTableCount;\r
-    };\r
-\r
-    class TimeZones\r
-    {\r
-        static void Main(string[] args)\r
-        {\r
-            int i;\r
-            UInt32 index;\r
-            const string file = @"TimeZones.txt";\r
-            TimeZoneInfo.AdjustmentRule[] rules;\r
-            StreamWriter stream = new StreamWriter(file, false);\r
-            ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();\r
-\r
-            stream.WriteLine();\r
-\r
-            stream.WriteLine("struct _TIME_ZONE_RULE_ENTRY");\r
-            stream.WriteLine("{");\r
-            stream.WriteLine("\tUINT64 TicksStart;");\r
-            stream.WriteLine("\tUINT64 TicksEnd;");\r
-            stream.WriteLine("\tINT32 DaylightDelta;");\r
-            stream.WriteLine("\tSYSTEMTIME StandardDate;");\r
-            stream.WriteLine("\tSYSTEMTIME DaylightDate;");\r
-            stream.WriteLine("};");\r
-            stream.WriteLine("typedef struct _TIME_ZONE_RULE_ENTRY TIME_ZONE_RULE_ENTRY;");\r
-            stream.WriteLine();\r
-\r
-            stream.WriteLine("struct _TIME_ZONE_ENTRY");\r
-            stream.WriteLine("{");\r
-            stream.WriteLine("\tconst char* Id;");\r
-            stream.WriteLine("\tINT32 Bias;");\r
-            stream.WriteLine("\tBOOL SupportsDST;");\r
-            stream.WriteLine("\tconst char* DisplayName;");\r
-            stream.WriteLine("\tconst char* StandardName;");\r
-            stream.WriteLine("\tconst char* DaylightName;");\r
-            stream.WriteLine("\tTIME_ZONE_RULE_ENTRY* RuleTable;");\r
-            stream.WriteLine("\tUINT32 RuleTableCount;");\r
-            stream.WriteLine("};");\r
-            stream.WriteLine("typedef struct _TIME_ZONE_ENTRY TIME_ZONE_ENTRY;");\r
-            stream.WriteLine();\r
-\r
-            index = 0;\r
-\r
-            foreach (TimeZoneInfo timeZone in timeZones)\r
-            {\r
-                rules = timeZone.GetAdjustmentRules();\r
-\r
-                if ((!timeZone.SupportsDaylightSavingTime) || (rules.Length < 1))\r
-                {\r
-                    index++;\r
-                    continue;\r
-                }\r
-\r
-                stream.WriteLine("static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_{0}[] =", index);\r
-                stream.WriteLine("{");\r
-\r
-                i = 0;\r
-                foreach (TimeZoneInfo.AdjustmentRule rule in rules)\r
-                {\r
-                    DateTime time;\r
-                    TIME_ZONE_RULE_ENTRY tzr;\r
-                    TimeZoneInfo.TransitionTime transition;\r
-\r
-                    tzr.TicksStart = rule.DateEnd.ToUniversalTime().Ticks;\r
-                    tzr.TicksEnd = rule.DateStart.ToUniversalTime().Ticks;\r
-                    tzr.DaylightDelta = (Int32)rule.DaylightDelta.TotalMinutes;\r
-\r
-                    transition = rule.DaylightTransitionEnd;\r
-                    time = transition.TimeOfDay;\r
-\r
-                    tzr.StandardDate.wYear = (UInt16)0;\r
-                    tzr.StandardDate.wMonth = (UInt16)transition.Month;\r
-                    tzr.StandardDate.wDayOfWeek = (UInt16)transition.DayOfWeek;\r
-                    tzr.StandardDate.wDay = (UInt16)transition.Week;\r
-                    tzr.StandardDate.wHour = (UInt16)time.Hour;\r
-                    tzr.StandardDate.wMinute = (UInt16)time.Minute;\r
-                    tzr.StandardDate.wSecond = (UInt16)time.Second;\r
-                    tzr.StandardDate.wMilliseconds = (UInt16)time.Millisecond;\r
-\r
-                    transition = rule.DaylightTransitionStart;\r
-                    time = transition.TimeOfDay;\r
-\r
-                    tzr.DaylightDate.wYear = (UInt16)0;\r
-                    tzr.DaylightDate.wMonth = (UInt16)transition.Month;\r
-                    tzr.DaylightDate.wDayOfWeek = (UInt16)transition.DayOfWeek;\r
-                    tzr.DaylightDate.wDay = (UInt16)transition.Week;\r
-                    tzr.DaylightDate.wHour = (UInt16)time.Hour;\r
-                    tzr.DaylightDate.wMinute = (UInt16)time.Minute;\r
-                    tzr.DaylightDate.wSecond = (UInt16)time.Second;\r
-                    tzr.DaylightDate.wMilliseconds = (UInt16)time.Millisecond;\r
-\r
-                    stream.Write("\t{");\r
-                    stream.Write(" {0}ULL, {1}ULL, {2},", tzr.TicksStart, tzr.TicksEnd, tzr.DaylightDelta);\r
-\r
-                    stream.Write(" { ");\r
-                    stream.Write("{0}, {1}, {2}, {3}, {4}, {5}",\r
-                        tzr.StandardDate.wYear, tzr.StandardDate.wMonth, tzr.StandardDate.wDayOfWeek,\r
-                        tzr.StandardDate.wDay, tzr.StandardDate.wHour, tzr.StandardDate.wMinute,\r
-                        tzr.StandardDate.wSecond, tzr.StandardDate.wMilliseconds);\r
-                    stream.Write(" }, ");\r
-\r
-                    stream.Write("{ ");\r
-                    stream.Write("{0}, {1}, {2}, {3}, {4}, {5}",\r
-                        tzr.DaylightDate.wYear, tzr.DaylightDate.wMonth, tzr.DaylightDate.wDayOfWeek,\r
-                        tzr.DaylightDate.wDay, tzr.DaylightDate.wHour, tzr.DaylightDate.wMinute,\r
-                        tzr.DaylightDate.wSecond, tzr.DaylightDate.wMilliseconds);\r
-                    stream.Write(" },");\r
-\r
-                    if (++i < rules.Length)\r
-                        stream.WriteLine(" },");\r
-                    else\r
-                        stream.WriteLine(" }");\r
-                }\r
-\r
-                stream.WriteLine("};");\r
-                stream.WriteLine();\r
-                index++;\r
-            }\r
-\r
-            index = 0;\r
-            stream.WriteLine("static const TIME_ZONE_ENTRY TimeZoneTable[] =");\r
-            stream.WriteLine("{");\r
-\r
-            foreach (TimeZoneInfo timeZone in timeZones)\r
-            {\r
-                TIME_ZONE_ENTRY tz;\r
-                TimeSpan offset = timeZone.BaseUtcOffset;\r
-\r
-                rules = timeZone.GetAdjustmentRules();\r
-\r
-                tz.Id = timeZone.Id;\r
-               tz.Bias = -(Int32)offset.TotalMinutes;\r
-\r
-                tz.SupportsDST = timeZone.SupportsDaylightSavingTime;\r
-\r
-                tz.DisplayName = timeZone.DisplayName;\r
-                tz.StandardName = timeZone.StandardName;\r
-                tz.DaylightName = timeZone.DaylightName;\r
-\r
-                if ((!tz.SupportsDST) || (rules.Length < 1))\r
-                {\r
-                    tz.RuleTableCount = 0;\r
-                    tz.RuleTable = "NULL";\r
-                }\r
-                else\r
-                {\r
-                    tz.RuleTableCount = (UInt32)rules.Length;\r
-                    tz.RuleTable = "&TimeZoneRuleTable_" + index;\r
-                    tz.RuleTable = "(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_" + index;\r
-                }\r
-\r
-                stream.WriteLine("\t{");\r
-\r
-                stream.WriteLine("\t\t\"{0}\", {1}, {2}, \"{3}\",",\r
-                    tz.Id, tz.Bias, tz.SupportsDST ? "TRUE" : "FALSE", tz.DisplayName);\r
-\r
-                stream.WriteLine("\t\t\"{0}\", \"{1}\",", tz.StandardName, tz.DaylightName);\r
-                stream.WriteLine("\t\t{0}, {1}", tz.RuleTable, tz.RuleTableCount);\r
-\r
-                index++;\r
-\r
-                if ((int)index < timeZones.Count)\r
-                    stream.WriteLine("\t},");\r
-                else\r
-                    stream.WriteLine("\t}");\r
-            }\r
-            stream.WriteLine("};");\r
-            stream.WriteLine();\r
-\r
-            stream.Close();\r
-        }\r
-    }\r
-}\r
-\r
diff --git a/scripts/TimeZones.csx b/scripts/TimeZones.csx
new file mode 100644 (file)
index 0000000..c0dbfd9
--- /dev/null
@@ -0,0 +1,221 @@
+/**
+ * FreeRDP: A Remote Desktop Protocol Implementation
+ * Time Zone Redirection Table Generator
+ *
+ * Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using System.Globalization;
+using System.Collections.ObjectModel;
+
+struct SYSTEM_TIME_ENTRY
+{
+    public UInt16 wYear;
+    public UInt16 wMonth;
+    public UInt16 wDayOfWeek;
+    public UInt16 wDay;
+    public UInt16 wHour;
+    public UInt16 wMinute;
+    public UInt16 wSecond;
+    public UInt16 wMilliseconds;
+};
+
+struct TIME_ZONE_RULE_ENTRY
+{
+    public long TicksStart;
+    public long TicksEnd;
+    public Int32 DaylightDelta;
+    public SYSTEM_TIME_ENTRY StandardDate;
+    public SYSTEM_TIME_ENTRY DaylightDate;
+};
+
+struct TIME_ZONE_ENTRY
+{
+    public string Id;
+    public Int32 Bias;
+    public bool SupportsDST;
+    public string DisplayName;
+    public string StandardName;
+    public string DaylightName;
+    public string RuleTable;
+    public UInt32 RuleTableCount;
+};
+
+int i;
+UInt32 index;
+const string file = @"TimeZones.txt";
+TimeZoneInfo.AdjustmentRule[] rules;
+StreamWriter stream = new StreamWriter(file, false);
+ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();
+
+stream.WriteLine();
+
+stream.WriteLine("struct _TIME_ZONE_RULE_ENTRY");
+stream.WriteLine("{");
+stream.WriteLine("\tUINT64 TicksStart;");
+stream.WriteLine("\tUINT64 TicksEnd;");
+stream.WriteLine("\tINT32 DaylightDelta;");
+stream.WriteLine("\tSYSTEMTIME StandardDate;");
+stream.WriteLine("\tSYSTEMTIME DaylightDate;");
+stream.WriteLine("};");
+stream.WriteLine("typedef struct _TIME_ZONE_RULE_ENTRY TIME_ZONE_RULE_ENTRY;");
+stream.WriteLine();
+
+stream.WriteLine("struct _TIME_ZONE_ENTRY");
+stream.WriteLine("{");
+stream.WriteLine("\tconst char* Id;");
+stream.WriteLine("\tINT32 Bias;");
+stream.WriteLine("\tBOOL SupportsDST;");
+stream.WriteLine("\tconst char* DisplayName;");
+stream.WriteLine("\tconst char* StandardName;");
+stream.WriteLine("\tconst char* DaylightName;");
+stream.WriteLine("\tTIME_ZONE_RULE_ENTRY* RuleTable;");
+stream.WriteLine("\tUINT32 RuleTableCount;");
+stream.WriteLine("};");
+stream.WriteLine("typedef struct _TIME_ZONE_ENTRY TIME_ZONE_ENTRY;");
+stream.WriteLine();
+
+index = 0;
+
+foreach (TimeZoneInfo timeZone in timeZones)
+{
+    rules = timeZone.GetAdjustmentRules();
+
+    if ((!timeZone.SupportsDaylightSavingTime) || (rules.Length < 1))
+    {
+        index++;
+        continue;
+    }
+
+    stream.WriteLine("static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_{0}[] =", index);
+    stream.WriteLine("{");
+
+    i = 0;
+    foreach (TimeZoneInfo.AdjustmentRule rule in rules)
+    {
+        DateTime time;
+        TIME_ZONE_RULE_ENTRY tzr;
+        TimeZoneInfo.TransitionTime transition;
+
+        tzr.TicksStart = rule.DateEnd.ToUniversalTime().Ticks;
+        tzr.TicksEnd = rule.DateStart.ToUniversalTime().Ticks;
+        tzr.DaylightDelta = (Int32)rule.DaylightDelta.TotalMinutes;
+
+        transition = rule.DaylightTransitionEnd;
+        time = transition.TimeOfDay;
+
+        tzr.StandardDate.wYear = (UInt16)0;
+        tzr.StandardDate.wMonth = (UInt16)transition.Month;
+        tzr.StandardDate.wDayOfWeek = (UInt16)transition.DayOfWeek;
+        tzr.StandardDate.wDay = (UInt16)transition.Week;
+        tzr.StandardDate.wHour = (UInt16)time.Hour;
+        tzr.StandardDate.wMinute = (UInt16)time.Minute;
+        tzr.StandardDate.wSecond = (UInt16)time.Second;
+        tzr.StandardDate.wMilliseconds = (UInt16)time.Millisecond;
+
+        transition = rule.DaylightTransitionStart;
+        time = transition.TimeOfDay;
+
+        tzr.DaylightDate.wYear = (UInt16)0;
+        tzr.DaylightDate.wMonth = (UInt16)transition.Month;
+        tzr.DaylightDate.wDayOfWeek = (UInt16)transition.DayOfWeek;
+        tzr.DaylightDate.wDay = (UInt16)transition.Week;
+        tzr.DaylightDate.wHour = (UInt16)time.Hour;
+        tzr.DaylightDate.wMinute = (UInt16)time.Minute;
+        tzr.DaylightDate.wSecond = (UInt16)time.Second;
+        tzr.DaylightDate.wMilliseconds = (UInt16)time.Millisecond;
+
+        stream.Write("\t{");
+        stream.Write(" {0}ULL, {1}ULL, {2},", tzr.TicksStart, tzr.TicksEnd, tzr.DaylightDelta);
+
+        stream.Write(" { ");
+        stream.Write("{0}, {1}, {2}, {3}, {4}, {5}",
+            tzr.StandardDate.wYear, tzr.StandardDate.wMonth, tzr.StandardDate.wDayOfWeek,
+            tzr.StandardDate.wDay, tzr.StandardDate.wHour, tzr.StandardDate.wMinute,
+            tzr.StandardDate.wSecond, tzr.StandardDate.wMilliseconds);
+        stream.Write(" }, ");
+
+        stream.Write("{ ");
+        stream.Write("{0}, {1}, {2}, {3}, {4}, {5}",
+            tzr.DaylightDate.wYear, tzr.DaylightDate.wMonth, tzr.DaylightDate.wDayOfWeek,
+            tzr.DaylightDate.wDay, tzr.DaylightDate.wHour, tzr.DaylightDate.wMinute,
+            tzr.DaylightDate.wSecond, tzr.DaylightDate.wMilliseconds);
+        stream.Write(" },");
+
+        if (++i < rules.Length)
+            stream.WriteLine(" },");
+        else
+            stream.WriteLine(" }");
+    }
+
+    stream.WriteLine("};");
+    stream.WriteLine();
+    index++;
+}
+
+index = 0;
+stream.WriteLine("static const TIME_ZONE_ENTRY TimeZoneTable[] =");
+stream.WriteLine("{");
+
+foreach (TimeZoneInfo timeZone in timeZones)
+{
+    TIME_ZONE_ENTRY tz;
+    TimeSpan offset = timeZone.BaseUtcOffset;
+
+    rules = timeZone.GetAdjustmentRules();
+
+    tz.Id = timeZone.Id;
+    tz.Bias = -(Int32)offset.TotalMinutes;
+
+    tz.SupportsDST = timeZone.SupportsDaylightSavingTime;
+
+    tz.DisplayName = timeZone.DisplayName;
+    tz.StandardName = timeZone.StandardName;
+    tz.DaylightName = timeZone.DaylightName;
+
+    if ((!tz.SupportsDST) || (rules.Length < 1))
+    {
+        tz.RuleTableCount = 0;
+        tz.RuleTable = "NULL";
+    }
+    else
+    {
+        tz.RuleTableCount = (UInt32)rules.Length;
+        tz.RuleTable = "&TimeZoneRuleTable_" + index;
+        tz.RuleTable = "(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_" + index;
+    }
+
+    stream.WriteLine("\t{");
+
+    stream.WriteLine("\t\t\"{0}\", {1}, {2}, \"{3}\",",
+        tz.Id, tz.Bias, tz.SupportsDST ? "TRUE" : "FALSE", tz.DisplayName);
+
+    stream.WriteLine("\t\t\"{0}\", \"{1}\",", tz.StandardName, tz.DaylightName);
+    stream.WriteLine("\t\t{0}, {1}", tz.RuleTable, tz.RuleTableCount);
+
+    index++;
+
+    if ((int)index < timeZones.Count)
+        stream.WriteLine("\t},");
+    else
+        stream.WriteLine("\t}");
+}
+stream.WriteLine("};");
+stream.WriteLine();
+
+stream.Close();
+