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); }
static char * Tempnam(const char *dir, const char *pfx) { return my_tempnam(dir,pfx,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"); }