sleep(MessageSecs);
PRIVATE void send_file_to_printer ARGS4(	document *,	newdoc,	char *,		content_base,	char *,		sug_filename,	int,		printer_number){    BOOLEAN FirstRecall = TRUE;    FILE *outfile_fp;    char *the_command = 0;    char my_file[LY_MAXPATH];    char my_temp[LY_MAXPATH];    int FnameTotal, FnameNum = -1;    lynx_printer_item_type *cur_printer;    outfile_fp = LYOpenTemp(my_temp,			    (HTisDocumentSource())				    ? HTML_SUFFIX				    : ".txt",			    "w");    if (outfile_fp == NULL) {	CannotPrint(FILE_ALLOC_FAILED);    }    if (LYPrependBaseToSource && HTisDocumentSource()) {	/*	 * Added the document's base as a BASE tag to the top of the file.  May	 * create technically invalid HTML, but will help get any partial or	 * relative URLs resolved properly if no BASE tag is present to replace	 * it.  - FM	 */	fprintf(outfile_fp,		"<!-- X-URL: %s -->\n<BASE HREF=\"%s\">\n\n",		newdoc->address, content_base);    }    print_wwwfile_to_fd(outfile_fp, 0);    if (keypad_mode)	printlist(outfile_fp, FALSE);    LYCloseTempFP(outfile_fp);    /* find the right printer number */    {	int count=0;	for (cur_printer = printers;	     count < printer_number;	     count++, cur_printer = cur_printer->next)	    ; /* null body */    }    /*     * Commands have the form "command %s [%s] [etc]" where %s is the filename     * and the second optional %s is the suggested filename.     */    if (cur_printer->command == NULL) {	CannotPrint(PRINTER_MISCONF_ERROR);    }    /*     * Check for two '%s' and ask for the second filename argument if there     * is.     */    if (HTCountCommandArgs (cur_printer->command) >= 2) {	_statusline(FILENAME_PROMPT);again:	SetupFilename(my_file, sug_filename);check_again:	switch (RecallFilename(my_file,     &FirstRecall, &FnameNum,			       &FnameTotal, PRINT_FLAG))  {	    case FN_INIT:		goto again;	    case FN_READ:		goto check_again;	    case FN_QUIT:		goto done;	    default:		break;	}	if (no_dotfiles || !show_dotfiles) {	    if (*LYPathLeaf(my_file) == '.') {		HTAlert(FILENAME_CANNOT_BE_DOT);		_statusline(NEW_FILENAME_PROMPT);		FirstRecall = TRUE;		FnameNum = FnameTotal;		goto again;	    }	}	/*	 * Cancel if the user entered "/dev/null" on Unix, or an "nl:" path	 * (case-insensitive) on VMS.  - FM	 */#ifdef VMS	if (!strncasecomp(my_file, "nl:", 3) ||	    !strncasecomp(my_file, "/nl/", 4))#else	if (!strcmp(my_file, "/dev/null"))#endif /* VMS */	{	    CancelPrint(PRINT_REQUEST_CANCELLED);	}	HTAddSugFilename(my_file);    }    HTAddParam (&the_command, cur_printer->command, 1, my_temp);    HTAddParam (&the_command, cur_printer->command, 2, my_file);    HTEndParam (&the_command, cur_printer->command, 2);    /*     * Move the cursor to the top of the screen so that output from system'd     * commands don't scroll up the screen.     */    move(1,1);    stop_curses();    CTRACE(tfp, "command: %s\n", the_command);    printf(PRINTING_FILE);    /*     * Set various bits of document information as environment variables, for     * use by external print scripts/etc.  On UNIX, We assume there are values,     * and leave NULL value checking up to the external PRINTER:  cmd/script -     * KED     */    SET_ENVIRON(LYNX_PRINT_TITLE,   HText_getTitle(),        "No Title");    SET_ENVIRON(LYNX_PRINT_URL,     newdoc->address,         "No URL");    SET_ENVIRON(LYNX_PRINT_DATE,    HText_getDate(),         "No Date");    SET_ENVIRON(LYNX_PRINT_LASTMOD, HText_getLastModified(), "No LastMod");    LYSystem(the_command);    FREE(the_command);    LYRemoveTemp(my_temp);    /*     * Remove the various LYNX_PRINT_xxxx logicals.  - KED     * [could use unsetenv(), but it's not portable]     */    SET_ENVIRON(LYNX_PRINT_TITLE,   "", "");    SET_ENVIRON(LYNX_PRINT_URL,     "", "");    SET_ENVIRON(LYNX_PRINT_DATE,    "", "");    SET_ENVIRON(LYNX_PRINT_LASTMOD, "", "");    fflush(stdout);#ifndef VMS    signal(SIGINT, cleanup_sig);#endif /* !VMS */    sleep(MessageSecs);    start_curses();done:    return;}