]> git.pld-linux.org Git - packages/Sjeng-Free.git/blame - Sjeng-Free-FHS.patch
- release 3 (rebuild with gdbm 1.15)
[packages/Sjeng-Free.git] / Sjeng-Free-FHS.patch
CommitLineData
3386af5f
JB
1--- Sjeng-Free-11.2/book.c.deb 2001-07-16 20:04:48.000000000 +0800
2+++ Sjeng-Free-11.2/book.c 2005-07-03 19:43:03.000000000 +0800
3@@ -38,6 +40,10 @@
4 #define book_solid 4 /* = */
5 #define book_murky 5 /* ?! */
6
7+#ifndef BOOK_PATH
8+#define BOOK_PATH "/usr/share/games/sjeng"
9+#endif
10+
11 int init_book (void) {
12
13 /* simply read all the book moves into a book array. The book will be
14@@ -63,27 +69,27 @@
15
16 if (Variant == Normal)
17 {
18- if ((f_book = fopen ("normal.opn", "r")) == NULL)
19+ if ((f_book = fopen (BOOK_PATH "/normal.opn", "r")) == NULL)
20 return FALSE;
21 }
22 else if (Variant == Crazyhouse)
23 {
24- if ((f_book = fopen ("zh.opn", "r")) == NULL)
25+ if ((f_book = fopen (BOOK_PATH "/zh.opn", "r")) == NULL)
26 return FALSE;
27 }
28 else if (Variant == Suicide)
29 {
30- if ((f_book = fopen ("suicide.opn", "r")) == NULL)
31+ if ((f_book = fopen (BOOK_PATH "/suicide.opn", "r")) == NULL)
32 return FALSE;
33 }
34 else if (Variant == Losers)
35 {
36- if ((f_book = fopen ("losers.opn", "r")) == NULL)
37+ if ((f_book = fopen (BOOK_PATH "/losers.opn", "r")) == NULL)
38 return FALSE;
39 }
40 else
41 {
42- if ((f_book = fopen ("bug.opn", "r")) == NULL)
43+ if ((f_book = fopen (BOOK_PATH "/bug.opn", "r")) == NULL)
44 return FALSE;
45 }
46
47--- Sjeng-Free-11.2/rcfile.c.deb 2001-09-28 18:19:18.000000000 +0800
48+++ Sjeng-Free-11.2/rcfile.c 2005-07-03 20:09:07.000000000 +0800
49@@ -26,6 +26,14 @@
50 #include "extvars.h"
51 #include "config.h"
52
53+/* Local name is relative to user's home directory */
54+#define RC_LOCALNAME "/.sjeng/sjeng.rc"
55+#ifndef SYSCONFDIR
56+#define RC_GLOBALNAME "/etc/sjeng.rc"
57+#else
58+#define RC_GLOBALNAME SYSCONFDIR "/sjeng.rc"
59+#endif
60+
61 FILE *rcfile;
62 char line[STR_BUFF];
63
64@@ -51,8 +59,22 @@
65 {
66 int i;
67 unsigned int setc;
68-
69- if ((rcfile = fopen ("sjeng.rc", "r")) == NULL)
70+ struct passwd *pw;
71+ char rcname[STR_BUFF];
72+
73+ rcfile = NULL;
74+ pw = getpwuid(getuid());
75+ if (pw != NULL &&
76+ strlen(pw->pw_dir) + strlen(RC_LOCALNAME) + 1 < STR_BUFF ) {
77+ strcpy(rcname, pw->pw_dir);
78+ strcat(rcname, RC_LOCALNAME);
79+ rcfile = fopen(rcname, "r");
80+ }
81+ if (rcfile == NULL) {
82+ rcfile = fopen(RC_GLOBALNAME, "r");
83+ }
84+
85+ if (rcfile == NULL)
86 {
87 printf("No configuration file!\n");
88
89--- Sjeng-Free-11.2/sjeng.c.deb 2001-12-28 06:20:38.000000000 +0800
90+++ Sjeng-Free-11.2/sjeng.c 2005-07-03 19:25:22.000000000 +0800
91@@ -27,6 +27,11 @@
92 \r
93 */\r
94 \r
95+#include <sys/types.h>\r
96+#include <sys/stat.h>\r
97+#include <unistd.h>\r
98+#include <pwd.h>\r
99+\r
100 #include "sjeng.h"\r
101 #include "protos.h"\r
102 #include "extvars.h"\r
103@@ -106,7 +111,11 @@
104 int braindeadinterface;\r
105 int automode;\r
106 rtime_t xstart_time;\r
107- \r
108+ char lrn_name[STR_BUFF];\r
109+ int path_len;\r
110+ struct passwd *pw;\r
111+ struct stat st;\r
112+\r
113 read_rcfile();\r
114 initialize_zobrist();\r
115 \r
116@@ -119,60 +128,88 @@
117 if (!init_book())\r
118 printf("No .OPN opening book found.\n");\r
119 \r
120- if ((lrn_standard = fopen ("standard.lrn", "rb+")) == NULL)\r
121+ pw = getpwuid(getuid());\r
122+ if (pw == NULL) {\r
123+ perror("Unable to get home directory");\r
124+ exit(1);\r
125+ }\r
126+ path_len = strlen(pw->pw_dir) + strlen("/.sjeng/");\r
127+ if (path_len + 21 >= STR_BUFF) {\r
128+ fprintf(stderr,"Home directory path too long\n");\r
129+ exit(1);\r
130+ }\r
131+ strcpy(lrn_name, pw->pw_dir);\r
132+ strcat(lrn_name, "/.sjeng/");\r
133+\r
134+ if (stat(lrn_name, &st) < 0) {\r
135+ printf("Trying to create directory %s\n", lrn_name);\r
136+ if (mkdir(lrn_name, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) < 0) {\r
137+ perror("Unable to create directory");\r
138+ exit(1);\r
139+ }\r
140+ }\r
141+\r
142+ strcpy(lrn_name + path_len, "standard.lrn");\r
143+ if ((lrn_standard = fopen (lrn_name, "rb+")) == NULL)\r
144 {\r
145 printf("No standard learn file.\n");\r
146 \r
147- if ((lrn_standard = fopen ("standard.lrn", "wb+")) == NULL)\r
148+ if ((lrn_standard = fopen (lrn_name, "wb+")) == NULL)\r
149 {\r
150 printf("Error creating standard learn file.\n");\r
151 }\r
152 else\r
153 {\r
154 fclose(lrn_standard);\r
155- lrn_standard = fopen ("standard.lrn", "rb+");\r
156+ lrn_standard = fopen (lrn_name, "rb+");\r
157 }\r
158 }\r
159- if ((lrn_zh = fopen ("bug.lrn", "rb+")) == NULL)\r
160+\r
161+ strcpy(lrn_name + path_len, "bug.lrn");\r
162+ if ((lrn_zh = fopen (lrn_name, "rb+")) == NULL)\r
163 {\r
164 printf("No crazyhouse learn file.\n");\r
165 \r
166- if ((lrn_zh = fopen ("bug.lrn", "wb+")) == NULL)\r
167+ if ((lrn_zh = fopen (lrn_name, "wb+")) == NULL)\r
168 {\r
169 printf("Error creating crazyhouse learn file.\n");\r
170 }\r
171 else\r
172 {\r
173 fclose(lrn_zh);\r
174- lrn_zh = fopen ("bug.lrn", "rb+");\r
175+ lrn_zh = fopen (lrn_name, "rb+");\r
176 }\r
177 }\r
178- if ((lrn_suicide = fopen ("suicide.lrn", "rb+")) == NULL)\r
179+\r
180+ strcpy(lrn_name + path_len, "suicide.lrn");\r
181+ if ((lrn_suicide = fopen (lrn_name, "rb+")) == NULL)\r
182 {\r
183 printf("No suicide learn file.\n");\r
184 \r
185- if ((lrn_suicide = fopen ("suicide.lrn", "wb+")) == NULL)\r
186+ if ((lrn_suicide = fopen (lrn_name, "wb+")) == NULL)\r
187 {\r
188 printf("Error creating suicide learn file.\n");\r
189 }\r
190 else\r
191 {\r
192 fclose(lrn_suicide);\r
193- lrn_suicide = fopen ("suicide.lrn", "rb+");\r
194+ lrn_suicide = fopen (lrn_name, "rb+");\r
195 }\r
196 }\r
197- if ((lrn_losers = fopen ("losers.lrn", "rb+")) == NULL)\r
198+\r
199+ strcpy(lrn_name + path_len, "losers.lrn");\r
200+ if ((lrn_losers = fopen (lrn_name, "rb+")) == NULL)\r
201 {\r
202 printf("No losers learn file.\n");\r
203 \r
204- if ((lrn_losers = fopen ("losers.lrn", "wb+")) == NULL)\r
205+ if ((lrn_losers = fopen (lrn_name, "wb+")) == NULL)\r
206 {\r
207 printf("Error creating losers learn file.\n");\r
208 }\r
209 else\r
210 {\r
211 fclose(lrn_losers);\r
212- lrn_losers = fopen ("losers.lrn", "rb+");\r
213+ lrn_losers = fopen (lrn_name, "rb+");\r
214 }\r
215 }\r
216 \r
217--- Sjeng-Free-11.2/newbook.c~ 2005-07-03 20:28:23.000000000 +0800
218+++ Sjeng-Free-11.2/newbook.c 2005-07-03 21:00:52.000000000 +0800
219@@ -35,6 +35,10 @@
220 #error You need the GNU DBM library (GDBM). Go to ftp.gnu.org
221 #endif
222
223+#ifndef BOOK_PATH
224+#define BOOK_PATH "/usr/share/games/sjeng"
225+#endif
226+
227 typedef struct
228 {
229 unsigned long hashkey;
230@@ -465,13 +469,13 @@
231 srand(time(0));
232
233 if (Variant == Normal)
234- binbook = gdbm_open("nbook.bin", 16384, GDBM_READER, 0, NULL);
235+ binbook = gdbm_open(BOOK_PATH "/nbook.bin", 16384, GDBM_READER, 0, NULL);
236 else if (Variant == Suicide)
237- binbook = gdbm_open("sbook.bin", 16384, GDBM_READER, 0, NULL);
238+ binbook = gdbm_open(BOOK_PATH "/sbook.bin", 16384, GDBM_READER, 0, NULL);
239 else if (Variant == Losers)
240- binbook = gdbm_open("lbook.bin", 16384, GDBM_READER, 0, NULL);
241+ binbook = gdbm_open(BOOK_PATH "/lbook.bin", 16384, GDBM_READER, 0, NULL);
242 else
243- binbook = gdbm_open("zbook.bin", 16384, GDBM_READER, 0, NULL);
244+ binbook = gdbm_open(BOOK_PATH "/zbook.bin", 16384, GDBM_READER, 0, NULL);
245
246
247 if (binbook == NULL)
248--- Sjeng-Free-11.2/Makefile.am.bak 2001-09-12 17:32:27.000000000 +0800
249+++ Sjeng-Free-11.2/Makefile.am 2005-07-03 21:05:34.000000000 +0800
250@@ -4,5 +4,9 @@
251 sjeng.c utils.c newbook.c proof.c neval.c rcfile.c\
252 leval.c draw.c see.c probe.c segtb.c\
253 protos.h extvars.h sjeng.h squares.h
254+
255+sjeng_CFLAGS = -DBOOK_PATH="\"$(datadir)/sjeng\"" \
256+ -DSYSCONFDIR="\"$(sysconfdir)\""
257+
258 EXTRA_DIST = TODO NEWS ChangeLog COPYING BUGS THANKS blob2.c sjeng.rc
259 SUBDIRS = books tests
260--- Sjeng-Free-11.2/segtb.c.bak 2005-07-03 22:31:07.000000000 +0800
261+++ Sjeng-Free-11.2/segtb.c 2005-07-03 22:55:02.000000000 +0800
262@@ -30,13 +30,17 @@
263 #define FILE(x) ((x) & 7)
264 #define RANK(x) ((x) >> 3)
265
266+#ifndef BOOK_PATH
267+#define BOOK_PATH "/usr/share/games/sjeng"
268+#endif
269+
270 #define TWO_PIECE_SIZE 4096
271 #define TWO_PIECE_HASH(x,y,z) (((((x) << 5) | (y)) << 6) | (z))
272-#define TWO_PIECE_FILE "stb/2pieces.bin"
273+#define TWO_PIECE_FILE BOOK_PATH "/stb/2pieces.bin"
274
275 #define THREE_PIECE_SIZE (64*TWO_PIECE_SIZE)
276 #define THREE_PIECE_HASH(x,y,z,w) (((((((x) << 5) | (y)) << 6) | (z)) << 6) | (w))
277-#define THREE_PIECE_FILE "stb/xxx.bin"
278+#define THREE_PIECE_FILE BOOK_PATH "/stb/xxx.bin"
279
280 #define TABLE_KEY(x,y,z) (((((x) << 3) | (y)) << 3) | (z))
281
282@@ -510,9 +514,9 @@
283 /* generate the filename */
284
285 strcpy(fname, THREE_PIECE_FILE);
286- fname[4] = xpiece_char[w1_man];
287- fname[5] = xpiece_char[b1_man];
288- fname[6] = xpiece_char[b2_man];
289+ fname[strlen(BOOK_PATH)+5] = xpiece_char[w1_man];
290+ fname[strlen(BOOK_PATH)+6] = xpiece_char[b1_man];
291+ fname[strlen(BOOK_PATH)+7] = xpiece_char[b2_man];
292
293 if(!(f = fopen(fname,"w"))) return 0;
294
295@@ -971,9 +975,9 @@
296 /* generate the filename */
297
298 strcpy(fname, THREE_PIECE_FILE);
299- fname[4]= xpiece_char[w1_man];
300- fname[5]= xpiece_char[b1_man];
301- fname[6]= xpiece_char[b2_man];
302+ fname[strlen(BOOK_PATH)+5]= xpiece_char[w1_man];
303+ fname[strlen(BOOK_PATH)+6]= xpiece_char[b1_man];
304+ fname[strlen(BOOK_PATH)+7]= xpiece_char[b2_man];
305
306 if(!(f = fopen(fname,"r"))) return 0;
307
This page took 0.090239 seconds and 4 git commands to generate.