ftp.nice.ch/pub/next/unix/communication/pcomm.NIHS.bs.tar.gz#/pcomm/Source/redial.c

This is redial.c in view mode; [Download] [Up]

/*
 * The redial option (actually a misnomer, it's really a queuing system).
 * We expect a space-separated list of dialing directory entries (although
 * new users always try to put in a phone number).  A non-zero return code
 * means we're ready to dial.
 */

#include <stdio.h>
#include <curses.h>
#include "config.h"
#include "dial_dir.h"
#include "misc.h"

int
redial()
{
	extern int fd;
	WINDOW *rd_win, *newwin();
	char *ans, *entry, *get_str(), *strchr(), *strtok();
	int i, oops, number, ret_code;

	rd_win = newwin(6, 70, 5, 5);

	mvwaddstr(rd_win, 4, 23, "(<CR> for previous numbers)");
	mvwaddstr(rd_win, 2, 4, "Directory Entry Number(s): ");
	box(rd_win, VERT, HORZ);

	mvwattrstr(rd_win, 0, 3, A_BOLD, " Redial Queue ");
	wmove(rd_win, 2, 31);
	wrefresh(rd_win);
					/* get the string of numbers */
	ret_code = 0;
	while ((ans = get_str(rd_win, 35, "0123456789+-@# ", "")) != NULL) {
		oops = 0;
		if (*ans == '\0') {
					/* use previous queue */
			if (dir->q_num[0] != -1) {
				ret_code++;
				break;
			}
					/* there is no previous queue */
			beep();
			mvwattrstr(rd_win, 3, 4, A_BOLD, "No previous numbers");
			wrefresh(rd_win);
			wait_key(rd_win, 3);
			clear_line(rd_win, 3, 4, TRUE);
			wmove(rd_win, 2, 31);
			wrefresh(rd_win);
			continue;
		}
					/* parse the queue values */
		entry = strtok(ans, " \t");
		for (i=0; i<NUM_QUEUE; i++) {
			if (entry == NULL) {
				dir->q_num[i] = -1;
				continue;
			}
					/* is there a LD code? */
			dir->q_ld[i] = '\0';
			if (strchr("+-@#", *entry)) {
				dir->q_ld[i] = *entry;
				entry++;
			}

			/*
			 * Zero is valid here, because it means use
			 * the current entry information.
			 */
			number = atoi(entry);
			if (number < -1 || number > NUM_DIR) {
				beep();
				mvwattrstr(rd_win, 3, 4, A_BOLD, "Invalid directory entry number");
				wrefresh(rd_win);
				wait_key(rd_win, 3);
				clear_line(rd_win, 3, 4, TRUE);
				clear_line(rd_win, 2, 31, TRUE);
				wrefresh(rd_win);
				oops++;
				break;
			}
					/* store the number in the queue */
			dir->q_num[i] = number;
			entry = strtok((char *) NULL, " \t");
		}
		if (oops)
			continue;
		ret_code++;
		break;
	}
	if (fd == -1) {
		werase(rd_win);
		wrefresh(rd_win);
	}
	delwin(rd_win);
	return(ret_code);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.