#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
#include "constant.h"
#include "debug.h"
return buffer;
}
-int writedata (char *filename, char *data)
+int writedata (char *pattern, char *data)
{
int ret = 0;
- FILE *fd = fopen (filename, "w");
+
+ char *name = (char *) calloc (1, strlen (pattern) + 1 + 8 + 4);
+ CHECKALLOC (name);
+ char *ptr = strchr (pattern, '%');
+ int p = (ptr != NULL) ? ptr - pattern : 0;
+ if (p > 0) {
+ strncpy (name, pattern, p);
+ }
+ sprintf (name + p, "%ld%s", time (NULL), pattern + p + 1);
+
+ FILE *fd = fopen (name, "w");
if (fd) {
size_t n = fwrite (data, strlen (data), 1, fd);
fclose (fd);
ret = (n == strlen (data));
+ } else {
+ VERBOSE (WARNING, printf ("Can't write file (%s)\n", name));
}
+
+ free (name);
+
return ret;
}
char *savedata (int nbplayers, char *lang, char *board, play_t *play, draw_t *draw, draw_t **game, int n, play_t **turn, int *score);
-int writedata (char *filename, char *data);
+int writedata (char *pattern, char *data);
char *loaddata (char *filename);
int nbplayers = 2;
char *dict = NULL;
char *file = NULL;
+char *pattern = "save-%.scr";
int cache = 0;
int xoffset = 4;
int usage (int ret)
{
FILE *fd = ret ? stderr : stdout;
- fprintf (fd, "usage: %s [-b board] [-c] [-d dict] [-h] [-l lang] [-n nb] [-v level]\n", progname);
+ fprintf (fd, "usage: %s [-b board] [-c] [-d dict] [-h] [-l lang] [-n nb] [-r file] [-s pattern] [-v level]\n", progname);
fprintf (fd, " -b: board (%s)\n", boardname);
fprintf (fd, " -c: cache dictionary\n");
fprintf (fd, " -d: dictionary (%s)\n", (dict) ? dict : "none");
fprintf (fd, " -l: language (%s)\n", language);
fprintf (fd, " -n: number of players (%d)\n", nbplayers);
fprintf (fd, " -r: restore game (%s)\n", (file) ? file : "none");
+ fprintf (fd, " -s: save pattern (%s)\n", (pattern) ? pattern : "none");
fprintf (fd, " -v: verbose level (%d)\n", verbose);
fprintf (fd, "%s version %s\n", progname, version);
}
file = arg;
break;
+ case 's':
+ arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
+ if (arg == NULL) {
+ VERBOSE (ERROR, fprintf (stderr, "%s: missing saving pattern\n", progname));
+ return usage (1);
+ }
+ pattern = arg;
+ break;
case 'v':
arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
if (arg == NULL) {
break;
case 's':
data = savedata (nbplayers, language, boardname, play, draw, game, n, turn, score);
- writedata ("data.scr", data);
+ writedata (pattern, data);
free (data);
break;
case 't':
/* test: scrabble.exe -l aa 2>&1 | grep 'not found' */
/* test: scrabble.exe -n 2>&1 | grep 'no number' */
/* test: scrabble.exe -n 5 2>&1 | grep 'incorrect' */
+/* test: scrabble.exe -r 2>&1 | grep 'missing file name' */
+/* test: scrabble.exe -s 2>&1 | grep 'missing saving pattern' */
/* test: scrabble.exe -v 2>&1 | grep missing */
/* test: scrabble.exe _ 2>&1 | grep invalid */
/* test: echo vlvjxdvjvjvcivkkvkvctJcLccLLLLLLLLJJJJJJJJq | scrabble.exe */