You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
932 B
40 lines
932 B
/*
|
|
* Copyright 2014 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*
|
|
* This is a very simple binary editor, used to create corrupted structs for
|
|
* testing. It copies stdin to stdout, replacing bytes beginning at the given
|
|
* offset with the specified 8-bit values.
|
|
*
|
|
* There is NO conversion checking of the arguments.
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
uint32_t offset, curpos, curarg;
|
|
int c;
|
|
|
|
if (argc < 3) {
|
|
fprintf(stderr, "Need two or more args: OFFSET VAL [VAL...]\n");
|
|
return 1;
|
|
}
|
|
|
|
offset = (uint32_t)strtoul(argv[1], 0, 0);
|
|
curarg = 2;
|
|
for ( curpos = 0; (c = fgetc(stdin)) != EOF; curpos++) {
|
|
|
|
if (curpos == offset && curarg < argc) {
|
|
c = (uint8_t)strtoul(argv[curarg++], 0, 0);
|
|
offset++;
|
|
}
|
|
|
|
fputc(c, stdout);
|
|
}
|
|
return 0;
|
|
}
|