[dovecot-cvs] dovecot/src/lib-storage/subscription-file
subscription-file.c,1.21,1.22
cras at procontrol.fi
cras at procontrol.fi
Thu Nov 20 18:20:57 EET 2003
Update of /home/cvs/dovecot/src/lib-storage/subscription-file
In directory danu:/tmp/cvs-serv10798/lib-storage/subscription-file
Modified Files:
subscription-file.c
Log Message:
Bugfixes
Index: subscription-file.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/subscription-file/subscription-file.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- subscription-file.c 20 Oct 2003 05:01:58 -0000 1.21
+++ subscription-file.c 20 Nov 2003 16:20:55 -0000 1.22
@@ -47,10 +47,13 @@
{
const char *line;
+ *failed = FALSE;
+ if (input == NULL)
+ return NULL;
+
while ((line = i_stream_next_line(input)) == NULL) {
switch (i_stream_read(input)) {
case -1:
- *failed = FALSE;
return NULL;
case -2:
/* mailbox name too large */
@@ -63,7 +66,6 @@
}
}
- *failed = FALSE;
return line;
}
@@ -104,7 +106,8 @@
return FALSE;
}
- input = i_stream_create_file(fd_in, default_pool,
+ input = fd_in == -1 ? NULL :
+ i_stream_create_file(fd_in, default_pool,
MAX_MAILBOX_LENGTH, TRUE);
output = o_stream_create_file(fd_out, default_pool,
MAX_MAILBOX_LENGTH, FALSE);
@@ -112,16 +115,16 @@
while ((line = next_line(storage, path, input, &failed)) != NULL) {
if (strcmp(line, name) == 0) {
found = TRUE;
- if (set)
- break;
- } else {
- if (o_stream_send_str(output, line) < 0 ||
- o_stream_send(output, "\n", 1) < 0) {
- subsfile_set_syscall_error(storage, "write()",
- path);
- failed = TRUE;
- break;
- }
+ if (!set)
+ continue;
+ }
+
+ if (o_stream_send_str(output, line) < 0 ||
+ o_stream_send(output, "\n", 1) < 0) {
+ subsfile_set_syscall_error(storage, "write()",
+ path);
+ failed = TRUE;
+ break;
}
}
@@ -134,7 +137,8 @@
}
}
- i_stream_unref(input);
+ if (input != NULL)
+ i_stream_unref(input);
o_stream_unref(output);
if (failed || (set && found) || (!set && !found)) {
More information about the dovecot-cvs
mailing list