Skip to content

Commit 2d1d3bf

Browse files
committed
Bump & check version in JSON protocol
1 parent eeef5a9 commit 2d1d3bf

6 files changed

Lines changed: 24 additions & 3 deletions

File tree

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.0-rc1
1+
1.0.0-rc2

doc/e9patch.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,6 @@ Default: \fBfalse\fR (disabled)
183183
\fB\-\-version\fR
184184
Print the version and exit.
185185
.SH "SEE ALSO"
186-
\fIe9tool\fR(1), \fIe9compile\fR, \fIe9afl\fR(1), \fIredfat\fR(1)
186+
\fIe9tool\fR(1), \fIe9compile\fR(1), \fIe9afl\fR(1), \fIredfat\fR(1)
187187
.SH AUTHOR
188188
\fBe9patch\fR is written by Gregory J. Duck <gregory@comp.nus.edu.sg>.

src/e9patch/e9api.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ static void queuePatch(Binary *B, Instr *I, const Trampoline *T)
181181
*/
182182
static Binary *parseBinary(const Message &msg)
183183
{
184-
const char *filename = nullptr;
184+
const char *filename = nullptr, *version = nullptr;
185185
Mode mode = MODE_ELF_EXE;
186186
bool have_mode = false, dup = false;
187187
for (unsigned i = 0; i < msg.num_params; i++)
@@ -197,13 +197,24 @@ static Binary *parseBinary(const Message &msg)
197197
mode = (Mode)msg.params[i].value.integer;
198198
have_mode = true;
199199
break;
200+
case PARAM_VERSION:
201+
dup = dup || (version != nullptr);
202+
version = msg.params[i].value.string;
203+
break;
200204
default:
201205
break;
202206
}
203207
}
204208
if (filename == nullptr)
205209
error("failed to parse \"binary\" message (id=%u); missing "
206210
"\"filename\" parameter", msg.id);
211+
if (version == nullptr)
212+
error("failed to parse \"binary\" message (id=%u); missing "
213+
"\"version\" parameter", msg.id);
214+
if (strcmp(version, STRING(VERSION)) != 0)
215+
error("failed to parse \"binary\" message (id=%u); invalid "
216+
"version \"%s\"; expected \"%s\"", msg.id, version,
217+
STRING(VERSION));
207218
if (dup)
208219
error("failed to parse \"binary\" message (id=%u); duplicate "
209220
"parameters detected", msg.id);

src/e9patch/e9json.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,7 @@ static bool validateParam(Method method, ParamName paramName)
505505
{
506506
case PARAM_FILENAME:
507507
case PARAM_MODE:
508+
case PARAM_VERSION:
508509
return true;
509510
default:
510511
return false;
@@ -1113,6 +1114,10 @@ static void parseParams(Parser &parser, Message &msg)
11131114
else if (strcmp(parser.s, "template") == 0)
11141115
name = PARAM_TEMPLATE;
11151116
break;
1117+
case 'v':
1118+
if (strcmp(parser.s, "version") == 0)
1119+
name = PARAM_VERSION;
1120+
break;
11161121
}
11171122
expectToken(parser, ':');
11181123
if (!validateParam(msg.method, name))
@@ -1144,6 +1149,7 @@ static void parseParams(Parser &parser, Message &msg)
11441149
break;
11451150
case PARAM_FILENAME:
11461151
case PARAM_NAME:
1152+
case PARAM_VERSION:
11471153
expectToken(parser, TOKEN_STRING);
11481154
value.string = dupString(parser.s);
11491155
break;

src/e9patch/e9json.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ enum ParamName
6262
PARAM_PROTECTION,
6363
PARAM_TEMPLATE,
6464
PARAM_TRAMPOLINE,
65+
PARAM_VERSION,
6566
};
6667

6768
/*

src/e9tool/e9frontend.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,9 @@ unsigned e9tool::sendBinaryMessage(FILE *out, const char *mode,
278278
const char *filename)
279279
{
280280
sendMessageHeader(out, "binary");
281+
sendParamHeader(out, "version");
282+
sendString(out, STRING(VERSION));
283+
sendSeparator(out);
281284
sendParamHeader(out, "filename");
282285
sendString(out, filename);
283286
sendSeparator(out);

0 commit comments

Comments
 (0)