Module: ngircd.git Branch: master Commit: 9e1c25a889d7a18c1df7f13da64dc38e1a3a9eec URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=9e1c2...
Author: Alexander Barton alex@barton.de Date: Mon Dec 31 19:26:31 2012 +0100
Refactor Read_Motd() into Read_TextFile()
Now this function allows to read arbitrary text files into arrays.
---
src/ngircd/conf.c | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-)
diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c index bea4d61..423221c 100644 --- a/src/ngircd/conf.c +++ b/src/ngircd/conf.c @@ -784,39 +784,44 @@ no_listenports(void) }
/** - * Read MOTD ("message of the day") file. + * Read contents of a text file into an array. + * + * This function is used to read the MOTD and help text file, for exampe. * * @param filename Name of the file to read. + * @return true, when the file has been read in. */ -static void -Read_Motd(const char *filename) +static bool +Read_TextFile(const char *Filename, const char *Name, array *Destination) { char line[127]; FILE *fp; + int line_no = 1;
- if (*filename == '\0') - return; + if (*Filename == '\0') + return false;
- fp = fopen(filename, "r"); + fp = fopen(Filename, "r"); if (!fp) { - Config_Error(LOG_WARNING, "Can't read MOTD file "%s": %s", - filename, strerror(errno)); - return; + Config_Error(LOG_WARNING, "Can't read %s file "%s": %s", + Name, Filename, strerror(errno)); + return false; }
- array_free(&Conf_Motd); - Using_MotdFile = true; - + array_free(Destination); while (fgets(line, (int)sizeof line, fp)) { - ngt_TrimLastChr( line, '\n'); + ngt_TrimLastChr(line, '\n');
/* add text including \0 */ - if (!array_catb(&Conf_Motd, line, strlen(line) + 1)) { - Log(LOG_WARNING, "Cannot add MOTD text: %s", strerror(errno)); + if (!array_catb(Destination, line, strlen(line) + 1)) { + Log(LOG_WARNING, "Cannot read/add "%s", line %d: %s", + Filename, line_no, strerror(errno)); break; } + line_no++; } fclose(fp); + return true; }
/** @@ -1037,8 +1042,10 @@ Read_Config(bool TestOnly, bool IsStarting) }
/* No MOTD phrase configured? (re)try motd file. */ - if (array_bytes(&Conf_Motd) == 0) - Read_Motd(Conf_MotdFile); + if (array_bytes(&Conf_Motd) == 0) { + if (Read_TextFile(Conf_MotdFile, "MOTD", &Conf_Motd)) + Using_MotdFile = true; + }
#ifdef SSL_SUPPORT /* Make sure that all SSL-related files are readable */
ngircd-commits@lists.barton.de