Exemple #1
0
char *rnd_state_to_string(rnd_t rnd)
{
	unsigned i;
	unsigned size = rnd_get_state_size_bytes();
	uint32_t *state;
	char *state_str;
	char * cur;

	if (!rnd) {
		fprintf(stderr,"rnd: No generator state!");
		exit(-1);
	}

	state = rnd_state_to_array(rnd);

	state_str = malloc(2*size+1);
	if (!state_str) {
		fprintf(stderr,"rnd: Malloc failed!");
		exit(-1);
	}

	cur = state_str;
	for (i=0; i<size/sizeof(uint32_t); i++) {
		cur = put_ul(cur, state[i]);
	}

	*cur = '\0';

	rnd_free_state_array(state);

	return state_str;
}
Exemple #2
0
static int 
doit(void)
{
	long save;
	int i;
	int lastnl;
	int use_replacement;

	if (flying) {
		return (flystate);
	}
	use_replacement = 0;
	save = ftell(workf);
	do {
		for (i = MAX_C_A - cabove; nls[i] < 0; i++);
		fseek(workf, nls[i], 0);
		for (i = save - nls[i] - rahead; i; i--) {
			putchar(getc(workf));
		}
		put_ul(use_replacement ? str2 : str1);
		fseek(workf, save + s1l - rahead, 0);
		lastnl = 0;
		i = cbelow + 1;
		while (i > 0) {
			int c;
			c = getc(workf);
			if (c == EOF) {
				clearerr(workf);
				break;
			}
			putchar(c);
			lastnl = 0;
			if (c == '\n') {
				i--;
				lastnl = 1;
			}
		}
		if (!lastnl)
			printf("\n[no final newline] ");
		fseek(workf, save, 0);
		i = -1;
		while (i == -1) {
			switch (getc_cbreak()) {
			case ' ':
				i = 1;
				break;
			case '.':
				i = 1;
				flying = 1;
				flystate = 0;
				break;
			case 'n':
				i = 0;
				break;
			case '\7':
				i = 0;
				flying = 1;
				flystate = 0;
				break;
			case '!':
				i = 1;
				flying = 1;
				flystate = 1;
				break;
			case ',':
				use_replacement = !use_replacement;
				i = -2;
				printf("(using %s string gives)\n",
				    use_replacement ? "new" : "old");
				break;
			case '?':
				printf("File is `%s'\n", current_file);
				break;
			default:
				putchar('\7');
				break;
			}
		}
	} while (i < 0);
	if (i) {
		printf("(replacing");
	} else {
		printf("(leaving");
	}
	if (flying) {
		if (flystate == i) {
			printf(" this and all the rest");
		} else if (flystate) {
			printf(" this, replacing all the rest");
		} else {
			printf(" this, leaving all the rest");
		}
	}
	printf(")\n");
	return (i);
}