summaryrefslogtreecommitdiff
path: root/server/subscr.c
diff options
context:
space:
mode:
authorGravatar John Kohl <jtkohl@mit.edu>1988-06-22 10:19:17 +0000
committerGravatar John Kohl <jtkohl@mit.edu>1988-06-22 10:19:17 +0000
commit519cda84a5e2a880a937655bcda7ba8d278411b7 (patch)
treee3c9ededa11531f171cc7bb4140a9b790631387a /server/subscr.c
parent7ded7f304a134a94a5f2e9e80543ca3a765580d9 (diff)
lint fixes along with bugfix (old calling seq on ZFormatRawNoticeList,
some bad return statements, a change in default subscriptions to support subscr_subscribe_real
Diffstat (limited to 'server/subscr.c')
-rw-r--r--server/subscr.c39
1 files changed, 20 insertions, 19 deletions
diff --git a/server/subscr.c b/server/subscr.c
index 73ddcf8..abf9ef2 100644
--- a/server/subscr.c
+++ b/server/subscr.c
@@ -80,6 +80,7 @@ static int subscr_equiv(), clt_unique();
static void free_subscriptions(), free_sub();
static char **subscr_marshal_subs();
static Code_t subscr_subscribe_real();
+static ZSubscr_t *subscr_copy_def_subs();
static int defaults_read = 0; /* set to 1 if the default subs
are in memory */
@@ -120,19 +121,20 @@ ZNotice_t *notice;
if (!(subs = extract_subscriptions(notice)))
return(ZERR_NONE); /* no subscr -> no error */
- return(subscr_subscribe_real(who, subs));
+ return(subscr_subscribe_real(who, subs, notice));
}
static Code_t
-subscr_subscribe_real(who, newsubs)
+subscr_subscribe_real(who, newsubs, notice)
ZClient_t *who;
register ZSubscr_t *newsubs;
+ZNotice_t *notice;
{
int relation;
int omask;
Code_t retval;
ZAcl_t *acl;
- register ZSubscr_t *subs2, *subs3;
+ register ZSubscr_t *subs2, *subs3, *subs;
omask = sigblock(sigmask(SIGFPE)); /* don't let db dumps start */
for (subs = newsubs->q_forw;
@@ -238,7 +240,7 @@ ZClient_t *who;
}
subs = subscr_copy_def_subs(who->zct_principal);
- return(subscr_subscribe_real(who, subs));
+ return(subscr_subscribe_real(who, subs, &default_notice));
}
void
@@ -256,7 +258,7 @@ char *person;
int fd;
struct stat statbuf;
char *def_sub_area;
- register char *cp, *cp1;
+ register char *cp;
ZSubscr_t *subs;
register ZSubscr_t *subs2;
@@ -264,21 +266,21 @@ char *person;
fd = open(DEFAULT_SUBS_FILE, O_RDONLY, 0666);
if (fd < 0) {
syslog(LOG_ERR, "can't open %s:%m", DEFAULT_SUBS_FILE);
- return(errno);
+ return((ZSubscr_t *)0);
}
retval = fstat(fd, &statbuf);
if (retval < 0) {
syslog(LOG_ERR, "fstat failure on %s:%m",
DEFAULT_SUBS_FILE);
(void) close(fd);
- return(errno);
+ return((ZSubscr_t *)0);
}
if (!(def_sub_area = xmalloc(statbuf.st_size + 1))) {
syslog(LOG_ERR, "no mem copy_def_subs");
(void) close(fd);
- return(ENOMEM);
+ return((ZSubscr_t *)0);
}
- retval = read(fd, def_sub_area, statbuf.st_size);
+ retval = read(fd, def_sub_area, (int) statbuf.st_size);
/*
"Upon successful completion, read and readv return the number
of bytes actually read and placed in the buffer. The system
@@ -291,7 +293,7 @@ char *person;
if (retval != statbuf.st_size) {
syslog(LOG_ERR, "short read in copy_def_subs");
(void) close(fd);
- return(ZSRV_LEN);
+ return((ZSubscr_t *)0);
}
(void) close(fd);
@@ -313,10 +315,13 @@ char *person;
cp++)
if ((*cp == '\n') || (*cp == ','))
*cp = '\0';
- def_notice.z_message = def_sub_area;
- def_notice.z_message_len = statbuf.st_size + 1;
+ default_notice.z_message = def_sub_area;
+ default_notice.z_message_len = statbuf.st_size + 1;
+ /* these are needed later for access_check() */
+ default_notice.z_sender = person;
+ default_notice.z_auth = 1;
}
- subs = extract_subscriptions(&def_notice);
+ subs = extract_subscriptions(&default_notice);
/* replace any non-* recipients with "person" */
for (subs2 = subs->q_forw; subs2 != subs; subs2 = subs2->q_forw)
@@ -788,8 +793,6 @@ struct sockaddr_in *who;
if ((retval = ZSetDestAddr(&send_to_who)) != ZERR_NONE) {
syslog(LOG_WARNING, "new_old_subscr_sendlist set addr: %s",
error_message(retval));
- if (answer)
- xfree(answer);
return;
}
@@ -851,7 +854,7 @@ struct sockaddr_in *who;
register ZSubscr_t *subs;
Code_t retval;
ZNotice_t reply;
- ZPacket_t reppacket;
+ char *reppacket;
int packlen, i, found = 0;
char **answer = (char **) NULL;
@@ -895,14 +898,12 @@ struct sockaddr_in *who;
reply.z_authent_len = 0; /* save some space */
reply.z_auth = 0;
- packlen = sizeof(reppacket);
/* if it's too long, chop off one at a time till it fits */
while ((retval = ZFormatRawNoticeList(&reply,
answer,
found * NUM_FIELDS,
- reppacket,
- packlen,
+ &reppacket,
&packlen)) == ZERR_PKTLEN) {
found--;
reply.z_opcode = OLD_CLIENT_INCOMPSUBS;