char *boardname = "10x10";
char *filename = NULL;
+int maxnbrecords = 0;
int scale = 2;
int xoffset = 1;
fprintf (fd, " -h: help message\n");
fprintf (fd, " -f: file name (%s)\n", (filename) ? filename : "none");
fprintf (fd, " -s: scale [0..3] (%d)\n", scale);
+ fprintf (fd, " -r: max nb records (%d)\n", maxnbrecords);
fprintf (fd, " -v: verbose level (%d)\n", verbose);
fprintf (fd, "%s version %s\n", progname, version);
}
verbose = atoi (arg);
break;
+ case 'r':
+ arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
+ if (arg == NULL) {
+ VERBOSE (ERROR, fprintf (stderr, "%s: missing max number of records\n", progname));
+ return usage (1);
+ }
+ maxnbrecords = atoi (arg);
+ break;
case 'h':
default:
return usage (c != 'h');
}
setscale (board, scale);
+ /* init recorder */
+ int *rec = NULL;
+ if (maxnbrecords) {
+ rec = (int *) calloc (maxnbrecords, sizeof (int));
+ CHECKALLOC (rec);
+ }
+ int nbrecords = 0;
+
/* init curses window */
initscr ();
noecho ();
}
int ch = getch ();
+ if (maxnbrecords) {
+ if (nbrecords < maxnbrecords) {
+ rec[nbrecords++] = ch;
+ } else {
+ memmove (rec + 1, rec, nbrecords - 1);
+ rec[nbrecords] = ch;
+ }
+ }
+
switch (ch) {
case ' ':
case 'c':
}
endwin ();
+
+ if (nbrecords) {
+ int i;
+ printf ("records: ");
+ for (i = 0; i < nbrecords; i++) {
+ if ((rec[i] > 31) && (rec[i] < 128)) {
+ printf ("%c", rec[i]);
+ } else {
+ printf ("0x%x", rec[i]);
+ }
+ }
+ printf ("\n");
+ }
+
+ free (rec);
freecache (cache);
freeboard (board);
/* test: solitaire.exe -h | grep usage */
/* test: solitaire.exe -s 2>&1 | grep 'no scale' */
/* test: solitaire.exe -s 4 2>&1 | grep incorrect */
+/* test: solitaire.exe -r 2>&1 | grep missing */
/* test: solitaire.exe -v 2>&1 | grep missing */
/* test: solitaire.exe _ 2>&1 | grep invalid */
-/* test: { echo lkji; sleep 1; echo -n q; } | solitaire.exe -v 4 */
+/* test: { echo -n lkji; sleep 1; echo -n q; } | solitaire.exe -v 4 */
+/* test: { echo -n lllclvkkliciv; sleep 1; echo -n ijjjkkclv; sleep 1; echo -n llicijkxxccjkv; sleep 1; echo -n q; } | solitaire.exe */
/* vim: set ts=4 sw=4 et: */