mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-01 11:32:48 -05:00
Marshalling macros put_dataz and put_datalit.
When I wanted to append an ordinary C string to a BinarySink, without any prefix length field or suffix terminator, I was using the idiom put_datapl(bs, ptrlen_from_asciz(string)); but I've finally decided that's too cumbersome, and it deserves a shorter name. put_dataz(bs, string) now does the same thing - in fact it's a macro expanding to exactly the above. While I'm at it, I've also added put_datalit(), which is the same except that it expects a C string literal (and will enforce that at compile time, via PTRLEN_LITERAL which it calls in turn). You can use that where possible to avoid the run-time cost of the strlen.
This commit is contained in:
@ -889,7 +889,7 @@ static INT_PTR CALLBACK HostKeyDialogProc(HWND hwnd, UINT msg,
|
||||
for (size_t i = 0; ctx->keywords[i]; i++) {
|
||||
if (strstartswith(p, ctx->keywords[i])) {
|
||||
p += strlen(ctx->keywords[i]);
|
||||
put_datapl(sb, ptrlen_from_asciz(ctx->values[i]));
|
||||
put_dataz(sb, ctx->values[i]);
|
||||
goto matched;
|
||||
}
|
||||
}
|
||||
|
@ -366,7 +366,7 @@ int main(int argc, char **argv)
|
||||
while (argc > 0) {
|
||||
if (cmdbuf->len > 0)
|
||||
put_byte(cmdbuf, ' '); /* add space separator */
|
||||
put_datapl(cmdbuf, ptrlen_from_asciz(p));
|
||||
put_dataz(cmdbuf, p);
|
||||
if (--argc > 0)
|
||||
p = *++argv;
|
||||
}
|
||||
|
Reference in New Issue
Block a user