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
4 #define book_solid 4 /* = */
5 #define book_murky 5 /* ?! */
8 +#define BOOK_PATH "/usr/share/games/sjeng"
11 int init_book (void) {
13 /* simply read all the book moves into a book array. The book will be
16 if (Variant == Normal)
18 - if ((f_book = fopen ("normal.opn", "r")) == NULL)
19 + if ((f_book = fopen (BOOK_PATH "/normal.opn", "r")) == NULL)
22 else if (Variant == Crazyhouse)
24 - if ((f_book = fopen ("zh.opn", "r")) == NULL)
25 + if ((f_book = fopen (BOOK_PATH "/zh.opn", "r")) == NULL)
28 else if (Variant == Suicide)
30 - if ((f_book = fopen ("suicide.opn", "r")) == NULL)
31 + if ((f_book = fopen (BOOK_PATH "/suicide.opn", "r")) == NULL)
34 else if (Variant == Losers)
36 - if ((f_book = fopen ("losers.opn", "r")) == NULL)
37 + if ((f_book = fopen (BOOK_PATH "/losers.opn", "r")) == NULL)
42 - if ((f_book = fopen ("bug.opn", "r")) == NULL)
43 + if ((f_book = fopen (BOOK_PATH "/bug.opn", "r")) == NULL)
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
53 +/* Local name is relative to user's home directory */
54 +#define RC_LOCALNAME "/.sjeng/sjeng.rc"
56 +#define RC_GLOBALNAME "/etc/sjeng.rc"
58 +#define RC_GLOBALNAME SYSCONFDIR "/sjeng.rc"
69 - if ((rcfile = fopen ("sjeng.rc", "r")) == NULL)
71 + char rcname[STR_BUFF];
74 + pw = getpwuid(getuid());
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");
81 + if (rcfile == NULL) {
82 + rcfile = fopen(RC_GLOBALNAME, "r");
87 printf("No configuration file!\n");
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
95 +#include <sys/types.h>
\r
96 +#include <sys/stat.h>
\r
97 +#include <unistd.h>
\r
101 #include "protos.h"
\r
102 #include "extvars.h"
\r
104 int braindeadinterface;
\r
106 rtime_t xstart_time;
\r
108 + char lrn_name[STR_BUFF];
\r
110 + struct passwd *pw;
\r
114 initialize_zobrist();
\r
116 @@ -119,60 +128,88 @@
118 printf("No .OPN opening book found.\n");
\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
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
131 + strcpy(lrn_name, pw->pw_dir);
\r
132 + strcat(lrn_name, "/.sjeng/");
\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
142 + strcpy(lrn_name + path_len, "standard.lrn");
\r
143 + if ((lrn_standard = fopen (lrn_name, "rb+")) == NULL)
\r
145 printf("No standard learn file.\n");
\r
147 - if ((lrn_standard = fopen ("standard.lrn", "wb+")) == NULL)
\r
148 + if ((lrn_standard = fopen (lrn_name, "wb+")) == NULL)
\r
150 printf("Error creating standard learn file.\n");
\r
154 fclose(lrn_standard);
\r
155 - lrn_standard = fopen ("standard.lrn", "rb+");
\r
156 + lrn_standard = fopen (lrn_name, "rb+");
\r
159 - if ((lrn_zh = fopen ("bug.lrn", "rb+")) == NULL)
\r
161 + strcpy(lrn_name + path_len, "bug.lrn");
\r
162 + if ((lrn_zh = fopen (lrn_name, "rb+")) == NULL)
\r
164 printf("No crazyhouse learn file.\n");
\r
166 - if ((lrn_zh = fopen ("bug.lrn", "wb+")) == NULL)
\r
167 + if ((lrn_zh = fopen (lrn_name, "wb+")) == NULL)
\r
169 printf("Error creating crazyhouse learn file.\n");
\r
174 - lrn_zh = fopen ("bug.lrn", "rb+");
\r
175 + lrn_zh = fopen (lrn_name, "rb+");
\r
178 - if ((lrn_suicide = fopen ("suicide.lrn", "rb+")) == NULL)
\r
180 + strcpy(lrn_name + path_len, "suicide.lrn");
\r
181 + if ((lrn_suicide = fopen (lrn_name, "rb+")) == NULL)
\r
183 printf("No suicide learn file.\n");
\r
185 - if ((lrn_suicide = fopen ("suicide.lrn", "wb+")) == NULL)
\r
186 + if ((lrn_suicide = fopen (lrn_name, "wb+")) == NULL)
\r
188 printf("Error creating suicide learn file.\n");
\r
192 fclose(lrn_suicide);
\r
193 - lrn_suicide = fopen ("suicide.lrn", "rb+");
\r
194 + lrn_suicide = fopen (lrn_name, "rb+");
\r
197 - if ((lrn_losers = fopen ("losers.lrn", "rb+")) == NULL)
\r
199 + strcpy(lrn_name + path_len, "losers.lrn");
\r
200 + if ((lrn_losers = fopen (lrn_name, "rb+")) == NULL)
\r
202 printf("No losers learn file.\n");
\r
204 - if ((lrn_losers = fopen ("losers.lrn", "wb+")) == NULL)
\r
205 + if ((lrn_losers = fopen (lrn_name, "wb+")) == NULL)
\r
207 printf("Error creating losers learn file.\n");
\r
211 fclose(lrn_losers);
\r
212 - lrn_losers = fopen ("losers.lrn", "rb+");
\r
213 + lrn_losers = fopen (lrn_name, "rb+");
\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
220 #error You need the GNU DBM library (GDBM). Go to ftp.gnu.org
224 +#define BOOK_PATH "/usr/share/games/sjeng"
229 unsigned long hashkey;
230 @@ -465,13 +469,13 @@
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);
243 - binbook = gdbm_open("zbook.bin", 16384, GDBM_READER, 0, NULL);
244 + binbook = gdbm_open(BOOK_PATH "/zbook.bin", 16384, GDBM_READER, 0, 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
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
255 +sjeng_CFLAGS = -DBOOK_PATH="\"$(datadir)/sjeng\"" \
256 + -DSYSCONFDIR="\"$(sysconfdir)\""
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
263 #define FILE(x) ((x) & 7)
264 #define RANK(x) ((x) >> 3)
267 +#define BOOK_PATH "/usr/share/games/sjeng"
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"
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"
280 #define TABLE_KEY(x,y,z) (((((x) << 3) | (y)) << 3) | (z))
283 /* generate the filename */
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];
293 if(!(f = fopen(fname,"w"))) return 0;
296 /* generate the filename */
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];
306 if(!(f = fopen(fname,"r"))) return 0;