]> git.pld-linux.org Git - packages/Sjeng-Free.git/blob - Sjeng-Free-FHS.patch
- release 3 (rebuild with gdbm 1.15)
[packages/Sjeng-Free.git] / Sjeng-Free-FHS.patch
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.104704 seconds and 3 git commands to generate.