diff options
-rw-r--r-- | compat/Makefile.am | 2 | ||||
-rw-r--r-- | compat/Makefile.in | 2 | ||||
-rw-r--r-- | compat/strcasestr.c | 96 | ||||
-rw-r--r-- | compat/strchrnul.c | 15 | ||||
-rw-r--r-- | include/cfg.h | 2 | ||||
-rw-r--r-- | include/compat/strcasestr.h | 4 | ||||
-rw-r--r-- | include/compat/strchrnul.h | 4 | ||||
-rw-r--r-- | include/duser.h | 9 | ||||
-rw-r--r-- | include/version.h | 2 | ||||
-rw-r--r-- | src/Makefile.in | 1 | ||||
-rw-r--r-- | src/log.c | 2 | ||||
-rw-r--r-- | src/user.c | 21 |
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 \ @@ -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); @@ -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++; } |