summaryrefslogtreecommitdiff
path: root/games/xshisen/files/patch-af
blob: b324160ddc9e2a680ec883c345b8b798e4a0a4fe (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
--- score.C.orig	Tue Jan 23 00:52:09 1996
+++ score.C	Sat Aug 26 05:10:09 2000
@@ -4,31 +4,31 @@
 
 XtResource Score::resources[] = {
     { "scoreTitle",  "ScoreTitle",  XtRString, sizeof(char *),
-      0*sizeof(char *), XtRString, "XShisen High Score\n\n" },
+      0*sizeof(char *), XtRString, (XtPointer)"XShisen High Score\n\n" },
     { "scoreFormat", "ScoreFormat", XtRString, sizeof(char *),
-      1*sizeof(char *), XtRString, "%2d  %2.2d:%2.2d:%2.2d  %-28s  %s %s\n" },
+      1*sizeof(char *), XtRString, (XtPointer)"%2d  %2.2d:%2.2d:%2.2d  %-28s  %s %s\n" },
     { "strPeriod", "StrPeriod", XtRString, sizeof(char *),
-      2*sizeof(char *), XtRString, "Last %d days" },
+      2*sizeof(char *), XtRString, (XtPointer)"Last %d days" },
     { "averagePeriod", "AveragePeriod", XtRString, sizeof(char *),
-      3*sizeof(char *), XtRString, "14" },
+      3*sizeof(char *), XtRString, (XtPointer)"14" },
     { "strPlayed", "StrPlayed", XtRString, sizeof(char *),
-      4*sizeof(char *), XtRString, "Played" },
+      4*sizeof(char *), XtRString, (XtPointer)"Played" },
     { "strCompleted", "StrCompleted", XtRString, sizeof(char *),
-      5*sizeof(char *), XtRString, "Completed" },
+      5*sizeof(char *), XtRString, (XtPointer)"Completed" },
     { "strTedumari", "StrTedumari", XtRString, sizeof(char *),
-      6*sizeof(char *), XtRString, "Deadlocked" },
+      6*sizeof(char *), XtRString, (XtPointer)"Deadlocked" },
     { "strSearched", "StrSearched", XtRString, sizeof(char *),
-      7*sizeof(char *), XtRString, "Seach used" },
+      7*sizeof(char *), XtRString, (XtPointer)"Search used" },
     { "strGiveUp", "StrGiveUp", XtRString, sizeof(char *),
-      8*sizeof(char *), XtRString, "Gaven up" },
+      8*sizeof(char *), XtRString, (XtPointer)"Given up" },
     { "strTotal", "StrTotal", XtRString, sizeof(char *),
-      9*sizeof(char *), XtRString, "Total" },
+      9*sizeof(char *), XtRString, (XtPointer)"Total" },
     { "strAverage", "StrAverage", XtRString, sizeof(char *),
-      10*sizeof(char *), XtRString, "Whole Average" },
+      10*sizeof(char *), XtRString, (XtPointer)"Whole Average" },
     { "strGames", "StrGames", XtRString, sizeof(char *),
-      11*sizeof(char *), XtRString, "games" },
+      11*sizeof(char *), XtRString, (XtPointer)"games" },
     { "personalTitle", "PersonalTitle", XtRString, sizeof(char *),
-      12*sizeof(char *), XtRString, "Personal Statistics for %s" }
+      12*sizeof(char *), XtRString, (XtPointer)"Personal Statistics for %s" }
 };
 
 void
@@ -73,6 +73,12 @@
     date[8] = '\0';
     strncpy(time, &buffer[53], 8);
     time[8] = '\0';
+    if (date[0] == '1') {
+        for(int i=1; i<8; i++) {
+            date[i-1] = date[i];
+        }
+        date[7] = date[6] == '0' ? '1' : '0';
+    }
 }
 
 void
@@ -414,7 +420,7 @@
     strcpy(rec[inspos].name, myname);
     time(&t);
     tp = localtime(&t);
-    sprintf(rec[i].date, "%2.2d-%2.2d-%2.2d", tp->tm_year, tp->tm_mon+1, tp->tm_mday);
+    sprintf(rec[i].date, "%2.2d-%2.2d-%2.2d", tp->tm_year%100, tp->tm_mon+1, tp->tm_mday);
     sprintf(rec[i].time, "%2.2d:%2.2d:%2.2d", tp->tm_hour, tp->tm_min, tp->tm_sec);
     if (writefile() == 0)
         DisplayScore(game);
@@ -434,12 +440,12 @@
         return; /* Just do not record, no notifying */
     time(&t);
     tp = localtime(&t);
-    check_digit = flag*3 + gamesize + level*7 + tp->tm_year*3 + rest*7
+    check_digit = flag*3 + gamesize + level*7 + (tp->tm_year%100)*3 + rest*7
         + tp->tm_mon*7 + tp->tm_mday*3 + tp->tm_hour*7 + tp->tm_min*3 + tp->tm_sec;
     check_digit %= 857;
     fprintf(stream, "%2.2d%2.2d%8.8d%2.2d%1.1d%2.2d%4.4d%2.2d%3.3d%3.3d%2.2d%2.2d\n",
             flag,
-            tp->tm_sec, result, tp->tm_min, gamesize, tp->tm_year, level, tp->tm_mon,
+            tp->tm_sec, result, tp->tm_min, gamesize, tp->tm_year%100, level, tp->tm_mon,
             check_digit, rest, tp->tm_mday, tp->tm_hour);
     fclose(stream);
 }
@@ -492,7 +498,24 @@
             rest = -1;
             c2 = f*3 + g + l*7 + year*3 + month*7 + day*3 + hour*7 + min*3 + sec;
             break;
-        case 34:
+        case 32:
+            // Just for compatibility with xshisen 1.10, Y2K
+            f     = atoiSubstring(buf +  0, 2);
+            sec   = atoiSubstring(buf +  2, 2);
+            t     = atoiSubstring(buf +  4, 8);
+            min   = atoiSubstring(buf + 12, 2);
+            g     = atoiSubstring(buf + 14, 1);
+            year  = atoiSubstring(buf + 15, 3) - 100;
+            l     = atoiSubstring(buf + 18, 4);
+            month = atoiSubstring(buf + 22, 2);
+            c1    = atoiSubstring(buf + 24, 3);
+            day   = atoiSubstring(buf + 27, 2);
+            hour  = atoiSubstring(buf + 29, 2);
+            rest = -1;
+            c2 = f*3 + g + l*7 + (year+100)*3 + month*7 + day*3 + hour*7 + min*3 + sec
+;
+            break;
+         case 34:
             // This is usual format
             f     = atoiSubstring(buf +  0, 2);
             sec   = atoiSubstring(buf +  2, 2);
@@ -509,6 +532,23 @@
             c2 = f*3 + g + l*7 + year*3 + month*7 + day*3 + hour*7 + min*3
                 + sec + rest*7;
             break;
+         case 35: 
+            // This is usual format, Y2K
+            f     = atoiSubstring(buf +  0, 2);
+            sec   = atoiSubstring(buf +  2, 2);
+            t     = atoiSubstring(buf +  4, 8);
+            min   = atoiSubstring(buf + 12, 2);
+            g     = atoiSubstring(buf + 14, 1);
+            year  = atoiSubstring(buf + 15, 3) - 100;
+            l     = atoiSubstring(buf + 18, 4);
+            month = atoiSubstring(buf + 22, 2);
+            c1    = atoiSubstring(buf + 24, 3);
+            rest  = atoiSubstring(buf + 27, 3);
+            day   = atoiSubstring(buf + 30, 2);
+            hour  = atoiSubstring(buf + 32, 2);
+            c2 = f*3 + g + l*7 + (year+100)*3 + month*7 + day*3 + hour*7 + min*3
+                + sec + rest*7;
+            break;
         default:
             // Someone edited this file?
             continue;
@@ -537,7 +577,7 @@
         tb.tm_hour  = hour;
         tb.tm_mday  = day;
         tb.tm_mon   = month;
-        tb.tm_year  = year;
+        tb.tm_year  = year > 69 ? year : year + 100;
         tm1 = mktime(&tb);  // Time of the score
         w1[0][f] += t;
         w2[0][f]++;