Esempio n. 1
0
int cmbmenu(char *cmbparams)
{
	if (!cmbparams)
		return changemsgbase(0, 0);
	return changemsgbase(atoi(cmbparams), 0);

}
Esempio n. 2
0
static void scan_msgbase(int num)
{
	int i, first = -1;
	char *headers;
		
	if (!changemsgbase(num, MC_QUICK | MC_NOSTAT))
		return;
	
	getmsgptrs();
	
	if (!(headers = get_headers()))
		return;

	for (i = lowest; i <= highest; i++) {
		if (!headers[i - lowest]) 
			continue;
		if (!simple_search(i))
			headers[i - lowest] = 0;
		else if (first == -1)
			first = i;
	}

	if (first == -1)
		return;
	
	readmessages(-1, first, headers);
		       
	free(headers);
}
Esempio n. 3
0
int comment(void)
{
    int oldb;

    if (!conference()->conf.CONF_COMMENTAREA)
        return 0;

    oldb = current_msgbase->MSGBASE_NUMBER;

    if (changemsgbase(conference()->conf.CONF_COMMENTAREA, MC_QUICK | MC_NOSTAT)) {
        entermsg(0, 0, maincfg.CFG_SYSOPNAME);
        changemsgbase(oldb, MC_QUICK | MC_NOSTAT);
        return 1;
    }
    return 0;
}
Esempio n. 4
0
static int getin(void)
{
	int clfd;
	char buffer[256];
	struct gcallerslog gcl;

	onlinestat = 1;
	enterbbs();
	
	if (current_msgbase)
		changemsgbase(current_msgbase->MSGBASE_NUMBER, MC_QUICK | MC_NOSTAT);

	createflaglist();
	user.user_timeremaining = timeleft / 60;
	saveuserbase(&user);
	clog.cl_logoff = time(0);
	snprintf(buffer, sizeof buffer, "%s/logfiles/callerslog%d.dat", 
		origdir, node);
	clfd = open(buffer, O_WRONLY | O_CREAT, 0666);
	if (clfd != -1) {
		fsetperm(clfd, 0666);
		lseek(clfd, 0, SEEK_END);
		safe_write(clfd, &clog, sizeof(struct callerslog));
		(void) close(clfd);
	}
	snprintf(buffer, sizeof buffer, "%s/logfiles/callerslog.dat", 
		origdir);
	clfd = open(buffer, O_WRONLY | O_CREAT, 0666);
	if (clfd != -1) {
		fsetperm(clfd, 0666);
		gcl.cl_node = node;
		gcl.cl = clog;
		lseek(clfd, 0, SEEK_END);
		safe_write(clfd, &gcl, sizeof(struct gcallerslog));
		(void) close(clfd);
	} 
	if (currnode->MULTI_OTHERFLAGS & (1L << 1)) {
		char mesbuf[1024];
		snprintf(mesbuf, sizeof mesbuf, 
			"\n%s from %s logged off from node #%d\n",
			maincfg.CFG_FLAGS & (1L << 1) ? user.user_handle : user.user_realname,
			maincfg.CFG_FLAGS & (1L << 2) ? user.user_organization : user.user_zipcity,
			node);

		olmall(2, mesbuf);
	}
	runlogoffbatch();
	onlinestat = 0;
	return 1;
}
Esempio n. 5
0
static void do_conference_wide_scan(void)
{
	int i, cm;
		
	if (!isanybasestagged(conference()->conf.CONF_NUMBER)) {
		ddprintf("%s", errstr[TS_NO_BASES_TAGGED]);
		return;
	}
	
	cm = current_msgbase->MSGBASE_NUMBER;
		
	for (i = 1; i <= conference()->conf.CONF_MSGBASES; i++) {
		if (!isbasetagged(conference()->conf.CONF_NUMBER, i))
			continue;
		scan_msgbase(i);
	}
	
	changemsgbase(cm, MC_QUICK | MC_NOSTAT);
}
Esempio n. 6
0
int prevbase(void)
{
	return changemsgbase(current_msgbase->MSGBASE_NUMBER - 1, 0);
}
Esempio n. 7
0
int nextbase(void)
{
	return changemsgbase(current_msgbase->MSGBASE_NUMBER + 1, 0);
}
Esempio n. 8
0
int joinconf(int confn, int flags)
{
	int newconfnum;
	conference_t *mc;
	struct iterator *iterator;

	char jbuffer[100];
	
	newconfnum = confn;

	changenodestatus("Changing conference");

	if ((flags & JC_LIST) && newconfnum == -1)
		TypeFile("joinconference", TYPE_WARN | TYPE_MAKE);


	while (newconfnum == -1) {		
		jbuffer[0] = 0;
		DDPut(sd[jcpromptstr]);
		if (!(Prompt(jbuffer, 3, 0)))
			return 0;
		if ((!strcasecmp(jbuffer, "l")) || jbuffer[0] == '?')
			TypeFile("joinconference", TYPE_WARN | TYPE_MAKE);
		else if (jbuffer[0] == 0)
			return 0;
		else {
			char *endptr;
			newconfnum = strtol(jbuffer, &endptr, 10);
			if (*jbuffer && !*endptr)
				break;
		}
		
		newconfnum = -1;
	}
	
	iterator = conference_iterator();
	while ((mc = (conference_t *) iterator_next(iterator))) {
		if (mc->conf.CONF_NUMBER != newconfnum)
			continue;
		
		if (!checkconfaccess(newconfnum, &user)) {
			if (!(flags & JC_SHUTUP)) {
				DDPut(sd[jcnoaccessstr]);
			}
			iterator_discard(iterator);
			return 0;
		}
				
		if (*mc->conf.CONF_PASSWD && !(flags & JC_SHUTUP) && !(flags & JC_QUICK)) {
			conference_t *oldconf = conference();
			
			set_conference(mc);
			TypeFile("conferencepw", TYPE_CONF | TYPE_MAKE);
			set_conference(oldconf);
			
			DDPut("Conference password: ");
			*jbuffer = 0;
			if (!(Prompt(jbuffer, 16, PROMPT_SECRET))) {
				iterator_discard(iterator);
				return 0;
			}
			if (strcasecmp(jbuffer, mc->conf.CONF_PASSWD)) {
				iterator_discard(iterator);
				return 0;
			}
		}
		
		if (!(flags & JC_NOUPDATE))
			user.user_joinconference = newconfnum;
		set_conference(mc);
		
		if (conference()->conf.CONF_MSGBASES)
			current_msgbase = conference()->msgbases[0];
		else 
			current_msgbase = NULL;

		if (!(flags & JC_QUICK)) {
			TypeFile("conferencejoined", TYPE_MAKE | TYPE_CONF);
		}
		
		if (current_msgbase) {
			if (flags & JC_QUICK) {
				changemsgbase(current_msgbase->MSGBASE_NUMBER, MC_QUICK | MC_NOSTAT);
			} else {
				changemsgbase(current_msgbase->MSGBASE_NUMBER, MC_QUICK);
			}
		}
		iterator_discard(iterator);
		return 1;
	}
	iterator_discard(iterator);
		
	if (!(flags & JC_SHUTUP)) {
		DDPut(sd[jcnoconfstr]);
	}

	return 0;
}