home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Meeting Pearls 3
/
Meeting_Pearls_III.iso
/
Pearls
/
comm
/
Mail+News
/
UMS11
/
Developer
/
C
/
examples
/
PrintGroups.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-01-23
|
2KB
|
95 lines
/*
* PrintGroups.c - Print all groups in a message base
*
* (c) 1992 Klaus Melchior, Stefan Becker
*
*/
#include <proto/ums.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
extern struct Library *UMSBase;
int main(int argc, char *argv[])
{
UMSUserAccount *account;
/* Check arguments */
if (argc<3) {
fprintf(stderr,"Usage: %s <user> <passwd>\n",argv[0]);
exit(20);
}
/* Login */
if (account=UMSLogin(argv[1],argv[2])) {
char *group; /* Pointer to group name */
/* First group: all private messages */
if (group=strdup("")) {
UMSMsgNum num=0;
/* Print header */
printf("Group list:\n");
/* Set local bit 0 in all messages with NO ViewAccess */
UMSSelectTags(account,UMSTAG_SelWriteLocal, TRUE,
UMSTAG_SelSet, 1,
UMSTAG_SelQuick, TRUE,
UMSTAG_SelMask, UMSUSTATF_ViewAccess,
UMSTAG_SelMatch, 0,
TAG_DONE);
/* For all groups */
for (;;) {
/* Set local bit 0 on all messages in message group */
UMSSelectTags(account,UMSTAG_SelWriteLocal, TRUE,
UMSTAG_SelSet, 1,
UMSTAG_SelQuick, TRUE,
UMSTAG_WGroup, group,
TAG_DONE);
/* Free string */
free(group);
/* Search a message which has local bit 0 NOT set */
if ((num=UMSSearchTags(account,UMSTAG_SearchLocal, TRUE,
UMSTAG_SearchMask, 1,
UMSTAG_SearchMatch, 0,
UMSTAG_SearchQuick, TRUE,
TAG_DONE)) == 0)
/* No message found --> leave loop */
break;
/* Get group name */
if (!ReadUMSMsgTags(account,UMSTAG_RMsgNum, num,
UMSTAG_RGroup, &group,
TAG_DONE)) {
/* Print error message and quit */
fprintf(stderr,"Error in ReadUMSMsgTags()!\n");
break;
}
/* Copy group name */
if (!(group=strdup(group))) {
fprintf(stderr,"Couldn't copy group name !\n");
break;
}
/* Print group name */
printf("Group: %s\n",group);
/* Free UMS message */
FreeUMSMsg(account,num);
}
}
/* Logout */
UMSLogout(account);
} else
fprintf(stderr,"Couldn't login as '%s'!\n",argv[1]);
exit(0);
}