File: expect.cc

package info (click to toggle)
gri 2.4.2-1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 4,540 kB
  • ctags: 1,966
  • sloc: cpp: 32,542; lisp: 3,243; perl: 806; makefile: 548; sh: 253
file content (105 lines) | stat: -rw-r--r-- 3,746 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include        <string>
#include        <stdio.h>
#include        "gr.hh"
#include        "extern.hh"

#if defined(__DECCXX)
extern "C" char *index(const char *s, int c); // DEC-cxx needs this (dunno why)
#endif

extern char     _grTempString[];

bool
expectingCmd()
{
    double          version_expected, this_version;
    if (_nword != 3) {
	demonstrate_command_usage();
	NUMBER_WORDS_ERROR;
	return false;
    }
    char *dot1 = index(_word[2], int('.'));
    if (dot1 == NULL) {
	err("Version number must have a decimal point");
	return false;
    }
    char *dot2 = index(dot1 + 1, int('.'));
    bool only_one_dot = false;
    if (dot2 == NULL) {
	only_one_dot = true;
	if (!getdnum(_word[2], &version_expected)) {
	    demonstrate_command_usage();
	    READ_WORD_ERROR(".version.");
	    return false;
	}
	version_expected = atof(_word[2]);
    } else {
	char *dot3 = index(dot2 + 1, int('.'));
	if (dot3 != NULL) {
	    err("Version number must not have more than two decimal points");
	    return false;
	}
	int major, minor, minorminor;
	if (3 != sscanf(_word[2], "%d.%d.%d", &major, &minor, &minorminor)) {
	    err("Cannot decode version number");
	    return false;
	}
	version_expected = major + float(minor) / 100.0 + float(minorminor) / 10000.0;
    }
    _version_expected = version_expected;
    this_version = _version;
    if (!only_one_dot && this_version < version_expected) {
	sprintf(_grTempString, "\
WARNING: You are expecting a gri version (%.4f) more recent than\n\
the present version (%.4f); this might cause problems.\n\n",
		double(version_expected), double(this_version));
	ShowStr(_grTempString);
    }
    if (only_one_dot && version_expected < 1.064) {
	ShowStr("\
\nFollowing is a list of things changed in Gri since the version you\n\
are expecting.  Note that this list includes *all* commands, even if you\n\
are not using them in your Gri program.\n\n");
	ShowStr("\
\nIncompatibilities introduced in version 1.064:\n\
* `{rpn x column_min}' RENAMED `{rpn x min}'; same for\n\
   the column_max and column_mean operators.\n\
* Disallow multiple statements on one line, separated by semicolons\n\n");
    }
    if (only_one_dot && version_expected < 1.037) {
	ShowStr("\
\nIncompatibilities introduced in version 1.037:\n\
* `draw image grayscale' RENAMED `draw image palette'\n\n");
    }
    if (only_one_dot && version_expected < 1.036) {
	ShowStr("\
\nIncompatibilities introduced in version 1.036:\n\
* ALL image commands now require `set image range' to have been first.\n\
  In a related change, `convert grid to image' now does not permit the\n\
  `white' and `black' options, and `read image' now does not permit the\n\
  `scale' option.  Although these changes are obnoxious, they should\n\
  make images much more reliable and easy to use.\n\n");
    }
    if (only_one_dot && version_expected < 1.034) {
	ShowStr("\
\nIncompatibilities introduced in version 1.034:\n\
* Within math - mode, normal letters appear in italics, as in TeX.\n\n");
    }
    if (only_one_dot && only_one_dot && version_expected < 1.033) {
	ShowStr("\
\nIncompatibilities introduced in version 1.033:\n\
* The commandline option ` -extract ' is renamed `-creator'.\n\
* `convert columns to grid neighborhood ' is removed since it was\n\
  pretty useless.  (It' s easy enough to do in awk.\n\
* `convert columns to grid planar ' is removed; use the `boxcar'\n\
  method instead.\n\
* The commandline option ` -quiet ' is removed; use `-chatty' instead.\n\n");
    }
    if (only_one_dot && version_expected < 1.050) {
	ShowStr("\
\nIncompatibilities introduced in version 1.050:\n\
* The `function' command has been removed, and all builtin functions\n\
  replaced with RPN functions\n\n");
    }
    return true;
}