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]++;
|