Esempio n. 1
0
 static char *
Tmpnam(char *s)
{
	static char *s0;
	if (s)
		return my_tempnam(0,"Temp_",s);
	if (s0)
		free(s0);
	return s0 = my_tempnam(0,"Temp_",0);
	}
Esempio n. 2
0
 static char *
Tempnam(const char *dir, const char *pfx)
{ return my_tempnam(dir,pfx,0); }
Esempio n. 3
0
void
vNewsrcTestHarness(
	void)
{
	char seq[20000];
	char *temp_file = NULL;
	FILE *fp;
	int i;
	int retry = 10; /* max. retrys */
	int fd;
	long rng_min, rng_max;
	struct t_group group;

	/*
	 * those env.-vars are not documented:
	 * $TIN_RNG_MIN, $TIN_RNG_MAX, $TIN_MIN, $TIN_MAX, $TIN_COUNT
	 * $TIN_SEQ
	 */
	rng_min = atoi(get_val("TIN_RNG_MIN", "1"));
	rng_max = atoi(get_val("TIN_RNG_MAX", "1"));

	group.name = my_strdup("test.newsrc");
	group.xmin = atoi(get_val("TIN_MIN", "1"));
	group.xmax = atoi(get_val("TIN_MAX", "0"));
	group.count = atoi(get_val("TIN_COUNT", "-1"));
	group.type = GROUP_TYPE_NEWS;
	group.subscribed = TRUE;
	group.newsrc.xbitmap = (t_bitmap *) 0;
	set_default_bitmap(&group);

	strcpy(seq, get_val("TIN_SEQ", ""));

	my_printf("\nENV Min=[%ld] Max=[%ld] Rng=[%ld-%ld] Count=[%ld] Seq=[%s]\n",
		group.xmin, group.xmax, rng_min, rng_max, group.count, seq);

	for (i = 0; i < 3; i++) {
		if (group.newsrc.xbitmap != NULL) {
			free(group.newsrc.xbitmap);
			group.newsrc.xbitmap = (t_bitmap *) 0;
			group.newsrc.xbitlen = 0;
			group.newsrc.num_unread = 0;
			group.newsrc.xmin = 1;
			group.newsrc.xmax = 0;
		}
		while (retry) {
		/* FIXME - this is secure now, but doesn't write any debug output */
		/* (it didn't before too) */
			if ((temp_file = my_tempnam("", "NEWSRC")) != NULL) {
				if ((fd = open (temp_file, (O_CREAT|O_EXCL), (S_IRUSR|S_IWUSR))) != -1) {
					if ((fp = fopen(temp_file, "w")) != NULL) {
						my_printf("\n%d. PARSE Seq=[%s]\n", i + 1, seq);
						parse_bitmap_seq(&group, seq);
						debug_print_newsrc(&group.newsrc, stdout);
						print_bitmap_seq(fp, &group);
						my_printf("   PRINT Seq=[");
						print_bitmap_seq(stdout, &group);
						fclose(fp);
					} else
						retry--;
					close(fd);
					break;
				} else
					retry--;
			} else
				retry--;
		}

		debug_print_newsrc(&group.newsrc, stdout);

		if (!retry)
			error_message(_(txt_cannot_create_uniq_name));
		else {
			fp = fopen(temp_file, "r");
			fgets(seq, (int) sizeof(seq), fp);
			seq[strlen(seq) - 1] = '\0';
			fclose(fp);
		}
	}
#	ifdef DEBUG_NEWSRC_FIXME	/* something's broken here */
	set_bitmap_range_read(&group.newsrc, rng_min, rng_max);
	debug_print_newsrc(&group.newsrc, stdout);

	set_bitmap_range_unread(&group.newsrc, rng_min, rng_max);
	debug_print_newsrc(&group.newsrc, stdout);

	NSETBLK0(group.newsrc.xbitmap, group.newsrc.xbitlen);
	debug_print_newsrc(&group.newsrc, stdout);

	NSETBLK1(group.newsrc.xbitmap, group.newsrc.xbitlen);
	debug_print_newsrc(&group.newsrc, stdout);
#	endif /* DEBUG_NEWSRC_FIXME */
	my_printf("\n");
}