home *** CD-ROM | disk | FTP | other *** search
- /*
- * PrintGroups.c - Print all groups in a message base
- *
- * (c) 1992 Klaus Melchior, Stefan Becker
- *
- */
-
- #include <clib/ums_protos.h>
- #include <pragmas/ums_pragmas.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);
- }
-