]> git.pld-linux.org Git - packages/Sjeng-Free.git/blobdiff - Sjeng-Free-FHS.patch
- unbzip2ped
[packages/Sjeng-Free.git] / Sjeng-Free-FHS.patch
diff --git a/Sjeng-Free-FHS.patch b/Sjeng-Free-FHS.patch
new file mode 100644 (file)
index 0000000..e10e650
--- /dev/null
@@ -0,0 +1,307 @@
+--- Sjeng-Free-11.2/book.c.deb 2001-07-16 20:04:48.000000000 +0800
++++ Sjeng-Free-11.2/book.c     2005-07-03 19:43:03.000000000 +0800
+@@ -38,6 +40,10 @@
+ #define book_solid 4         /* =   */
+ #define book_murky 5         /* ?!  */
++#ifndef BOOK_PATH
++#define BOOK_PATH "/usr/share/games/sjeng"
++#endif
++
+ int init_book (void) {
+    /* simply read all the book moves into a book array.  The book will be
+@@ -63,27 +69,27 @@
+    if (Variant == Normal)
+      {
+-       if ((f_book = fopen ("normal.opn", "r")) == NULL)
++       if ((f_book = fopen (BOOK_PATH "/normal.opn", "r")) == NULL)
+        return FALSE;
+      }
+    else if (Variant == Crazyhouse)
+      {
+-       if ((f_book = fopen ("zh.opn", "r")) == NULL)
++       if ((f_book = fopen (BOOK_PATH "/zh.opn", "r")) == NULL)
+        return FALSE;
+      }
+    else if (Variant == Suicide)
+      {
+-       if ((f_book = fopen ("suicide.opn", "r")) == NULL)
++       if ((f_book = fopen (BOOK_PATH "/suicide.opn", "r")) == NULL)
+        return FALSE;
+      }
+    else if (Variant == Losers)
+    {
+-       if ((f_book = fopen ("losers.opn", "r")) == NULL)
++       if ((f_book = fopen (BOOK_PATH "/losers.opn", "r")) == NULL)
+        return FALSE;
+    }
+    else
+      {
+-       if ((f_book = fopen ("bug.opn", "r")) == NULL)
++       if ((f_book = fopen (BOOK_PATH "/bug.opn", "r")) == NULL)
+        return FALSE;
+      }
+--- Sjeng-Free-11.2/rcfile.c.deb       2001-09-28 18:19:18.000000000 +0800
++++ Sjeng-Free-11.2/rcfile.c   2005-07-03 20:09:07.000000000 +0800
+@@ -26,6 +26,14 @@
+ #include "extvars.h"
+ #include "config.h"
++/* Local name is relative to user's home directory */
++#define RC_LOCALNAME  "/.sjeng/sjeng.rc"
++#ifndef SYSCONFDIR
++#define RC_GLOBALNAME "/etc/sjeng.rc"
++#else
++#define RC_GLOBALNAME SYSCONFDIR "/sjeng.rc"
++#endif
++
+ FILE *rcfile;
+ char line[STR_BUFF];
+@@ -51,8 +59,22 @@
+ {
+   int i;
+   unsigned int setc;
+-  
+-  if ((rcfile = fopen ("sjeng.rc", "r")) == NULL)
++  struct passwd *pw;
++  char rcname[STR_BUFF];
++
++  rcfile = NULL;
++  pw = getpwuid(getuid());
++  if (pw != NULL && 
++      strlen(pw->pw_dir) + strlen(RC_LOCALNAME) + 1 < STR_BUFF ) {
++      strcpy(rcname, pw->pw_dir);
++      strcat(rcname, RC_LOCALNAME);
++      rcfile = fopen(rcname, "r");
++  }
++  if (rcfile == NULL) {
++        rcfile = fopen(RC_GLOBALNAME, "r");
++  }
++        
++  if (rcfile == NULL)
+     {
+       printf("No configuration file!\n");
+--- Sjeng-Free-11.2/sjeng.c.deb        2001-12-28 06:20:38.000000000 +0800
++++ Sjeng-Free-11.2/sjeng.c    2005-07-03 19:25:22.000000000 +0800
+@@ -27,6 +27,11 @@
\r
+ */\r
\r
++#include <sys/types.h>\r
++#include <sys/stat.h>\r
++#include <unistd.h>\r
++#include <pwd.h>\r
++\r
+ #include "sjeng.h"\r
+ #include "protos.h"\r
+ #include "extvars.h"\r
+@@ -106,7 +111,11 @@
+   int braindeadinterface;\r
+   int automode;\r
+   rtime_t xstart_time;\r
+-  \r
++  char lrn_name[STR_BUFF];\r
++  int path_len;\r
++  struct passwd *pw;\r
++  struct stat st;\r
++\r
+   read_rcfile();\r
+   initialize_zobrist();\r
+  \r
+@@ -119,60 +128,88 @@
+   if (!init_book())\r
+     printf("No .OPN opening book found.\n");\r
\r
+-  if ((lrn_standard = fopen ("standard.lrn", "rb+")) == NULL)\r
++  pw = getpwuid(getuid());\r
++  if (pw == NULL) {\r
++    perror("Unable to get home directory");\r
++    exit(1);\r
++  }\r
++  path_len = strlen(pw->pw_dir) + strlen("/.sjeng/");\r
++  if (path_len + 21 >= STR_BUFF) {\r
++    fprintf(stderr,"Home directory path too long\n");\r
++    exit(1);\r
++  }\r
++  strcpy(lrn_name, pw->pw_dir);\r
++  strcat(lrn_name, "/.sjeng/");\r
++\r
++  if (stat(lrn_name, &st) < 0) {\r
++    printf("Trying to create directory %s\n", lrn_name);\r
++    if (mkdir(lrn_name, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) < 0) {\r
++      perror("Unable to create directory");\r
++      exit(1);\r
++    }\r
++  }\r
++\r
++  strcpy(lrn_name + path_len, "standard.lrn");\r
++  if ((lrn_standard = fopen (lrn_name, "rb+")) == NULL)\r
+     {\r
+       printf("No standard learn file.\n");\r
+       \r
+-      if ((lrn_standard = fopen ("standard.lrn", "wb+")) == NULL)\r
++      if ((lrn_standard = fopen (lrn_name, "wb+")) == NULL)\r
+       {\r
+         printf("Error creating standard learn file.\n");\r
+       }\r
+       else\r
+       {\r
+         fclose(lrn_standard);\r
+-        lrn_standard = fopen ("standard.lrn", "rb+");\r
++        lrn_standard = fopen (lrn_name, "rb+");\r
+       }\r
+     }\r
+-  if ((lrn_zh = fopen ("bug.lrn", "rb+")) == NULL)\r
++\r
++  strcpy(lrn_name + path_len, "bug.lrn");\r
++  if ((lrn_zh = fopen (lrn_name, "rb+")) == NULL)\r
+     {\r
+       printf("No crazyhouse learn file.\n");\r
\r
+-      if ((lrn_zh = fopen ("bug.lrn", "wb+")) == NULL)\r
++      if ((lrn_zh = fopen (lrn_name, "wb+")) == NULL)\r
+       {\r
+         printf("Error creating crazyhouse learn file.\n");\r
+       }\r
+       else\r
+       {\r
+         fclose(lrn_zh);\r
+-        lrn_zh = fopen ("bug.lrn", "rb+");\r
++        lrn_zh = fopen (lrn_name, "rb+");\r
+       }\r
+     }\r
+-  if ((lrn_suicide = fopen ("suicide.lrn", "rb+")) == NULL)\r
++\r
++  strcpy(lrn_name + path_len, "suicide.lrn");\r
++  if ((lrn_suicide = fopen (lrn_name, "rb+")) == NULL)\r
+     {\r
+       printf("No suicide learn file.\n");\r
\r
+-      if ((lrn_suicide = fopen ("suicide.lrn", "wb+")) == NULL)\r
++      if ((lrn_suicide = fopen (lrn_name, "wb+")) == NULL)\r
+       {\r
+         printf("Error creating suicide learn file.\n");\r
+       }\r
+       else\r
+       {\r
+         fclose(lrn_suicide);\r
+-        lrn_suicide = fopen ("suicide.lrn", "rb+");\r
++        lrn_suicide = fopen (lrn_name, "rb+");\r
+       }\r
+     }\r
+-  if ((lrn_losers = fopen ("losers.lrn", "rb+")) == NULL)\r
++\r
++  strcpy(lrn_name + path_len, "losers.lrn");\r
++  if ((lrn_losers = fopen (lrn_name, "rb+")) == NULL)\r
+     {\r
+       printf("No losers learn file.\n");\r
\r
+-      if ((lrn_losers = fopen ("losers.lrn", "wb+")) == NULL)\r
++      if ((lrn_losers = fopen (lrn_name, "wb+")) == NULL)\r
+       {\r
+         printf("Error creating losers learn file.\n");\r
+       }\r
+       else\r
+       {\r
+         fclose(lrn_losers);\r
+-        lrn_losers = fopen ("losers.lrn", "rb+");\r
++        lrn_losers = fopen (lrn_name, "rb+");\r
+       }\r
+     }\r
\r
+--- Sjeng-Free-11.2/newbook.c~ 2005-07-03 20:28:23.000000000 +0800
++++ Sjeng-Free-11.2/newbook.c  2005-07-03 21:00:52.000000000 +0800
+@@ -35,6 +35,10 @@
+ #error You need the GNU DBM library (GDBM). Go to ftp.gnu.org
+ #endif
++#ifndef BOOK_PATH
++#define BOOK_PATH "/usr/share/games/sjeng"
++#endif
++
+ typedef struct 
+ {
+   unsigned long hashkey;
+@@ -465,13 +469,13 @@
+   srand(time(0));
+   
+   if (Variant == Normal)
+-    binbook = gdbm_open("nbook.bin", 16384, GDBM_READER, 0, NULL);
++    binbook = gdbm_open(BOOK_PATH "/nbook.bin", 16384, GDBM_READER, 0, NULL);
+   else if (Variant == Suicide)
+-    binbook = gdbm_open("sbook.bin", 16384, GDBM_READER, 0, NULL);
++    binbook = gdbm_open(BOOK_PATH "/sbook.bin", 16384, GDBM_READER, 0, NULL);
+   else if (Variant == Losers)
+-    binbook = gdbm_open("lbook.bin", 16384, GDBM_READER, 0, NULL);
++    binbook = gdbm_open(BOOK_PATH "/lbook.bin", 16384, GDBM_READER, 0, NULL);
+   else 
+-    binbook = gdbm_open("zbook.bin", 16384, GDBM_READER, 0, NULL);
++    binbook = gdbm_open(BOOK_PATH "/zbook.bin", 16384, GDBM_READER, 0, NULL);
+     
+   
+   if (binbook == NULL)
+--- Sjeng-Free-11.2/Makefile.am.bak    2001-09-12 17:32:27.000000000 +0800
++++ Sjeng-Free-11.2/Makefile.am        2005-07-03 21:05:34.000000000 +0800
+@@ -4,5 +4,9 @@
+                 sjeng.c utils.c newbook.c proof.c neval.c rcfile.c\
+               leval.c draw.c see.c probe.c segtb.c\
+               protos.h extvars.h sjeng.h squares.h
++
++sjeng_CFLAGS = -DBOOK_PATH="\"$(datadir)/sjeng\"" \
++             -DSYSCONFDIR="\"$(sysconfdir)\""
++
+ EXTRA_DIST = TODO NEWS ChangeLog COPYING BUGS THANKS blob2.c sjeng.rc 
+ SUBDIRS = books tests
+--- Sjeng-Free-11.2/segtb.c.bak        2005-07-03 22:31:07.000000000 +0800
++++ Sjeng-Free-11.2/segtb.c    2005-07-03 22:55:02.000000000 +0800
+@@ -30,13 +30,17 @@
+ #define FILE(x)                          ((x) & 7)
+ #define RANK(x)                          ((x) >> 3)
++#ifndef BOOK_PATH
++#define BOOK_PATH "/usr/share/games/sjeng"
++#endif
++
+ #define TWO_PIECE_SIZE                   4096
+ #define TWO_PIECE_HASH(x,y,z)    (((((x) << 5) | (y)) << 6) | (z))
+-#define TWO_PIECE_FILE                   "stb/2pieces.bin"
++#define TWO_PIECE_FILE                   BOOK_PATH "/stb/2pieces.bin"
+ #define THREE_PIECE_SIZE         (64*TWO_PIECE_SIZE)
+ #define THREE_PIECE_HASH(x,y,z,w)  (((((((x) << 5) | (y)) << 6) | (z)) << 6) | (w))
+-#define THREE_PIECE_FILE         "stb/xxx.bin"
++#define THREE_PIECE_FILE         BOOK_PATH "/stb/xxx.bin"
+ #define TABLE_KEY(x,y,z)         (((((x) << 3) | (y)) << 3) | (z))
+@@ -510,9 +514,9 @@
+   /* generate the filename */
+   
+   strcpy(fname, THREE_PIECE_FILE);
+-  fname[4] = xpiece_char[w1_man];
+-  fname[5] = xpiece_char[b1_man];
+-  fname[6] = xpiece_char[b2_man];
++  fname[strlen(BOOK_PATH)+5] = xpiece_char[w1_man];
++  fname[strlen(BOOK_PATH)+6] = xpiece_char[b1_man];
++  fname[strlen(BOOK_PATH)+7] = xpiece_char[b2_man];
+   
+   if(!(f = fopen(fname,"w"))) return 0;
+   
+@@ -971,9 +975,9 @@
+   /* generate the filename */
+   
+   strcpy(fname, THREE_PIECE_FILE);
+-  fname[4]= xpiece_char[w1_man];
+-  fname[5]= xpiece_char[b1_man];
+-  fname[6]= xpiece_char[b2_man];
++  fname[strlen(BOOK_PATH)+5]= xpiece_char[w1_man];
++  fname[strlen(BOOK_PATH)+6]= xpiece_char[b1_man];
++  fname[strlen(BOOK_PATH)+7]= xpiece_char[b2_man];
+   
+   if(!(f = fopen(fname,"r"))) return 0;
+   
This page took 0.194627 seconds and 4 git commands to generate.