/* poke.c
 *
 * A little something to put a string into a file in a certain position
 */

#include <stdio.h>

void usage(void);

int main(int argc, char **argv) 
{
	FILE *fp;
	char *filename;
	char *string;
	long *position;

	if (argc != 4)	{
		usage();
		exit(0);
	}
	filename = argv[1];
	position = (long *) malloc(sizeof(long));
	sscanf(argv[2], "%ld", position);
	string = argv[3];

	fp = fopen(filename, "r+");
	if (fp == NULL)	{
		fprintf(stderr, "Cannot open file '%s'\n", filename);
		exit(1);
	}
	if (fseek(fp, *position, SEEK_SET) == 0) {
		fprintf(fp, "%s", string);
	} else {
		fprintf(stderr, "Cannot seek to position %l", *position);
		exit(1);
	}
	
	fclose(fp);
}

/* usage
 *
 * Display instructions
 */

void usage(void)
{
	printf ("Usage:\n\tpoke filename position string\n");
	printf ("Puts 'string' into 'filename' starting at 'position'\n");
}