3 * Created: Sun Feb 25 22:07:34 2001 by tek@wiw.org
4 * Revised: Sun Feb 25 22:07:34 2001 (pending)
5 * Copyright 2001 Julian E. C. Squires (tek@wiw.org)
6 * This program comes with ABSOLUTELY NO WARRANTY.
7 * $Id: newsrc.c,v 1.3 2001/02/28 14:52:01 tek Exp $
18 int newsrc_filter(char *rcfile
, char *group
, rangelist_t
**rl
);
19 int newsrc_getsubscribedgroups(char *newsrc
, int *ngroups
, char ***groups
);
21 int newsrc_filter(char *rcfile
, char *group
, rangelist_t
**rl
)
25 int buflen
= 80, lineno
, begin
, end
;
27 fp
= fopen(rcfile
, "r");
29 fprintf(stderr
, "%s: %s\n", PROGNAME
, strerror(errno
));
33 buffer
= malloc(buflen
);
35 fprintf(stderr
, "%s: Out of memory.\n", PROGNAME
);
41 fgets(buffer
, buflen
, fp
);
42 while(buffer
[strlen(buffer
)-1] != '\n' && !feof(fp
)) {
44 buffer
= realloc(buffer
, buflen
);
46 fprintf(stderr
, "%s: Out of memory.\n", PROGNAME
);
49 fgets(buffer
+strlen(buffer
)-1, buflen
-strlen(buffer
)-1, fp
);
52 } while(strncmp(buffer
, group
, strlen(group
)) != 0 && !feof(fp
));
55 for(p
= buffer
; *p
!= ' ' && *p
; p
++);
61 if(strchr(p
, '-') != NULL
) {
62 end
= atoi(strchr(p
, '-')+1);
65 rl_exclude(rl
, begin
, end
);
66 } while(p
= strtok(NULL
, ",\n"), p
!= NULL
);
74 int newsrc_getsubscribedgroups(char *rcfile
, int *ngroups
, char ***groups
)
78 int buflen
= 80, lineno
;
80 fp
= fopen(rcfile
, "r");
82 fprintf(stderr
, "%s: %s\n", PROGNAME
, strerror(errno
));
86 buffer
= malloc(buflen
);
88 fprintf(stderr
, "%s: Out of memory.\n", PROGNAME
);
96 fgets(buffer
, buflen
, fp
);
97 while(buffer
[strlen(buffer
)-1] != '\n' && !feof(fp
)) {
99 buffer
= realloc(buffer
, buflen
);
101 fprintf(stderr
, "%s: Out of memory at %s line %d.\n",
102 PROGNAME
, rcfile
, lineno
);
105 fgets(buffer
+strlen(buffer
)-1, buflen
-strlen(buffer
)-1, fp
);
108 if(buffer
[strlen(buffer
)-1] == '\n')
109 buffer
[strlen(buffer
)-1] = 0;
111 for(p
= buffer
; *p
!= ' ' && *p
; p
++);
112 if(*(p
-1) == ':') { /* subscribed */
114 *groups
= realloc(*groups
, sizeof(char *)*(*ngroups
));
116 (*groups
)[*ngroups
-1] = strdup(buffer
);
118 } else if(*(p
-1) == '!') { /* not subscribed */
119 } else { /* usually a blank line or similar */