home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
TELECOM
/
OSKBox.lzh
/
MAILBOX
/
CC
/
bidclean.c
< prev
next >
Wrap
Text File
|
1992-01-17
|
2KB
|
107 lines
/* #define DEBUG */
#include <stdio.h>
#include <ctype.h>
#include <direct.h>
#include <setjmp.h>
#include <signal.h>
#include "mailbox.h"
#define headsize sizeof (struct msg_header)
#define MAXBID 100
#define MAXMSG 100
struct userstruct user;
char bid_list[MAXBID][13];
struct msg_header msg_list[MAXMSG];
extern int eflag;
main (argc, argv)
char *argv[];
{
int day, tick;
int i, max_bid;
chdir (HOME);
strcpy (user.uscall, "BIDCLN");
user.usopt = ISSUPER;
max_bid = read_bid ();
for (i = 0; i < max_bid; i++)
clean_bid (bid_list[i]);
}
read_bid ()
{
int f;
int i, len;
char line[80];
#ifdef DEBUG
printf ("read_bid\n");
#endif
if ((f = open ("bidclean.lst", 1)) < 0) return (0);
for (i = 0; i < MAXBID && (len = readln (f, line, 80)); i++) {
line[len-1] = '\0';
scanword (line, bid_list + i, 13);
upper (bid_list + i);
#ifdef DEBUG
printf (" %s\n", bid_list+i);
#endif
}
close (f);
return (i);
}
clean_bid (bid_pat)
char *bid_pat;
{
struct msg_header *head;
int i, j, pat_len, max_val;
#ifdef DEBUG
int flag = 1;
eflag = 1;
printf ("clean_bid (%s)\n", bid_pat);
#endif
pat_len = strlen (bid_pat);
open_mail ();
i = 0;
while ((head = next_mail (is_gnum, 0)) != NULL && i < MAXMSG)
if (strncmp (bid_pat, head->mhbid, pat_len) == 0) {
movmem (head, &msg_list[i++], headsize);
}
/* if (i < 2) return; */
max_val = 0;
for (j = 0; j < i; j++) {
max_val = max (max_val, atoi ((msg_list[j].mhbid) + pat_len));
#ifdef DEBUG
fflush (stdout);
print_header (msg_list+j, 1, flag); flag = 0;
#endif
}
#ifdef DEBUG
printf (" max = %d\n", max_val);
#endif
for (j = 0; j < i; j++) {
#ifdef DEBUG
printf (" msg# %d val=%d\n", msg_list[j].mhnr, atoi ((msg_list[j].mhbid)+pat_len));
#endif
if (atoi ((msg_list[j].mhbid) + pat_len) < max_val) {
#ifdef DEBUG
printf (" kill\n");
#endif
reset_mail ();
head = next_mail (is_num, msg_list[j].mhnr);
head->mhstat = 'X';
update_mail ();
log ("K %d", head->mhnr);
}
}
close_mail ();
}
max (a,b)
{
return ((a > b) ? a : b);
}