if ((p = (LY_TEMP *)calloc(1, sizeof(LY_TEMP))) != 0) {
if ((p = typecalloc(LY_TEMP)) != 0) {
PUBLIC FILE *LYOpenTemp ARGS3(	char *,		result,	CONST char *,	suffix,	CONST char *,	mode){    FILE *fp = 0;    BOOL txt = TRUE;    BOOL wrt = 'r';    LY_TEMP *p;    CTRACE(tfp, "LYOpenTemp(,%s,%s)\n", suffix, mode);    if (result == 0)	return 0;    while (*mode != '\0') {	switch (*mode++) {	case 'w':	wrt = 'w';	break;	case 'a':	wrt = 'a';	break;	case 'b':	txt = FALSE;	break;	default:		CTRACE(tfp, "%s @%d: BUG\n", __FILE__, __LINE__);		return fp;	}    }    do {	if (!fmt_tempname(result, lynx_temp_space, suffix))	    return 0;	if (txt) {	    switch (wrt) {	    case 'w':		fp = LYNewTxtFile (result);		break;	    case 'a':		fp = LYAppendToTxtFile (result);		break;	    }	} else {	    fp = LYNewBinFile (result);	}	/*	 * If we get a failure to make a temporary file, don't bother to try a	 * different name unless the failure was because the file already	 * exists.	 */#ifdef EEXIST	/* FIXME (need a better test) in fcntl.h or unistd.h */	if ((fp == 0) && (errno != EEXIST)) {	    CTRACE(tfp, "... LYOpenTemp(%s) failed: %s\n",		   result, LYStrerror(errno));	    return 0;	}#endif    } while (fp == 0);    if ((p = (LY_TEMP *)calloc(1, sizeof(LY_TEMP))) != 0) {	p->next = ly_temp;	StrAllocCopy((p->name), result);	p->file = fp;	ly_temp = p;    } else {	outofmem(__FILE__, "LYOpenTemp");    }    CTRACE(tfp, "... LYOpenTemp(%s)\n", result);    return fp;}