aboutsummaryrefslogtreecommitdiffstats
path: root/FICS/utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'FICS/utils.c')
-rw-r--r--FICS/utils.c54
1 files changed, 38 insertions, 16 deletions
diff --git a/FICS/utils.c b/FICS/utils.c
index ce02a5d..fd0a8e3 100644
--- a/FICS/utils.c
+++ b/FICS/utils.c
@@ -38,6 +38,7 @@
in truncate_file().
Markus Uhlin 25/03/09 truncate_file:
fixed null ptr dereference.
+ Markus Uhlin 25/04/06 Fixed Clang Tidy warnings.
*/
#include "stdinclude.h"
@@ -275,10 +276,10 @@ pcommand(int p, char *comstr, ...)
return retval;
}
-PUBLIC int
+PUBLIC void
pprintf(int p, const char *format, ...)
{
- char tmp[10 * MAX_LINE_SIZE];
+ char tmp[10 * MAX_LINE_SIZE] = { '\0' };
int retval;
va_list ap;
@@ -286,8 +287,8 @@ pprintf(int p, const char *format, ...)
retval = vsnprintf(tmp, sizeof tmp, format, ap);
va_end(ap);
+ UNUSED_VAR(retval);
net_send_string(parray[p].socket, tmp, 1);
- return retval;
}
PRIVATE void
@@ -393,7 +394,7 @@ pprintf_noformat(int p, char *format, ...)
}
PUBLIC int
-psend_raw_file(int p, char *dir, char *file)
+psend_raw_file(int p, const char *dir, const char *file)
{
FILE *fp;
char fname[MAX_FILENAME_SIZE] = { '\0' };
@@ -408,9 +409,18 @@ psend_raw_file(int p, char *dir, char *file)
if ((fp = fopen(fname, "r")) == NULL)
return -1;
- while ((num = fread(tmp, sizeof(char), MAX_LINE_SIZE - 1, fp)) > 0) {
- tmp[num] = '\0';
- net_send_string(parray[p].socket, tmp, 1);
+ while (!feof(fp) && !ferror(fp)) {
+ if ((num = fread(tmp, sizeof(char), MAX_LINE_SIZE - 1,
+ fp)) > 0) {
+ tmp[num] = '\0';
+ net_send_string(parray[p].socket, tmp, 1);
+ }
+ }
+
+ if (ferror(fp)) {
+ warnx("%s: %s: the error indicator is set", __func__, fname);
+ fclose(fp);
+ return -1;
}
fclose(fp);
@@ -418,7 +428,7 @@ psend_raw_file(int p, char *dir, char *file)
}
PUBLIC int
-psend_file(int p, char *dir, char *file)
+psend_file(int p, const char *dir, const char *file)
{
FILE *fp;
char fname[MAX_FILENAME_SIZE] = { '\0' };
@@ -445,6 +455,12 @@ psend_file(int p, char *dir, char *file)
}
if (!feof(fp)) {
+ if (ferror(fp)) {
+ warnx("%s: %s: the error indicator is set", __func__,
+ fname);
+ fclose(fp);
+ return -1;
+ }
parray[p].last_file = xstrdup(fname);
parray[p].last_file_byte = ftell(fp);
pprintf(p, "Type [next] to see next page.\n");
@@ -513,8 +529,17 @@ pmore_file(int p)
}
if (!feof(fp)) {
- parray[p].last_file_byte = ftell(fp);
- pprintf(p, "Type [next] to see next page.\n");
+ if (ferror(fp)) {
+ warnx("%s: %s: the error indicator is set", __func__,
+ parray[p].last_file);
+ fclose(fp);
+ return -1;
+ } else if ((parray[p].last_file_byte = ftell(fp)) == -1) {
+ warn("%s: %s: ftell", __func__, parray[p].last_file);
+ fclose(fp);
+ return -1;
+ } else
+ pprintf(p, "Type [next] to see next page.\n");
} else {
rfree(parray[p].last_file);
parray[p].last_file = NULL;
@@ -964,10 +989,11 @@ ratstrii(int rat, int reg)
* Fill 't_buffer' with anything matching "want*" in file tree
*/
PRIVATE void
-t_sft(char *want, struct t_tree *t)
+t_sft(const char *want, struct t_tree *t)
{
if (t) {
- int cmp = strncmp(want, t->name, strlen(want));
+ const char *v_want = (want ? want : "");
+ int cmp = strncmp(v_want, t->name, strlen(v_want));
if (cmp <= 0) // If 'want' <= this one, look left
t_sft(want, t->left);
@@ -1050,7 +1076,6 @@ PUBLIC int
search_directory(char *dir, char *filter, char **buffer, int buffersize)
{
int cmp;
- static char nullify = '\0';
static struct t_dirs *ramdirs = NULL;
struct stat statbuf;
struct t_dirs** i;
@@ -1059,9 +1084,6 @@ search_directory(char *dir, char *filter, char **buffer, int buffersize)
t_buffersize = buffersize;
if (!stat(dir, &statbuf)) {
- if (filter == NULL) // NULL becomes pointer to null string
- filter = &nullify;
-
i = &ramdirs;
while (*i) { // Find dir in dir tree