aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2011-05-03 10:10:59 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2011-05-03 10:10:59 -0400
commitff108a1414736fe057b4eada10f4a8c3dc32ac39 (patch)
tree942d28cad437dd20bf29cb60ad58ad4949b87c96
parent91af8f14863a516ff9aa80b703d8a34583e6e107 (diff)
parent4957bf13b26a403271c9838a9b74b9f61682fa8e (diff)
downloadduser-ff108a1414736fe057b4eada10f4a8c3dc32ac39.tar.gz
Merge pull request #5 from extrarius/master.
Various code clean ups to solve potential problems
-rw-r--r--compat/Makefile.am2
-rw-r--r--compat/Makefile.in2
-rw-r--r--compat/strcasestr.c96
-rw-r--r--compat/strchrnul.c15
-rw-r--r--include/cfg.h2
-rw-r--r--include/compat/strcasestr.h4
-rw-r--r--include/compat/strchrnul.h4
-rw-r--r--include/duser.h9
-rw-r--r--include/version.h2
-rw-r--r--src/Makefile.in1
-rw-r--r--src/log.c2
-rw-r--r--src/user.c21
12 files changed, 90 insertions, 70 deletions
diff --git a/compat/Makefile.am b/compat/Makefile.am
index 3482755..88a2689 100644
--- a/compat/Makefile.am
+++ b/compat/Makefile.am
@@ -1,6 +1,6 @@
noinst_LIBRARIES = libdusercompat.a
-AM_CPPFLAGS = -I$(top_srcdir)/include
+AM_CPPFLAGS = -I$(top_srcdir)/include/compat
libdusercompat_a_SOURCES= strcasestr.c \
strchrnul.c
diff --git a/compat/Makefile.in b/compat/Makefile.in
index 7faf34c..f54ed4e 100644
--- a/compat/Makefile.in
+++ b/compat/Makefile.in
@@ -186,7 +186,7 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
noinst_LIBRARIES = libdusercompat.a
-AM_CPPFLAGS = -I$(top_srcdir)/include
+AM_CPPFLAGS = -I$(top_srcdir)/include/compat
libdusercompat_a_SOURCES = strcasestr.c \
strchrnul.c
diff --git a/compat/strcasestr.c b/compat/strcasestr.c
index 2312733..1238616 100644
--- a/compat/strcasestr.c
+++ b/compat/strcasestr.c
@@ -1,51 +1,61 @@
-/**
-* duser - Manage MajorDomo lists
-* Copyright (C) 2011 Joseph Hunkeler <jhunkeler@gmail.com, jhunk@stsci.edu>
-*
-* This file is part of duser.
-*
-* duser is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 3 of the License, or
-* (at your option) any later version.
-*
-* duser is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with duser. If not, see <http://www.gnu.org/licenses/>.
-**/
+/* $OpenBSD: strcasestr.c,v 1.3 2006/03/31 05:34:55 deraadt Exp $ */
+/* $NetBSD: strcasestr.c,v 1.2 2005/02/09 21:35:47 kleink Exp $ */
+
+/*-
+ * Copyright (c) 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
-#include <stdio.h>
-#include <string.h>
#include <ctype.h>
+#include <string.h>
+#include "strcasestr.h"
/*
- * Locate substring
- *
- * The strstr() function finds the first occurrence of the substring needle
- * in the string haystack. The terminating '\0' characters are not compared.
- *
- * The strcasestr() function is like strstr(), but ignores the
- * case of both arguments.
+ * Find the first occurrence of find in s, ignore case.
*/
-char *strcasestr(const char *s, const char *find)
+char *
+strcasestr(const char *s, const char *find)
{
- char c, sc;
- size_t len;
+ char c, sc;
+ size_t len;
- if ((c = *find++) != 0) {
- c = tolower((unsigned char)c);
- len = strlen(find);
- do {
- do {
- if ((sc = *s++) == 0)
- return (NULL);
- } while ((char)tolower((unsigned char)sc) != c);
- } while (strncasecmp(s, find, len) != 0);
- s--;
- }
- return ((char *)s);
+ if ((c = *find++) != 0) {
+ c = (char)tolower((unsigned char)c);
+ len = strlen(find);
+ do {
+ do {
+ if ((sc = *s++) == 0)
+ return (NULL);
+ } while ((char)tolower((unsigned char)sc) != c);
+ } while (strncasecmp(s, find, len) != 0);
+ s--;
+ }
+ return ((char *)s);
}
diff --git a/compat/strchrnul.c b/compat/strchrnul.c
index ffc4f85..da8898b 100644
--- a/compat/strchrnul.c
+++ b/compat/strchrnul.c
@@ -18,9 +18,8 @@
* along with duser. If not, see <http://www.gnu.org/licenses/>.
**/
-#include <stdio.h>
#include <string.h>
-#include <ctype.h>
+#include "strchrnul.h"
/*
* Locate a char in a string
@@ -35,10 +34,12 @@
* if c is not found in s, then it returns a pointer to the
* null byte at the end of s, rather than NULL.
*/
-char *strchrnul(const char* s, int c)
+char *
+strchrnul (const char *s, int c_in)
{
- while(*s && *s != c)
- {
- s++;
- }
+ char c = c_in;
+ while (*s && (*s != c))
+ s++;
+
+ return (char *) s;
}
diff --git a/include/cfg.h b/include/cfg.h
index d3814f3..b50c16b 100644
--- a/include/cfg.h
+++ b/include/cfg.h
@@ -23,7 +23,7 @@
#define CFG_MAX 255
int cfg_open(const char* filename);
-void cfg_close();
+void cfg_close(void);
int cfg_get_key(char* val, const char* key);
#endif
diff --git a/include/compat/strcasestr.h b/include/compat/strcasestr.h
new file mode 100644
index 0000000..67917d0
--- /dev/null
+++ b/include/compat/strcasestr.h
@@ -0,0 +1,4 @@
+#ifndef STRCASESTR_H
+#define STRCASESTR_H
+char *strcasestr(const char *s, const char *find);
+#endif
diff --git a/include/compat/strchrnul.h b/include/compat/strchrnul.h
new file mode 100644
index 0000000..ca12806
--- /dev/null
+++ b/include/compat/strchrnul.h
@@ -0,0 +1,4 @@
+#ifndef STRCHRNUL_H
+#define STRCHRNUL_H
+char *strchrnul(const char* s, int c);
+#endif
diff --git a/include/duser.h b/include/duser.h
index d562b33..345bf49 100644
--- a/include/duser.h
+++ b/include/duser.h
@@ -58,11 +58,11 @@ typedef struct record_t
int pad3;
} record_t;
-void usage();
+void usage(void);
int strval(const char* str);
int strfind(const char* str1, const char* str2);
-int logcleanup();
-int COM(const char* func, char *format, ...);
+int logcleanup(void);
+int COM(const char* func, const char *format, ...);
record_t* find_in_file(const char* filename, const char* needle);
int get_file_count(const char* path);
char** get_file_list(const char* path, int count);
@@ -77,6 +77,5 @@ int user_cmd(const int argc, char* argv[]);
int user_choice(char c);
int user_add(const char* filename, const char* needle);
int user_new_list(const char* fname);
-char *strcasestr(const char *s, const char *find);
-char *strchrnul(const char* s, int c);
+int check_cmd_string(char** args, const char* str2, int count);
#endif
diff --git a/include/version.h b/include/version.h
index 52763c1..ddbf2b7 100644
--- a/include/version.h
+++ b/include/version.h
@@ -5,5 +5,5 @@
#define VER_MINOR "0"
#define VER_OTH " "
-void version();
+void version(void);
#endif
diff --git a/src/Makefile.in b/src/Makefile.in
index 15a1e3a..7f1b5d6 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -189,7 +189,6 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-LIBCOMPAT_LDADDS = $(top_builddir)/compat/libdusercompat.a
AM_CPPFLAGS = -I$(top_srcdir)/include
duser_LDFLAGS = -L$(top_srcdir)/compat
duser_SOURCES = duser.c \
diff --git a/src/log.c b/src/log.c
index c0c1051..0d58f54 100644
--- a/src/log.c
+++ b/src/log.c
@@ -43,7 +43,7 @@ int logcleanup()
return status;
}
-int COM(const char* func, char *format, ...)
+int COM(const char* func, const char *format, ...)
{
struct tm *logtm;
time_t logtime = time(NULL);
diff --git a/src/user.c b/src/user.c
index 3ff49b4..3c6ffd0 100644
--- a/src/user.c
+++ b/src/user.c
@@ -159,16 +159,16 @@ int user_del(record_t* rec)
int bytes = 0;
int bytes_total = 0;
char buf[REGEX_MAX];
- char tmpfile[255];
- snprintf(tmpfile, sizeof(tmpfile), "/tmp/duser.%s.XXXXXX", basename(rec->file));
- if((fd = mkstemp(tmpfile)) < 0 || (tfp = fdopen(fd, "r+")) == NULL)
+ char _tmpfile[255];
+ snprintf(_tmpfile, sizeof(_tmpfile), "/tmp/duser.%s.XXXXXX", basename(rec->file));
+ if((fd = mkstemp(_tmpfile)) < 0 || (tfp = fdopen(fd, "r+")) == NULL)
{
if(fd != -1)
{
close(fd);
- unlink(tmpfile);
+ unlink(_tmpfile);
}
- fprintf(stderr, "FATAL: %s: %s: %s\n", SELF, tmpfile, strerror(errno));
+ fprintf(stderr, "FATAL: %s: %s: %s\n", SELF, _tmpfile, strerror(errno));
exit(1);
}
@@ -220,7 +220,10 @@ int user_del(record_t* rec)
fclose(fp);
close(fd);
- unlink(tmpfile);
+
+ /* unistd.h requires this be a (const char *) not (struct FILE * (*)(void)) */
+ /* -- extrarius -- */
+ unlink((const char *)tmpfile);
if(bytes_total)
return bytes_total;
@@ -266,7 +269,7 @@ record_t* find_in_file(const char* filename, const char* needle)
rptr->index = 0;
rptr->match = 0;
- int index = 0;
+ int _index = 0;
FILE *fp;
char *fname = strdup(filename);
@@ -287,9 +290,9 @@ record_t* find_in_file(const char* filename, const char* needle)
{
snprintf(rptr->name, REGEX_MAX, "%s", cmp);
rptr->match = 1;
- rptr->index = index;
+ rptr->index = _index;
}
- index++;
+ _index++;
processed.lines++;
}