From: mmj Date: Thu, 22 Apr 2004 17:41:20 +0000 (+1000) Subject: Bye bye readln--you wont be missed. X-Git-Tag: RELEASE_1_0_0~303 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ea6cce58837ef5a9596d91d0fd0c10cb006c2771;p=thirdparty%2Fmlmmj.git Bye bye readln--you wont be missed. --- diff --git a/include/readln.h b/include/readln.h deleted file mode 100644 index fb9eea9a..00000000 --- a/include/readln.h +++ /dev/null @@ -1,16 +0,0 @@ -/* Copyright (C) 2002, 2003 Mads Martin Joergensen - * - * $Id$ - * - * This file is redistributable under version 2 of the GNU General - * Public License as described at http://www.gnu.org/licenses/gpl.txt - */ - -#ifndef READLN_H -#define READLN_H - -#include - -ssize_t readln(int fd, char *buf, size_t bufsize); - -#endif /* READLN_H */ diff --git a/src/Makefile.am b/src/Makefile.am index a19ca56f..0ca510cf 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -30,9 +30,9 @@ mlmmj_process_SOURCES = mlmmj-process.c writen.c find_email_adr.c \ mlmmj_subscribe_SOURCES = mlmmj-subscribe.c writen.c mylocking.c \ getlistaddr.c chomp.c random-int.c strgen.c \ - subscriberfuncs.c readln.c print-version.c \ - log_error.c + subscriberfuncs.c print-version.c \ + log_error.c mygetline.c -mlmmj_unsubscribe_SOURCES = mlmmj-unsubscribe.c writen.c readln.c mylocking.c\ +mlmmj_unsubscribe_SOURCES = mlmmj-unsubscribe.c writen.c mylocking.c\ getlistaddr.c chomp.c subscriberfuncs.c random-int.c \ - strgen.c print-version.c log_error.c + strgen.c print-version.c log_error.c mygetline.c diff --git a/src/Makefile.in b/src/Makefile.in index 90ef47f1..50f262fb 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -81,15 +81,15 @@ mlmmj_send_LDADD = $(LDADD) am_mlmmj_subscribe_OBJECTS = mlmmj-subscribe.$(OBJEXT) \ writen.$(OBJEXT) mylocking.$(OBJEXT) getlistaddr.$(OBJEXT) \ chomp.$(OBJEXT) random-int.$(OBJEXT) strgen.$(OBJEXT) \ - subscriberfuncs.$(OBJEXT) readln.$(OBJEXT) \ - print-version.$(OBJEXT) log_error.$(OBJEXT) + subscriberfuncs.$(OBJEXT) print-version.$(OBJEXT) \ + log_error.$(OBJEXT) mygetline.$(OBJEXT) mlmmj_subscribe_OBJECTS = $(am_mlmmj_subscribe_OBJECTS) mlmmj_subscribe_LDADD = $(LDADD) am_mlmmj_unsubscribe_OBJECTS = mlmmj-unsubscribe.$(OBJEXT) \ - writen.$(OBJEXT) readln.$(OBJEXT) mylocking.$(OBJEXT) \ - getlistaddr.$(OBJEXT) chomp.$(OBJEXT) \ - subscriberfuncs.$(OBJEXT) random-int.$(OBJEXT) \ - strgen.$(OBJEXT) print-version.$(OBJEXT) log_error.$(OBJEXT) + writen.$(OBJEXT) mylocking.$(OBJEXT) getlistaddr.$(OBJEXT) \ + chomp.$(OBJEXT) subscriberfuncs.$(OBJEXT) random-int.$(OBJEXT) \ + strgen.$(OBJEXT) print-version.$(OBJEXT) log_error.$(OBJEXT) \ + mygetline.$(OBJEXT) mlmmj_unsubscribe_OBJECTS = $(am_mlmmj_unsubscribe_OBJECTS) mlmmj_unsubscribe_LDADD = $(LDADD) binSCRIPT_INSTALL = $(INSTALL_SCRIPT) @@ -116,8 +116,8 @@ am__depfiles_maybe = depfiles @AMDEP_TRUE@ ./$(DEPDIR)/mlmmj-unsubscribe.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/mygetline.Po ./$(DEPDIR)/mylocking.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/print-version.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/random-int.Po ./$(DEPDIR)/readln.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/send_help.Po ./$(DEPDIR)/strgen.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/random-int.Po ./$(DEPDIR)/send_help.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/strgen.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/subscriberfuncs.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/writen.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ @@ -224,12 +224,12 @@ mlmmj_process_SOURCES = mlmmj-process.c writen.c find_email_adr.c \ mlmmj_subscribe_SOURCES = mlmmj-subscribe.c writen.c mylocking.c \ getlistaddr.c chomp.c random-int.c strgen.c \ - subscriberfuncs.c readln.c print-version.c \ - log_error.c + subscriberfuncs.c print-version.c \ + log_error.c mygetline.c -mlmmj_unsubscribe_SOURCES = mlmmj-unsubscribe.c writen.c readln.c mylocking.c\ +mlmmj_unsubscribe_SOURCES = mlmmj-unsubscribe.c writen.c mylocking.c\ getlistaddr.c chomp.c subscriberfuncs.c random-int.c \ - strgen.c print-version.c log_error.c + strgen.c print-version.c log_error.c mygetline.c all: all-am @@ -350,7 +350,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mylocking.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-version.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/random-int.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readln.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/send_help.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strgen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subscriberfuncs.Po@am__quote@ diff --git a/src/mlmmj-unsubscribe.c b/src/mlmmj-unsubscribe.c index dc82eb69..8c32e911 100644 --- a/src/mlmmj-unsubscribe.c +++ b/src/mlmmj-unsubscribe.c @@ -20,7 +20,7 @@ #include "mlmmj-subscribe.h" #include "mylocking.h" #include "wrappers.h" -#include "readln.h" +#include "mygetline.h" #include "getlistaddr.h" #include "subscriberfuncs.h" #include "strgen.h" @@ -233,18 +233,22 @@ void generate_unsubconfirm(const char *listdir, const char *listaddr, void unsubscribe(int subreadfd, int subwritefd, const char *address) { - char buf[4096]; + char *buf; + FILE *subfile; lseek(subreadfd, 0, SEEK_SET); lseek(subwritefd, 0, SEEK_SET); - /* XXX: readln only guarantees to have read a complete line - * when the last char is a newline, so a check should be made - */ - while(readln(subreadfd, buf, sizeof(buf)) > 0) + if((subfile = fdopen(subreadfd, "r")) == NULL) { + log_error("could not fdopen subfilefd"); + exit(EXIT_FAILURE); + } + + while((buf = mygetline(subfile))) { if(strncasecmp(buf, address, strlen(address)) != 0) writen(subwritefd, buf, strlen(buf)); - + free(buf); + } ftruncate(subwritefd, lseek(subwritefd, 0, SEEK_CUR)); } diff --git a/src/readln.c b/src/readln.c deleted file mode 100644 index 3c25d854..00000000 --- a/src/readln.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 2002, 2003 Mads Martin Joergensen - * - * $Id$ - * - * This file is redistributable under version 2 of the GNU General - * Public License as described at http://www.gnu.org/licenses/gpl.txt - */ - -#include -#include -#include -#include -#include "readln.h" - -/*! Read a line from filedescriptor fd. If bufsize-1 have been read and no - * newline was found, zero terminate it and return. We can only guarantee to - * have finished reading a line if there's a newline as the last char in the - * buffer 'buf - */ -ssize_t readln(int fd, char *buf, size_t bufsize) -{ - ssize_t len = 0, rlen = 0; - - do { - rlen = read(fd, buf + len, bufsize - len - 1); - if(rlen < 0) { - if(errno == EINTR) - continue; - else - return -1; - } else { - if(rlen == 0) { - buf[len] = '\0'; - return len; - } - } - len += rlen; - } while(buf[len - 1] != '\n'); - - buf[len] = '\0'; - - return len; -} diff --git a/src/subscriberfuncs.c b/src/subscriberfuncs.c index a5630fca..c71e4b4b 100644 --- a/src/subscriberfuncs.c +++ b/src/subscriberfuncs.c @@ -9,21 +9,35 @@ #include #include #include +#include #include "mlmmj.h" #include "subscriberfuncs.h" -#include "readln.h" +#include "mygetline.h" +#include "log_error.h" int find_subscriber(int subfilefd, const char *address) { - char buf[READ_BUFSIZE]; + char *buf; + FILE *subfile; - while (readln(subfilefd, buf, sizeof(buf))) { + if((subfile = fdopen(subfilefd, "r")) == NULL) { + log_error("could not fdopen subfilefd"); + exit(EXIT_FAILURE); + } + + while ((buf = mygetline(subfile))) { while (buf[0] && isspace(buf[strlen(buf)-1])) buf[strlen(buf)-1] = '\0'; - if (strcasecmp(buf, address) == 0) + if (strcasecmp(buf, address) == 0) { + free(buf); return 0; + } + free(buf); } + + free(buf); + return 1; }