diff --git a/ChangeLog b/ChangeLog index 2163610..de525dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3834,3 +3834,10 @@ Tue Aug 22 21:35:50 PDT 2000 Michael Jennings This should fix the selection problems between Eterm and other apps. ------------------------------------------------------------------------------- +Wed Aug 30 22:58:18 PDT 2000 Michael Jennings + + Massive reorganization/rewrite to libmej. It should now be 100% + independent of Eterm. There still may be some gremlins in the memory + debugging code, so don't use too high a number with --debug.... + +------------------------------------------------------------------------------- diff --git a/configure.in b/configure.in index e8aeeb8..6d9466c 100644 --- a/configure.in +++ b/configure.in @@ -128,7 +128,7 @@ dnl# Checks for header files. AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(fcntl.h termios.h \ sys/ioctl.h sys/select.h sys/time.h \ -sys/sockio.h sys/byteorder.h \ +sys/sockio.h sys/byteorder.h malloc.h \ utmpx.h unistd.h bsd/signal.h regex.h \ regexp.h stdarg.h X11/Xmu/Atoms.h) AC_HEADER_TIME @@ -141,7 +141,10 @@ AC_TYPE_UID_T dnl# Checks for library functions. AC_TYPE_SIGNAL -AC_CHECK_FUNCS(atexit _exit unsetenv setutent seteuid memmove putenv strsep setresuid setresgid memmem usleep snprintf) +AC_CHECK_FUNCS(atexit _exit unsetenv setutent \ +seteuid memmove putenv strsep setresuid setresgid \ +memmem usleep snprintf strcasestr strcasechr \ +strcasepbrk strrev) dps_snprintf_oflow() AC_CHECK_LIB(m, pow, LIBS="$LIBS -lm", , $SUBLIBS) diff --git a/libmej/Makefile.am b/libmej/Makefile.am index 0ad7cab..b22848c 100644 --- a/libmej/Makefile.am +++ b/libmej/Makefile.am @@ -1,12 +1,10 @@ # $Id$ lib_LTLIBRARIES = libmej.la +include_HEADERS = libmej.h -libmej_la_SOURCES = debug.c mem.c strings.c snprintf.c +libmej_la_SOURCES = debug.c mem.c msgs.c strings.c snprintf.c libmej.h INCLUDES = -I. -I.. -I$(includedir) -I$(prefix)/include libmej_la_LDFLAGS = -release $(VERSION) - -EXTRA_DIST = debug.h global.h mem.h strings.h strptime.h strptime.c - diff --git a/libmej/debug.c b/libmej/debug.c index 4cfb891..e1d9067 100644 --- a/libmej/debug.c +++ b/libmej/debug.c @@ -1,8 +1,3 @@ -/********************************************************* - * DEBUG.C -- Standardized debugging output * - * -- Michael Jennings * - * -- 20 December 1996 * - *********************************************************/ /* * Copyright (C) 1997-2000, Michael Jennings * @@ -28,31 +23,14 @@ static const char cvs_ident[] = "$Id$"; -#include "config.h" -#include "../src/feature.h" - -#include "global.h" -#include -#include -#ifndef WITH_DMALLOC -# include +#ifdef HAVE_CONFIG_H +# include #endif -#include -#include -#include -#include -#include "debug.h" -int -real_dprintf(const char *format,...) -{ +#include "libmej.h" - va_list args; - int n; +/* FIXME: Change this to an unsigned short once the + options parser can handle function pointers. */ +unsigned int libmej_debug_level = 0; +unsigned long libmej_debug_flags = 0; - va_start(args, format); - n = vfprintf(stderr, format, args); - va_end(args); - fflush(stderr); - return (n); -} diff --git a/libmej/debug.h b/libmej/debug.h deleted file mode 100644 index db1af69..0000000 --- a/libmej/debug.h +++ /dev/null @@ -1,36 +0,0 @@ -/********************************************************** - * DEBUG.H -- Header file for DEBUG.C * - * -- Michael Jennings * - * -- 20 December 1996 * - **********************************************************/ -/* - * Copyright (C) 1997-2000, Michael Jennings - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies of the Software, its documentation and marketing & publicity - * materials, and acknowledgment shall be given in the documentation, materials - * and software packages that this Software was used. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef _LIBMEJ_DEBUG_H -# define _LIBMEJ_DEBUG_H - -extern int real_dprintf(const char *, ...); - -#include "../src/debug.h" - -#endif /* _LIBMEJ_DEBUG_H */ diff --git a/libmej/libmej.h b/libmej/libmej.h new file mode 100644 index 0000000..21087b3 --- /dev/null +++ b/libmej/libmej.h @@ -0,0 +1,347 @@ +/* + * Copyright (C) 1997-2000, Michael Jennings + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies of the Software, its documentation and marketing & publicity + * materials, and acknowledgment shall be given in the documentation, materials + * and software packages that this Software was used. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef _LIBMEJ_H_ +#define _LIBMEJ_H_ + +/* This GNU goop has to go before the system headers */ +#ifdef __GNUC__ +# ifndef __USE_GNU +# define __USE_GNU +# endif +# ifndef _GNU_SOURCE +# define _GNU_SOURCE +# endif +# ifndef _BSD_SOURCE +# define _BSD_SOURCE +# endif +# ifndef inline +# define inline __inline__ +# endif +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef HAVE_REGEX_H +# include +#endif +#ifdef HAVE_STDARG_H +# include +#endif +#ifdef WITH_DMALLOC +# include +#elif defined(HAVE_MALLOC_H) +# include +#endif + +/******************************* GENERIC GOOP *********************************/ +#ifndef TRUE +# define TRUE ((unsigned char)(1)) +# define FALSE ((unsigned char)(0)) +#endif + +#ifndef PACKAGE +# define PACKAGE "libmej" +#endif + + + +/****************************** DEBUGGING GOOP ********************************/ +#ifndef LIBMEJ_DEBUG_FD +# define LIBMEJ_DEBUG_FD (stderr) +#endif +#ifndef DEBUG +# define DEBUG 0 +#endif + +#define DEBUG_LEVEL (libmej_debug_level) +#define DEBUG_FLAGS (libmej_debug_flags) + +/* A NOP. Does nothing. */ +#define NOP ((void)0) + +/* A macro and an #define to FIXME-ize individual calls or entire code blocks. */ +#define FIXME_NOP(x) +#define FIXME_BLOCK 0 + +/* The basic debugging output leader. */ +#if defined(__FILE__) && defined(__LINE__) +# ifdef __GNUC__ +# define __DEBUG() fprintf(LIBMEJ_DEBUG_FD, "[%lu] %12s | %4d: %s(): ", (unsigned long) time(NULL), __FILE__, __LINE__, __FUNCTION__) +# else +# define __DEBUG() fprintf(LIBMEJ_DEBUG_FD, "[%lu] %12s | %4d: ", (unsigned long) time(NULL), __FILE__, __LINE__) +# endif +#else +# define __DEBUG() NOP +#endif + +/* A quick and dirty macro to say, "Hi! I got here without crashing!" */ +#define MOO() do { __DEBUG(); fprintf(LIBMEJ_DEBUG_FD, "Moo.\n"); fflush(LIBMEJ_DEBUG_FD); } while (0) + +/* Assertion/abort macros which are quite a bit more useful than assert() and abort(). */ +#if defined(__FILE__) && defined(__LINE__) +# ifdef __GNUC__ +# define ASSERT(x) do {if (!(x)) {if (DEBUG_LEVEL>=1) {fatal_error("ASSERT failed in %s() at %s:%d: %s", __FUNCTION__, __FILE__, __LINE__, #x);} \ + else {print_warning("ASSERT failed in %s() at %s:%d: %s", __FUNCTION__, __FILE__, __LINE__, #x);}}} while (0) +# define ASSERT_RVAL(x, val) do {if (!(x)) {if (DEBUG_LEVEL>=1) {fatal_error("ASSERT failed in %s() at %s:%d: %s", __FUNCTION__, __FILE__, __LINE__, #x);} \ + else {print_warning("ASSERT failed in %s() at %s:%d: %s", __FUNCTION__, __FILE__, __LINE__, #x);} \ + return (val);}} while (0) +# define ASSERT_NOTREACHED() do {if (DEBUG_LEVEL>=1) {fatal_error("ASSERT failed in %s() at %s:%d: This code should not be reached.", __FUNCTION__, __FILE__, __LINE__);} \ + else {print_warning("ASSERT failed in %s() at %s:%d: This code should not be reached.", __FUNCTION__, __FILE__, __LINE__);} \ + } while (0) +# define ASSERT_NOTREACHED_RVAL(val) do {if (DEBUG_LEVEL>=1) {fatal_error("ASSERT failed in %s() at %s:%d: This code should not be reached.", __FUNCTION__, __FILE__, __LINE__);} \ + else {print_warning("ASSERT failed in %s() at %s:%d: This code should not be reached.", __FUNCTION__, __FILE__, __LINE__);} \ + return (val);} while (0) +# define ABORT() fatal_error("Aborting in %s() at %s:%d.", __FUNCTION__, __FILE__, __LINE__) +# else +# define ASSERT(x) do {if (!(x)) {if (DEBUG_LEVEL>=1) {fatal_error("ASSERT failed at %s:%d: %s", __FILE__, __LINE__, #x);} \ + else {print_warning("ASSERT failed at %s:%d: %s", __FILE__, __LINE__, #x);}}} while (0) +# define ASSERT_RVAL(x, val) do {if (!(x)) {if (DEBUG_LEVEL>=1) {fatal_error("ASSERT failed at %s:%d: %s", __FILE__, __LINE__, #x);} \ + else {print_warning("ASSERT failed at %s:%d: %s", __FILE__, __LINE__, #x);} \ + return (val);}} while (0) +# define ASSERT_NOTREACHED() do {if (DEBUG_LEVEL>=1) {fatal_error("ASSERT failed at %s:%d: This code should not be reached.", __FILE__, __LINE__);} \ + else {print_warning("ASSERT failed at %s:%d: This code should not be reached.", __FILE__, __LINE__);} \ + } while (0) +# define ASSERT_NOTREACHED_RVAL(val) do {if (DEBUG_LEVEL>=1) {fatal_error("ASSERT failed at %s:%d: This code should not be reached.", __FILE__, __LINE__);} \ + else {print_warning("ASSERT failed at %s:%d: This code should not be reached.", __FILE__, __LINE__);} \ + return (val);} while (0) +# define ABORT() fatal_error("Aborting at %s:%d.", __FILE__, __LINE__) +# endif +#else +# define ASSERT(x) do {if (!(x)) {if (DEBUG_LEVEL>=1) {fatal_error("ASSERT failed: %s", #x);} \ + else {print_warning("ASSERT failed: %s", #x);}}} while (0) +# define ASSERT_RVAL(x, val) do {if (!(x)) {if (DEBUG_LEVEL>=1) {fatal_error("ASSERT failed: %s", #x);} \ + else {print_warning("ASSERT failed: %s", #x);} return (val);}} while (0) +# define ASSERT_NOTREACHED() return +# define ASSERT_NOTREACHED_RVAL(x) return (x) +# define ABORT() fatal_error("Aborting.\n") +#endif + +#define REQUIRE(x) do {if (!(x)) {if (DEBUG_LEVEL>=1) {__DEBUG(); libmej_dprintf("REQUIRE failed: %s\n", #x);} return;}} while (0) +#define REQUIRE_RVAL(x, v) do {if (!(x)) {if (DEBUG_LEVEL>=1) {__DEBUG(); libmej_dprintf("REQUIRE failed: %s\n", #x);} return (v);}} while (0) +#define NONULL(x) ((x) ? (x) : ("")) + +/* Macros for printing debugging messages */ +#if DEBUG >= 1 +# ifndef DPRINTF +# define DPRINTF(x) do { __DEBUG(); libmej_dprintf x; } while (0) +# endif +# define DPRINTF1(x) do { if (DEBUG_LEVEL >= 1) {__DEBUG(); libmej_dprintf x;} } while (0) +# define DPRINTF2(x) do { if (DEBUG_LEVEL >= 2) {__DEBUG(); libmej_dprintf x;} } while (0) +# define DPRINTF3(x) do { if (DEBUG_LEVEL >= 3) {__DEBUG(); libmej_dprintf x;} } while (0) +# define DPRINTF4(x) do { if (DEBUG_LEVEL >= 4) {__DEBUG(); libmej_dprintf x;} } while (0) +# define DPRINTF5(x) do { if (DEBUG_LEVEL >= 5) {__DEBUG(); libmej_dprintf x;} } while (0) +# define DPRINTF6(x) do { if (DEBUG_LEVEL >= 6) {__DEBUG(); libmej_dprintf x;} } while (0) +# define DPRINTF7(x) do { if (DEBUG_LEVEL >= 7) {__DEBUG(); libmej_dprintf x;} } while (0) +# define DPRINTF8(x) do { if (DEBUG_LEVEL >= 8) {__DEBUG(); libmej_dprintf x;} } while (0) +# define DPRINTF9(x) do { if (DEBUG_LEVEL >= 9) {__DEBUG(); libmej_dprintf x;} } while (0) +#else +# ifndef DPRINTF +# define DPRINTF(x) NOP +# endif +# define DPRINTF1(x) NOP +# define DPRINTF2(x) NOP +# define DPRINTF3(x) NOP +# define DPRINTF4(x) NOP +# define DPRINTF5(x) NOP +# define DPRINTF6(x) NOP +# define DPRINTF7(x) NOP +# define DPRINTF8(x) NOP +# define DPRINTF9(x) NOP +#endif + +/* Use this for stuff that you only want turned on in dire situations */ +#define D_NEVER(x) NOP + +#define DEBUG_MEM 5 +#define D_MEM(x) DPRINTF5(x) +#define DEBUG_STRINGS 9999 +#define D_STRINGS(x) D_NEVER(x) + + + +/********************************* MEM GOOP ***********************************/ +typedef struct ptr_struct { + void *ptr; + size_t size; +} ptr_t; +typedef struct memrec_struct { + unsigned char init; + unsigned long cnt; + ptr_t *ptrs; +} memrec_t; + +#if (DEBUG >= DEBUG_MEM) +# define MALLOC(sz) libmej_malloc(__FILE__, __LINE__, (sz)) +# define CALLOC(type,n) libmej_calloc(__FILE__, __LINE__, (n), (sizeof(type))) +# define REALLOC(mem,sz) libmej_realloc(#mem, __FILE__, __LINE__, (mem), (sz)) +# define FREE(ptr) do { libmej_free(#ptr, __FILE__, __LINE__, (ptr)); (ptr) = NULL; } while (0) +# define STRDUP(s) libmej_strdup(#s, __FILE__, __LINE__, (s)) +# define MALLOC_MOD 25 +# define REALLOC_MOD 25 +# define CALLOC_MOD 25 +# define FREE_MOD 25 +#else +# define MALLOC(sz) malloc(sz) +# define CALLOC(type,n) calloc((n),(sizeof(type))) +# define REALLOC(mem,sz) ((sz) ? ((mem) ? (realloc((mem), (sz))) : (malloc(sz))) : ((mem) ? (free(mem), NULL) : (NULL))) +# define FREE(ptr) do { free(ptr); (ptr) = NULL; } while (0) +# define STRDUP(s) strdup(s) +#endif + +/* Fast memset() macro contributed by vendu */ +#if (SIZEOF_LONG == 8) +# define MEMSET_LONG() l |= l<<32 +#else +# define MEMSET_LONG() ((void)0) +#endif + +#define MEMSET(s, c, count) do { \ + char *end = (char *)(s) + (count); \ + long l; \ + long *l_dest = (long *)(s); \ + char *c_dest; \ + \ + /* areas of less than 4 * sizeof(long) are set in 1-byte chunks. */ \ + if (((unsigned long) count) >= 4 * sizeof(long)) { \ + /* fill l with c. */ \ + l = (c) | (c)<<8; \ + l |= l<<16; \ + MEMSET_LONG(); \ + \ + /* fill in 1-byte chunks until boundary of long is reached. */ \ + if ((unsigned long)l_dest & (unsigned long)(sizeof(long) -1)) { \ + c_dest = (char *)l_dest; \ + while ((unsigned long)c_dest & (unsigned long)(sizeof(long) -1)) { \ + *(c_dest++) = (c); \ + } \ + l_dest = (long *)c_dest; \ + } \ + \ + /* fill in long-size chunks as long as possible. */ \ + while (((unsigned long) (end - (char *)l_dest)) >= sizeof(long)) { \ + *(l_dest++) = l; \ + } \ + } \ + \ + /* fill the tail in 1-byte chunks. */ \ + if ((char *)l_dest < end) { \ + c_dest = (char *)l_dest; \ + *(c_dest++) = (c); \ + while (c_dest < end) { \ + *(c_dest++) = (c); \ + } \ + } \ + } while (0) + + + +/******************************* STRINGS GOOP *********************************/ + +#ifdef __GNUC__ +# define SWAP(a, b) __extension__ ({__typeof__(a) tmp = (a); (a) = (b); (b) = tmp;}) +#else +# define SWAP(a, b) do {void *tmp = ((void *)(a)); (a) = (b); (b) = tmp;} while (0) +#endif + +#define CONST_STRLEN(x) (sizeof(x) - 1) +#define BEG_STRCASECMP(s, constr) (strncasecmp(s, constr, CONST_STRLEN(constr))) + + + +/******************************** PROTOTYPES **********************************/ + +/* msgs.c */ +extern int libmej_dprintf(const char *, ...); +extern void print_error(const char *fmt, ...); +extern void print_warning(const char *fmt, ...); +extern void fatal_error(const char *fmt, ...); + +/* debug.c */ +extern unsigned int DEBUG_LEVEL; + +/* mem.c */ +extern void memrec_init(void); +extern void memrec_add_var(void *, size_t); +extern void memrec_rem_var(const char *, const char *, unsigned long, void *); +extern void memrec_chg_var(const char *, const char *, unsigned long, void *, void *, size_t); +extern void memrec_dump(void); +extern void *libmej_malloc(const char *, unsigned long, size_t); +extern void *libmej_realloc(const char *, const char *, unsigned long, void *, size_t); +extern void *libmej_calloc(const char *, unsigned long, size_t, size_t); +extern void libmej_free(const char *, const char *, unsigned long, void *); +extern char *libmej_strdup(const char *, const char *, unsigned long, const char *); +extern void libmej_handle_sigsegv(int); + +/* strings.c */ +extern char *left_str(const char *, unsigned long); +extern char *mid_str(const char *, unsigned long, unsigned long); +extern char *right_str(const char *, unsigned long); +#ifdef HAVE_REGEX_H +extern unsigned char regexp_match(const char *, const char *); +#endif +extern char *get_word(unsigned long, const char *); +extern char *get_pword(unsigned long, const char *); +extern unsigned long num_words(const char *); +extern char *strip_whitespace(char *); +extern char *downcase_str(char *); +extern char *upcase_str(char *); +#ifndef HAVE_STRCASESTR +extern char *strcasestr(char *, const char *); +#endif +#ifndef HAVE_STRCASECHR +extern char *strcasechr(char *, char); +#endif +#ifndef HAVE_STRCASEPBRK +extern char *strcasepbrk(char *, char *); +#endif +#ifndef HAVE_STRREV +extern char *strrev(char *); +#endif +#if !(HAVE_STRSEP) +extern char *strsep(char **, char *); +#endif +extern char *safe_str(char *, unsigned short); +extern char *garbage_collect(char *, size_t); +extern char *file_garbage_collect(char *, size_t); +extern char *condense_whitespace(char *); +extern void hex_dump(void *, size_t); +#ifndef HAVE_MEMMEM +extern void *memmem(void *, size_t, void *, size_t); +#endif +#ifndef HAVE_USLEEP +extern void usleep(unsigned long); +#endif +#ifndef HAVE_SNPRINTF +extern int vsnprintf(char *str, size_t count, const char *fmt, va_list args); +extern int snprintf(char *str, size_t count, const char *fmt, ...); +#endif + +#endif /* _LIBMEJ_H_ */ diff --git a/libmej/mem.c b/libmej/mem.c index becc46d..8be1fe4 100644 --- a/libmej/mem.c +++ b/libmej/mem.c @@ -1,9 +1,4 @@ -/*************************************************************** - * MEM.C -- Memory allocation handlers * - * -- Michael Jennings * - * -- 07 January 1997 * - ***************************************************************/ /* * Copyright (C) 1997-2000, Michael Jennings * @@ -29,20 +24,11 @@ static const char cvs_ident[] = "$Id$"; -#include "config.h" -#include "../src/feature.h" +#ifdef HAVE_CONFIG_H +# include +#endif -#include "global.h" -#include -#include -#include -#include -#include -#include -#include - -#include "debug.h" -#include "mem.h" +#include "libmej.h" /* * These're added for a pretty obvious reason -- they're implemented towards @@ -56,276 +42,244 @@ static int realloc_count = 0; static int free_count = 0; #endif -MemRec memrec = -{0, 0, 0, (void **) NULL, (size_t *) NULL}; - -char * -SafeStr(register char *str, unsigned short len) -{ - register unsigned short i; - - for (i = 0; i < len; i++) { - if (iscntrl(str[i])) { - str[i] = '.'; - } - } - - return (str); -} +static memrec_t memrec; void memrec_init(void) { - memrec.Count = 0; - D_MALLOC(("Constructing memrec\n")); - memrec.Ptrs = (void **) malloc(sizeof(void *)); - - memrec.Size = (size_t *) malloc(sizeof(size_t)); + D_MEM(("Constructing memrec\n")); + memrec.ptrs = (ptr_t *) malloc(sizeof(ptr_t)); memrec.init = 1; } void memrec_add_var(void *ptr, size_t size) { - memrec.Count++; - if ((memrec.Ptrs = (void **) realloc(memrec.Ptrs, sizeof(void *) * memrec.Count)) == NULL) { - D_MALLOC(("Unable to reallocate pointer list -- %s\n", strerror(errno))); + register ptr_t *p; + + memrec.cnt++; + if ((memrec.ptrs = (ptr_t *) realloc(memrec.ptrs, sizeof(ptr_t) * memrec.cnt)) == NULL) { + D_MEM(("Unable to reallocate pointer list -- %s\n", strerror(errno))); } - if ((memrec.Size = (size_t *) realloc(memrec.Size, sizeof(size_t) * memrec.Count)) == NULL) { - D_MALLOC(("Unable to reallocate pointer size list -- %s\n", strerror(errno))); - } - D_MALLOC(("Adding variable of size %lu at %8p\n", size, ptr)); - memrec.Ptrs[memrec.Count - 1] = ptr; - memrec.Size[memrec.Count - 1] = size; + D_MEM(("Adding variable of size %lu at %8p\n", size, ptr)); + p = memrec.ptrs + memrec.cnt - 1; + p->ptr = ptr; + p->size = size; } void -memrec_rem_var(const char *filename, unsigned long line, void *ptr) +memrec_rem_var(const char *var, const char *filename, unsigned long line, void *ptr) { + register ptr_t *p = NULL; + register unsigned long i; - unsigned long i; - - for (i = 0; i < memrec.Count; i++) - if (memrec.Ptrs[i] == ptr) + for (i = 0; i < memrec.cnt; i++) { + if (memrec.ptrs[i].ptr == ptr) { + p = memrec.ptrs + i; break; - if (i == memrec.Count && memrec.Ptrs[i] != ptr) { - D_MALLOC(("ERROR: File %s, line %d attempted to free a pointer not allocated with Malloc/Realloc: %8p\n", filename, line, ptr)); + } + } + if (!p) { + D_MEM(("ERROR: File %s, line %d attempted to free variable %s (%8p) which was not allocated with MALLOC/REALLOC\n", filename, line, var, ptr)); return; } - memrec.Count--; - D_MALLOC(("Removing variable of size %lu at %8p\n", memrec.Size[i], memrec.Ptrs[i])); - memmove(memrec.Ptrs + i, memrec.Ptrs + i + 1, sizeof(void *) * (memrec.Count - i)); - - memmove(memrec.Size + i, memrec.Size + i + 1, sizeof(size_t) * (memrec.Count - i)); - memrec.Ptrs = (void **) realloc(memrec.Ptrs, sizeof(void *) * memrec.Count); - - memrec.Size = (size_t *) realloc(memrec.Size, sizeof(size_t) * memrec.Count); + memrec.cnt--; + D_MEM(("Removing variable of size %lu at %8p\n", p->size, p->ptr)); + memmove(p, p + 1, sizeof(ptr_t) * (memrec.cnt - i)); + memrec.ptrs = (ptr_t *) realloc(memrec.ptrs, sizeof(ptr_t) * memrec.cnt); } void -memrec_chg_var(const char *filename, unsigned long line, void *oldp, void *newp, size_t size) +memrec_chg_var(const char *var, const char *filename, unsigned long line, void *oldp, void *newp, size_t size) { + register ptr_t *p = NULL; + register unsigned long i; - unsigned long i; - - for (i = 0; i < memrec.Count; i++) - if (memrec.Ptrs[i] == oldp) + for (i = 0; i < memrec.cnt; i++) { + if (memrec.ptrs[i].ptr == oldp) { + p = memrec.ptrs + i; break; - if (i == memrec.Count && memrec.Ptrs[i] != oldp) { - D_MALLOC(("ERROR: File %s, line %d attempted to realloc a pointer not allocated with Malloc/Realloc: %8p\n", filename, line, oldp)); + } + } + if (i == memrec.cnt) { + D_MEM(("ERROR: File %s, line %d attempted to realloc variable %s (%8p) which was not allocated with MALLOC/REALLOC\n", filename, line, var, oldp)); return; } - D_MALLOC(("Changing variable of %lu bytes at %8p to one of %lu bytes at %8p\n", memrec.Size[i], memrec.Ptrs[i], size, newp)); - memrec.Ptrs[i] = newp; - memrec.Size[i] = size; + D_MEM(("Changing variable of %lu bytes at %8p to one of %lu bytes at %8p\n", p->size, p->ptr, size, newp)); + p->ptr = newp; + p->size = size; } void memrec_dump(void) { - + register ptr_t *p; unsigned long i, j, k, l, total = 0; - unsigned long len1, len2; - unsigned char *ptr; + unsigned long len; unsigned char buff[9]; - fprintf(stderr, "DUMP :: %lu pointers stored.\n", memrec.Count); - fprintf(stderr, "DUMP :: Pointer | Address | Size | Offset | 00 01 02 03 04 05 06 07 | ASCII \n"); - fflush(stderr); - fprintf(stderr, "DUMP :: ---------+----------+--------+---------+-------------------------+---------\n"); - fflush(stderr); - len1 = sizeof(void *) * memrec.Count; + fprintf(LIBMEJ_DEBUG_FD, "DUMP :: %lu pointers stored.\n", memrec.cnt); + fprintf(LIBMEJ_DEBUG_FD, "DUMP :: Pointer | Address | Size | Offset | 00 01 02 03 04 05 06 07 | ASCII \n"); + fprintf(LIBMEJ_DEBUG_FD, "DUMP :: ---------+----------+--------+---------+-------------------------+---------\n"); + fflush(LIBMEJ_DEBUG_FD); + len = sizeof(ptr_t) * memrec.cnt; + memset(buff, 0, sizeof(buff)); - len2 = sizeof(size_t) * memrec.Count; - for (ptr = (unsigned char *) memrec.Ptrs, j = 0; j < len1; j += 8) { - fprintf(stderr, "DUMP :: %07lu | %8p | %06lu | %07x | ", (unsigned long) 0, memrec.Ptrs, (unsigned long) (sizeof(void *) * memrec.Count), (unsigned int) j); + /* First, dump the contents of the memrec.ptrs[] array. */ + for (p = memrec.ptrs, j = 0; j < len; p++, j += 8) { + fprintf(LIBMEJ_DEBUG_FD, "DUMP :: %07lu | %8p | %06lu | %07x | ", (unsigned long) 0, memrec.ptrs, (unsigned long) (sizeof(ptr_t) * memrec.cnt), (unsigned int) j); + /* l is the number of characters we're going to output */ + l = ((len - j < 8) ? (len - j) : (8)); + /* Copy l bytes (up to 8) from memrec.ptrs[] (p) to buffer */ + memcpy(buff, p + j, l); + for (k = 0; k < l; k++) { + fprintf(LIBMEJ_DEBUG_FD, "%02x ", buff[k]); + } + /* If we printed less than 8 bytes worth, pad with 3 spaces per byte */ + for (; k < 8; k++) { + fprintf(LIBMEJ_DEBUG_FD, " "); + } + /* Finally, print the printable ASCII string for those l bytes */ + fprintf(LIBMEJ_DEBUG_FD, "| %-8s\n", safe_str((char *) buff, l)); + /* Flush after every line in case we crash */ + fflush(LIBMEJ_DEBUG_FD); + } - l = ((len1 - j < 8) ? (len1 - j) : (8)); - memset(buff, 0, 9); - memcpy(buff, ptr + j, l); - for (k = 0; k < l; k++) { - fprintf(stderr, "%02x ", buff[k]); - } - for (; k < 8; k++) { - fprintf(stderr, " "); - } - fprintf(stderr, "| %-8s\n", SafeStr((char *) buff, l)); - fflush(stderr); - } - for (ptr = (unsigned char *) memrec.Size, j = 0; j < len2; j += 8) { - fprintf(stderr, "DUMP :: %07lu | %8p | %06lu | %07x | ", (unsigned long) 0, memrec.Size, sizeof(size_t) * memrec.Count, (unsigned int) j); - l = ((len2 - j < 8) ? (len2 - j) : (8)); - memset(buff, 0, 9); - memcpy(buff, ptr + j, l); - for (k = 0; k < l; k++) { - fprintf(stderr, "%02x ", buff[k]); - } - for (; k < 8; k++) { - fprintf(stderr, " "); - } - fprintf(stderr, "| %-8s\n", SafeStr((char *) buff, l)); - fflush(stderr); - } - for (i = 0; i < memrec.Count; i++) { - total += memrec.Size[i]; - for (ptr = (unsigned char *) memrec.Ptrs[i], j = 0; j < memrec.Size[i]; j += 8) { - fprintf(stderr, "DUMP :: %07lu | %8p | %06lu | %07x | ", i + 1, memrec.Ptrs[i], (unsigned long) memrec.Size[i], (unsigned int) j); - l = ((memrec.Size[i] - j < 8) ? (memrec.Size[i] - j) : (8)); - memset(buff, 0, 9); - memcpy(buff, ptr + j, l); + /* Now print out each pointer and its contents. */ + for (p = memrec.ptrs, i = 0; i < memrec.cnt; p++, i++) { + /* Add this pointer's size to our total */ + total += p->size; + for (j = 0; j < p->size; j += 8) { + fprintf(LIBMEJ_DEBUG_FD, "DUMP :: %07lu | %8p | %06lu | %07x | ", i + 1, p->ptr, (unsigned long) p->size, (unsigned int) j); + /* l is the number of characters we're going to output */ + l = ((p->size - j < 8) ? (p->size - j) : (8)); + /* Copy l bytes (up to 8) from p->ptr to buffer */ + memcpy(buff, p->ptr + j, l); for (k = 0; k < l; k++) { - fprintf(stderr, "%02x ", buff[k]); + fprintf(LIBMEJ_DEBUG_FD, "%02x ", buff[k]); } + /* If we printed less than 8 bytes worth, pad with 3 spaces per byte */ for (; k < 8; k++) { - fprintf(stderr, " "); + fprintf(LIBMEJ_DEBUG_FD, " "); } - fprintf(stderr, "| %-8s\n", SafeStr((char *) buff, l)); - fflush(stderr); + /* Finally, print the printable ASCII string for those l bytes */ + fprintf(LIBMEJ_DEBUG_FD, "| %-8s\n", safe_str((char *) buff, l)); + /* Flush after every line in case we crash */ + fflush(LIBMEJ_DEBUG_FD); } } - fprintf(stderr, "DUMP :: Total allocated memory: %10lu bytes\n\n", total); - fflush(stderr); + fprintf(LIBMEJ_DEBUG_FD, "DUMP :: Total allocated memory: %10lu bytes\n\n", total); + fflush(LIBMEJ_DEBUG_FD); } -/************* Function prototypes ****************/ - void * -Malloc(const char *filename, unsigned long line, size_t size) +libmej_malloc(const char *filename, unsigned long line, size_t size) { - void *temp; #ifdef MALLOC_CALL_DEBUG ++malloc_count; if (!(malloc_count % MALLOC_MOD)) { - fprintf(stderr, "Calls to malloc(): %d\n", malloc_count); + fprintf(LIBMEJ_DEBUG_FD, "Calls to malloc(): %d\n", malloc_count); } #endif - D_MALLOC(("Malloc(%lu) called at %s:%lu\n", size, filename, line)); - if (!memrec.init) { - D_MALLOC(("WARNING: You must call memrec_init() before using the libmej memory management calls.\n")); - memrec_init(); - } + D_MEM(("libmej_malloc(%lu) called at %s:%lu\n", size, filename, line)); temp = (void *) malloc(size); - if (!temp) - return NULL; - if (debug_level >= DEBUG_MALLOC) { + ASSERT_RVAL(temp != NULL, NULL); + if (DEBUG_LEVEL >= DEBUG_MEM) { memrec_add_var(temp, size); } return (temp); } void * -Realloc(const char *var, const char *filename, unsigned long line, void *ptr, size_t size) +libmej_realloc(const char *var, const char *filename, unsigned long line, void *ptr, size_t size) { - void *temp; #ifdef MALLOC_CALL_DEBUG ++realloc_count; if (!(realloc_count % REALLOC_MOD)) { - fprintf(stderr, "Calls to realloc(): %d\n", realloc_count); + D_MEM(("Calls to realloc(): %d\n", realloc_count)); } #endif - if (!memrec.init) { - D_MALLOC(("WARNING: You must call memrec_init() before using the libmej memory management calls.\n")); - memrec_init(); - } - - D_MALLOC(("Realloc(%lu) called for variable %s (%8p) at %s:%lu\n", size, var, ptr, filename, line)); + D_MEM(("libmej_realloc(%lu) called for variable %s (%8p) at %s:%lu\n", size, var, ptr, filename, line)); if (ptr == NULL) { - temp = (void *) Malloc(__FILE__, __LINE__, size); + temp = (void *) libmej_malloc(__FILE__, __LINE__, size); } else { temp = (void *) realloc(ptr, size); - if (debug_level >= DEBUG_MALLOC) { - memrec_chg_var(filename, line, ptr, temp, size); + ASSERT_RVAL(temp != NULL, ptr); + if (DEBUG_LEVEL >= DEBUG_MEM) { + memrec_chg_var(var, filename, line, ptr, temp, size); } } return (temp); } void * -Calloc(const char *filename, unsigned long line, size_t count, size_t size) +libmej_calloc(const char *filename, unsigned long line, size_t count, size_t size) { - - char *temp; + void *temp; #ifdef MALLOC_CALL_DEBUG ++calloc_count; if (!(calloc_count % CALLOC_MOD)) { - fprintf(stderr, "Calls to calloc(): %d\n", calloc_count); + fprintf(LIBMEJ_DEBUG_FD, "Calls to calloc(): %d\n", calloc_count); } #endif - if (!memrec.init) { - D_MALLOC(("WARNING: You must call memrec_init() before using the libmej memory management calls.\n")); - memrec_init(); - } - - D_MALLOC(("Calloc(%lu, %lu) called at %s:%lu\n", count, size, filename, line)); - temp = (char *) calloc(count, size); - if (debug_level >= DEBUG_MALLOC) { + D_MEM(("libmej_calloc(%lu, %lu) called at %s:%lu\n", count, size, filename, line)); + temp = (void *) calloc(count, size); + ASSERT_RVAL(temp != NULL, NULL); + if (DEBUG_LEVEL >= DEBUG_MEM) { memrec_add_var(temp, size * count); } return (temp); } void -Free(const char *var, const char *filename, unsigned long line, void *ptr) +libmej_free(const char *var, const char *filename, unsigned long line, void *ptr) { - #ifdef MALLOC_CALL_DEBUG ++free_count; if (!(free_count % FREE_MOD)) { - fprintf(stderr, "Calls to free(): %d\n", free_count); + fprintf(LIBMEJ_DEBUG_FD, "Calls to free(): %d\n", free_count); } #endif - if (!memrec.init) { - D_MALLOC(("WARNING: You must call memrec_init() before using the libmej memory management calls.\n")); - memrec_init(); - } - - D_MALLOC(("Free() called for variable %s (%8p) at %s:%lu\n", var, ptr, filename, line)); + D_MEM(("libmej_free() called for variable %s (%8p) at %s:%lu\n", var, ptr, filename, line)); if (ptr) { - if (debug_level >= DEBUG_MALLOC) { - memrec_rem_var(filename, line, ptr); + if (DEBUG_LEVEL >= DEBUG_MEM) { + memrec_rem_var(var, filename, line, ptr); } free(ptr); } else { - D_MALLOC(("ERROR: Caught attempt to free NULL pointer\n")); + D_MEM(("ERROR: Caught attempt to free NULL pointer\n")); } } -void -HandleSigSegv(int sig) +char * +libmej_strdup(const char *var, const char *filename, unsigned long line, const char *str) { + register char *newstr; + register size_t len; -#if DEBUG >= DEBUG_MALLOC - fprintf(stderr, "Fatal memory fault (%d)! Dumping memory table.\n", sig); + D_MEM(("libmej_strdup() called for variable %s (%8p) at %s:%lu\n", var, str, filename, line)); + + len = strlen(str) + 1; /* Copy NUL byte also */ + newstr = (char *) libmej_malloc(filename, line, len); + strcpy(newstr, str); + return (newstr); +} + +void +libmej_handle_sigsegv(int sig) +{ +#if DEBUG >= DEBUG_MEM + fprintf(LIBMEJ_DEBUG_FD, "Fatal memory fault (%d)! Dumping memory table.\n", sig); memrec_dump(); #endif exit(EXIT_FAILURE); diff --git a/libmej/mem.h b/libmej/mem.h deleted file mode 100644 index 01318d5..0000000 --- a/libmej/mem.h +++ /dev/null @@ -1,73 +0,0 @@ - /*************************************************************** - * MEM.H -- Header file for mem.c * - * -- Michael Jennings * - * -- 07 January 1997 * - ***************************************************************/ -/* - * Copyright (C) 1997-2000, Michael Jennings - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies of the Software, its documentation and marketing & publicity - * materials, and acknowledgment shall be given in the documentation, materials - * and software packages that this Software was used. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef _MEM_H_ - -#define _MEM_H_ - -typedef struct memrec_struct { - unsigned char init; - unsigned long Count, TotalSize; - void **Ptrs; - size_t *Size; -} MemRec; - -#ifdef WITH_DMALLOC -# include -#endif -#if (DEBUG >= DEBUG_MALLOC) -# define MALLOC(sz) Malloc(__FILE__, __LINE__, (sz)) -# define CALLOC(type,n) Calloc(__FILE__, __LINE__, (n),(sizeof(type))) -# define REALLOC(mem,sz) Realloc(#mem, __FILE__, __LINE__, (mem),(sz)) -# define FREE(ptr) do { Free(#ptr, __FILE__, __LINE__, (ptr)); (ptr) = NULL; } while (0) -# define MALLOC_MOD 25 -# define REALLOC_MOD 25 -# define CALLOC_MOD 25 -# define FREE_MOD 25 -#else -# define MALLOC(sz) malloc(sz) -# define CALLOC(type,n) calloc((n),(sizeof(type))) -# define REALLOC(mem,sz) ((sz) ? ((mem) ? (realloc((mem), (sz))) : (malloc(sz))) : ((mem) ? (free(mem), NULL) : (NULL))) -# define FREE(ptr) do { free(ptr); (ptr) = NULL; } while (0) -#endif - -extern char *SafeStr(char *, unsigned short); -extern MemRec memrec; -extern void memrec_init(void); -extern void memrec_add_var(void *, size_t); -extern void memrec_rem_var(const char *, unsigned long, void *); -extern void memrec_chg_var(const char *, unsigned long, void *, void *, size_t); -extern void memrec_dump(void); -extern void *Malloc(const char *, unsigned long, size_t); -extern void *Realloc(const char *, const char *, unsigned long, void *, size_t); -extern void *Calloc(const char *, unsigned long, size_t, size_t); -extern void Free(const char *, const char *, unsigned long, void *); -extern void HandleSigSegv(int); - -#endif /* _MEM_H_ */ - diff --git a/libmej/global.h b/libmej/msgs.c similarity index 56% rename from libmej/global.h rename to libmej/msgs.c index e12fd9f..e8a4dc9 100644 --- a/libmej/global.h +++ b/libmej/msgs.c @@ -1,8 +1,3 @@ -/*************************************************************** - * GLOBAL.H -- Compile-time options header file * - * -- Michael Jennings * - * -- 16 January 1997 * - ***************************************************************/ /* * Copyright (C) 1997-2000, Michael Jennings * @@ -26,21 +21,61 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#ifndef _GLOBAL_H_ - -#define _GLOBAL_H_ - -/* Other compile-time defines */ -#ifdef LINUX -# define _GNU_SOURCE -# define __USE_GNU -# define _BSD_SOURCE -#elif defined(IRIX) -# define _MODERN_C_ -# define _BSD_TYPES -# define _SGI_SOURCE -#elif defined(HP_UX) +static const char cvs_ident[] = "$Id$"; +#ifdef HAVE_CONFIG_H +# include #endif -#endif /* _GLOBAL_H_ */ +#include "libmej.h" + +int +libmej_dprintf(const char *format, ...) +{ + va_list args; + int n; + + va_start(args, format); + n = vfprintf(stderr, format, args); + va_end(args); + fflush(stderr); + return (n); +} + +/* Print a non-terminal error message */ +void +print_error(const char *fmt, ...) +{ + va_list arg_ptr; + + va_start(arg_ptr, fmt); + fprintf(stderr, PACKAGE ": Error: "); + vfprintf(stderr, fmt, arg_ptr); + va_end(arg_ptr); +} + +/* Print a simple warning */ +void +print_warning(const char *fmt, ...) +{ + va_list arg_ptr; + + va_start(arg_ptr, fmt); + fprintf(stderr, PACKAGE ": Warning: "); + vfprintf(stderr, fmt, arg_ptr); + va_end(arg_ptr); +} + +/* Print a fatal error message and terminate */ +void +fatal_error(const char *fmt, ...) +{ + va_list arg_ptr; + + va_start(arg_ptr, fmt); + fprintf(stderr, PACKAGE ": FATAL: "); + vfprintf(stderr, fmt, arg_ptr); + va_end(arg_ptr); + exit(-1); +} + diff --git a/libmej/snprintf.c b/libmej/snprintf.c index 80635ae..d479382 100644 --- a/libmej/snprintf.c +++ b/libmej/snprintf.c @@ -1,8 +1,11 @@ -#include "config.h" -#include "../src/feature.h" +#ifdef HAVE_CONFIG_H +# include +#endif -#include "global.h" #include +#ifdef HAVE_STDARG_H +# include +#endif static const char cvs_ident[] = "$Id$"; @@ -18,10 +21,6 @@ static const char cvs_ident[] = "$Id$"; #if !defined(HAVE_SNPRINTF) || (HAVE_SNPRINTF_BUG == 1) -#ifdef HAVE_STDARG_H -#include -#endif - #define VA_LOCAL_DECL va_list ap #define VA_START(f) va_start(ap, f) #define VA_SHIFT(v,t) ; /* no-op for ANSI */ @@ -452,7 +451,7 @@ dopr_outch(int c) * Copyright Holder, but only to the computing community at large * as a market that must bear the fee.) * - * "Freely Available" means that no fee is charged for the item + * "libmej_freely Available" means that no fee is charged for the item * itself, though there may be fees involved in handling the item. * It also means that recipients of the item may redistribute it * under the same conditions they received it. @@ -471,7 +470,7 @@ dopr_outch(int c) * following: * * a) place your modifications in the Public Domain or otherwise make them - * Freely Available, such as by posting said modifications to Usenet or + * libmej_freely Available, such as by posting said modifications to Usenet or * an equivalent medium, or placing the modifications on a major archive * site such as uunet.uu.net, or by allowing the Copyright Holder to include * your modifications in the Standard Version of the Package. diff --git a/libmej/strings.c b/libmej/strings.c index cfdad44..6c00f29 100644 --- a/libmej/strings.c +++ b/libmej/strings.c @@ -1,8 +1,3 @@ -/*************************************************************** - * STRINGS.C -- String manipulation routines * - * -- Michael Jennings * - * -- 08 January 1997 * - ***************************************************************/ /* * Copyright (C) 1997-2000, Michael Jennings * @@ -28,22 +23,11 @@ static const char cvs_ident[] = "$Id$"; -#include "config.h" -#include "../src/feature.h" - -#include "global.h" -#include -#include -#include -#include -#include -#ifndef WITH_DMALLOC -# include +#ifdef HAVE_CONFIG_H +# include #endif -#include -#include "debug.h" -#include "mem.h" -#include "strings.h" + +#include #ifndef HAVE_MEMMEM /* Find first occurance of bytestring needle of size needlelen in memory region @@ -51,7 +35,6 @@ static const char cvs_ident[] = "$Id$"; void * memmem(void *haystack, register size_t haystacklen, void *needle, register size_t needlelen) { - register char *hs = (char *) haystack; register char *n = (char *) needle; register unsigned long i; @@ -70,7 +53,6 @@ memmem(void *haystack, register size_t haystacklen, void *needle, register size_ void usleep(unsigned long usec) { - struct timeval delay; delay.tv_sec = 0; @@ -92,9 +74,8 @@ nanosleep(unsigned long nsec) { /* Return the leftmost cnt characters of str */ char * -LeftStr(const char *str, unsigned long cnt) +left_str(const char *str, unsigned long cnt) { - char *tmpstr; tmpstr = (char *) MALLOC(cnt + 1); @@ -105,9 +86,8 @@ LeftStr(const char *str, unsigned long cnt) /* Return cnt characters from str, starting at position index (from 0) */ char * -MidStr(const char *str, unsigned long index, unsigned long cnt) +mid_str(const char *str, unsigned long index, unsigned long cnt) { - char *tmpstr; const char *pstr = str; @@ -120,9 +100,8 @@ MidStr(const char *str, unsigned long index, unsigned long cnt) /* Return the rightmost characters of str */ char * -RightStr(const char *str, unsigned long cnt) +right_str(const char *str, unsigned long cnt) { - char *tmpstr; const char *pstr = str; @@ -136,37 +115,21 @@ RightStr(const char *str, unsigned long cnt) /* Returns TRUE if str matches regular expression pattern, FALSE otherwise */ #if defined(HAVE_REGEX_H) || defined(IRIX) unsigned char -Match(register const char *str, register const char *pattern) +regexp_match(register const char *str, register const char *pattern) { - register regex_t *rexp; register int result; - -#ifndef IRIX char errbuf[256]; rexp = (regex_t *) MALLOC(sizeof(regex_t)); -#endif -#ifdef IRIX - if ((rexp = compile((const char *) pattern, (char *) NULL, (char *) NULL)) == NULL) { - fprintf(stderr, "Unable to compile regexp %s\n", pattern); - return (FALSE); - } -#else if ((result = regcomp(rexp, pattern, REG_EXTENDED)) != 0) { regerror(result, rexp, errbuf, 256); fprintf(stderr, "Unable to compile regexp %s -- %s.\n", pattern, errbuf); FREE(rexp); return (FALSE); } -#endif -#ifdef IRIX - result = step((const char *) str, rexp); - FREE(rexp); - return (result); -#else if (((result = regexec(rexp, str, (size_t) 0, (regmatch_t *) NULL, 0)) != 0) && (result != REG_NOMATCH)) { regerror(result, rexp, errbuf, 256); @@ -176,22 +139,22 @@ Match(register const char *str, register const char *pattern) } FREE(rexp); return (!result); -#endif } #endif /* Return malloc'd pointer to index-th word in str. "..." counts as 1 word. */ -char * -Word(unsigned long index, const char *str) -{ +#define IS_DELIM(c) (delim ? ((c) == delim) : (isspace(c))) +char * +get_word(unsigned long index, const char *str) +{ char *tmpstr; - char *delim = DEFAULT_DELIM; + char delim = 0; register unsigned long i, j, k; k = strlen(str) + 1; if ((tmpstr = (char *) MALLOC(k)) == NULL) { - fprintf(stderr, "Word(%lu, %s): Unable to allocate memory -- %s.\n", + fprintf(stderr, "get_word(%lu, %s): Unable to allocate memory -- %s.\n", index, str, strerror(errno)); return ((char *) NULL); } @@ -200,17 +163,17 @@ Word(unsigned long index, const char *str) for (; isspace(str[i]); i++); switch (str[i]) { case '\"': - delim = "\""; + delim = '\"'; i++; break; case '\'': - delim = "\'"; + delim = '\''; i++; break; default: - delim = DEFAULT_DELIM; + delim = 0; } - for (k = 0; str[i] && !strchr(delim, str[i]);) { + for (k = 0; str[i] && !IS_DELIM(str[i]);) { if (str[i] == '\\') { if (str[i + 1] == '\'' || str[i + 1] == '\"') { i++; @@ -229,20 +192,19 @@ Word(unsigned long index, const char *str) if (j != index) { FREE(tmpstr); - D_STRINGS(("Word(%lu, %s) returning NULL.\n", index, str)); + D_STRINGS(("get_word(%lu, %s) returning NULL.\n", index, str)); return ((char *) NULL); } else { tmpstr = (char *) REALLOC(tmpstr, strlen(tmpstr) + 1); - D_STRINGS(("Word(%lu, %s) returning \"%s\".\n", index, str, tmpstr)); + D_STRINGS(("get_word(%lu, %s) returning \"%s\".\n", index, str, tmpstr)); return (tmpstr); } } /* Return pointer into str to index-th word in str. "..." counts as 1 word. */ char * -PWord(unsigned long index, const char *str) +get_pword(unsigned long index, const char *str) { - register const char *tmpstr = str; register unsigned long j; @@ -258,38 +220,37 @@ PWord(unsigned long index, const char *str) tmpstr++; } if (*tmpstr == '\0') { - D_STRINGS(("PWord(%lu, %s) returning NULL.\n", index, str)); + D_STRINGS(("get_pword(%lu, %s) returning NULL.\n", index, str)); return ((char *) NULL); } else { - D_STRINGS(("PWord(%lu, %s) returning \"%s\"\n", index, str, tmpstr)); + D_STRINGS(("get_pword(%lu, %s) returning \"%s\"\n", index, str, tmpstr)); return (char *) tmpstr; } } -/* Returns the number of words in str, for use with Word() and PWord(). "..." counts as 1 word. */ +/* Returns the number of words in str, for use with get_word() and get_pword(). "..." counts as 1 word. */ unsigned long -NumWords(const char *str) +num_words(const char *str) { - register unsigned long cnt = 0; - char *delim = DEFAULT_DELIM; + char delim = 0; register unsigned long i; - for (i = 0; str[i] && strchr(delim, str[i]); i++); + for (i = 0; str[i] && IS_DELIM(str[i]); i++); for (; str[i]; cnt++) { switch (str[i]) { case '\"': - delim = "\""; + delim = '\"'; i++; break; case '\'': - delim = "\'"; + delim = '\''; i++; break; default: - delim = DEFAULT_DELIM; + delim = 0; } - for (; str[i] && !strchr(delim, str[i]); i++); + for (; str[i] && !IS_DELIM(str[i]); i++); switch (str[i]) { case '\"': case '\'': @@ -299,14 +260,13 @@ NumWords(const char *str) for (; str[i] && isspace(str[i]); i++); } - D_STRINGS(("NumWords() returning %lu\n", cnt)); + D_STRINGS(("num_words() returning %lu\n", cnt)); return (cnt); } char * -StripWhitespace(register char *str) +strip_whitespace(register char *str) { - register unsigned long i, j; if ((j = strlen(str))) { @@ -320,35 +280,33 @@ StripWhitespace(register char *str) } char * -LowerStr(char *str) +downcase_str(char *str) { - register char *tmp; for (tmp = str; *tmp; tmp++) { *tmp = tolower(*tmp); } - D_STRINGS(("LowerStr() returning %s\n", str)); + D_STRINGS(("downcase_str() returning %s\n", str)); return (str); } char * -UpStr(char *str) +upcase_str(char *str) { - register char *tmp; for (tmp = str; *tmp; tmp++) { *tmp = toupper(*tmp); } - D_STRINGS(("UpStr() returning %s\n", str)); + D_STRINGS(("upcase_str() returning %s\n", str)); return (str); } +#ifndef HAVE_STRCASESTR char * -StrCaseStr(char *haystack, register const char *needle) +strcasestr(char *haystack, register const char *needle) { - register char *t; register size_t len = strlen(needle); @@ -359,11 +317,12 @@ StrCaseStr(char *haystack, register const char *needle) } return (NULL); } +#endif +#ifndef HAVE_STRCASECHR char * -StrCaseChr(char *haystack, register char needle) +strcasechr(char *haystack, register char needle) { - register char *t; for (t = haystack; t && *t; t++) { @@ -373,47 +332,37 @@ StrCaseChr(char *haystack, register char needle) } return (NULL); } +#endif +#ifndef HAVE_STRCASEPBRK char * -StrCasePBrk(char *haystack, register char *needle) +strcasepbrk(char *haystack, register char *needle) { - register char *t; for (t = haystack; t && *t; t++) { - if (StrCaseChr(needle, *t)) { + if (strcasechr(needle, *t)) { return (t); } } return (NULL); } +#endif +#ifndef HAVE_STRREV char * -StrRev(register char *str) +strrev(register char *str) { - register int i, j; i = strlen(str); for (j = 0, i--; i > j; i--, j++) { - cswap(str[j], str[i]); + SWAP(str[j], str[i]); } return (str); } - -char * -StrDup(register const char *str) -{ - - register char *newstr; - register unsigned long len; - - len = strlen(str) + 1; /* Copy NUL byte also */ - newstr = (char *) MALLOC(len); - strcpy(newstr, str); - return (newstr); -} +#endif #if !(HAVE_STRSEP) char * @@ -444,7 +393,7 @@ strsep(char **str, register char *sep) #endif char * -GarbageCollect(char *buff, size_t len) +garbage_collect(char *buff, size_t len) { register char *tbuff = buff, *pbuff = buff; @@ -460,7 +409,7 @@ GarbageCollect(char *buff, size_t len) } char * -FGarbageCollect(char *buff, size_t len) +file_garbage_collect(char *buff, size_t len) { register char *tbuff = buff, *pbuff = buff; @@ -529,17 +478,17 @@ FGarbageCollect(char *buff, size_t len) /* And the final step, garbage collect the buffer to condense all those nulls we just put in. */ - return (GarbageCollect(buff, len)); + return (garbage_collect(buff, len)); } char * -CondenseWhitespace(char *s) +condense_whitespace(char *s) { register unsigned char gotspc = 0; register char *pbuff = s, *pbuff2 = s; - D_STRINGS(("CondenseWhitespace(%s) called.\n", s)); + D_STRINGS(("condense_whitespace(%s) called.\n", s)); for (; *pbuff2; pbuff2++) { if (isspace(*pbuff2)) { if (!gotspc) { @@ -556,12 +505,26 @@ CondenseWhitespace(char *s) if ((pbuff >= s) && (isspace(*(pbuff - 1)))) pbuff--; *pbuff = 0; - D_STRINGS(("CondenseWhitespace() returning \"%s\".\n", s)); + D_STRINGS(("condense_whitespace() returning \"%s\".\n", s)); return (REALLOC(s, strlen(s) + 1)); } +char * +safe_str(register char *str, unsigned short len) +{ + register unsigned short i; + + for (i = 0; i < len; i++) { + if (iscntrl(str[i])) { + str[i] = '.'; + } + } + + return (str); +} + void -HexDump(void *buff, register size_t count) +hex_dump(void *buff, register size_t count) { register unsigned long j, k, l; @@ -581,6 +544,6 @@ HexDump(void *buff, register size_t count) for (; k < 8; k++) { fprintf(stderr, " "); } - fprintf(stderr, "| %-8s\n", SafeStr((char *) buffr, l)); + fprintf(stderr, "| %-8s\n", safe_str((char *) buffr, l)); } } diff --git a/libmej/strings.h b/libmej/strings.h deleted file mode 100644 index 74fc98b..0000000 --- a/libmej/strings.h +++ /dev/null @@ -1,115 +0,0 @@ -/*************************************************************** - * STRINGS.H -- String manipulation routines * - * -- Michael Jennings * - * -- 08 January 1997 * - ***************************************************************/ -/* - * Copyright (C) 1997-2000, Michael Jennings - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies of the Software, its documentation and marketing & publicity - * materials, and acknowledgment shall be given in the documentation, materials - * and software packages that this Software was used. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef _STRINGS_H_ - -#define _STRINGS_H_ - -#include "global.h" -#include -#include -#include - -#ifndef TRUE -# define TRUE ((unsigned char)(1)) -# define FALSE ((unsigned char)(0)) -#endif - -#ifndef swap -# define swap(a, b) (((int)(b)) ^= ((int)(a)) ^= ((int)(b)) ^= ((int)(a))) -#endif - -#ifndef cswap -# define cswap(a, b) ((b) ^= (a) ^= (b) ^= (a)) -#endif - -#define DEFAULT_DELIM " \r\n\f\t\v" - -#define CONST_STRLEN(x) (sizeof(x) - 1) -#define BEG_STRCASECMP(s, constr) (strncasecmp(s, constr, CONST_STRLEN(constr))) - -#ifdef IRIX -# define regex_t char -# define NBRA 9 - extern char *braslist[NBRA]; - extern char *braelist[NBRA]; - extern int nbra, regerrno, reglength; - extern char *loc1, *loc2, *locs; - - extern "C" int step(const char *, const char *); - extern "C" int advance(const char *, char *); - extern "C" char *compile(const char *, char *, char *); -#elif defined(HAVE_REGEX_H) -# include -#endif - -extern char *LeftStr(const char *, unsigned long); -extern char *MidStr(const char *, unsigned long, unsigned long); -extern char *RightStr(const char *, unsigned long); -#if defined(HAVE_REGEX_H) || defined(IRIX) -extern unsigned char Match(const char *, const char *); -#endif -extern char *Word(unsigned long, const char *); -extern char *PWord(unsigned long, const char *); -extern unsigned long NumWords(const char *); -extern char *StripWhitespace(char *); -extern char *LowerStr(char *); -extern char *UpStr(char *); -extern char *StrCaseStr(char *, const char *); -extern char *StrCaseChr(char *, char); -extern char *StrCasePBrk(char *, char *); -extern char *StrRev(char *); -extern char *StrDup(const char *); -#if !(HAVE_STRSEP) -extern char *strsep(char **, char *); -#endif -extern char *SafeStr(char *, unsigned short); -extern char *GarbageCollect(char *, size_t); -extern char *FGarbageCollect(char *, size_t); -extern char *CondenseWhitespace(char *); -extern void HexDump(void *, size_t); -#ifndef HAVE_MEMMEM -extern void *memmem(void *, size_t, void *, size_t); -#endif -#ifndef HAVE_USLEEP -extern void usleep(unsigned long); -#endif -#ifndef HAVE_SNPRINTF -# ifdef HAVE_STDARG_H -# include -# endif -extern int vsnprintf(char *str, size_t count, const char *fmt, va_list args); -extern int snprintf(char *str, size_t count, const char *fmt, ...); -#endif -/* -#ifndef HAVE_NANOSLEEP -extern void nanosleep(unsigned long); -#endif -*/ - -#endif /* _STRINGS_H_ */ diff --git a/libmej/strptime.c b/libmej/strptime.c deleted file mode 100644 index baa343f..0000000 --- a/libmej/strptime.c +++ /dev/null @@ -1,276 +0,0 @@ - -/*************************************************************** - * STRPTIME.C -- strptime() for IRIX * - * -- Michael Jennings * - * -- 2 April 1997 * - ***************************************************************/ -/* - * Copyright (C) 1997-2000, Michael Jennings - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies of the Software, its documentation and marketing & publicity - * materials, and acknowledgment shall be given in the documentation, materials - * and software packages that this Software was used. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -static const char cvs_ident[] = "$Id$"; - -#ifdef IRIX - -#include "config.h" -#include "../src/feature.h" - -#include "global.h" -#include -#include -#include -#include -#include "strptime.h" - -char * -strptime(char *buf, const char *format, struct tm *tm) -{ - - register char c; - register const char *tmp; - register int i, len; - - for (tmp = format; *tmp;) { - if (!(*buf)) - break; - - if ((c = *tmp++) != '%') { - if (!isspace(*buf) && c != *buf++) - return ((char *) NULL); - for (; *buf != 0 && isspace(*buf); buf++); - continue; - } - switch ((c = *tmp++)) { - case 0: - case '%': - if (*buf++ != '%') - return ((char *) NULL); - break; - - case 'C': - buf = strptime(buf, USMap.LocaleDateFormat, tm); - if (!buf) - return ((char *) NULL); - break; - - case 'c': - buf = strptime(buf, "%x %X", tm); - if (!buf) - return ((char *) NULL); - break; - - case 'D': - buf = strptime(buf, "%m/%d/%y", tm); - if (!buf) - return ((char *) NULL); - break; - - case 'R': - buf = strptime(buf, "%H:%M", tm); - if (!buf) - return ((char *) NULL); - break; - - case 'r': - buf = strptime(buf, "%I:%M:%S %p", tm); - if (!buf) - return ((char *) NULL); - break; - - case 'T': - buf = strptime(buf, "%H:%M:%S", tm); - if (!buf) - return ((char *) NULL); - break; - - case 'X': - buf = strptime(buf, USMap.TimeFormat, tm); - if (!buf) - return ((char *) NULL); - break; - - case 'x': - buf = strptime(buf, USMap.DateFormat, tm); - if (!buf) - return ((char *) NULL); - break; - - case 'j': - if (!isdigit(*buf)) - return ((char *) NULL); - for (i = 0; *buf != 0 && isdigit(*buf); buf++) { - i *= 10; - i += *buf - '0'; - } - if (i > 365) - return ((char *) NULL); - tm->tm_yday = i; - break; - - case 'M': - case 'S': - if (!(*buf) || isspace(*buf)) - break; - if (!isdigit(*buf)) - return ((char *) NULL); - for (i = 0; *buf != 0 && isdigit(*buf); buf++) { - i *= 10; - i += *buf - '0'; - } - if (i > 59) - return ((char *) NULL); - if (c == 'M') - tm->tm_min = i; - else - tm->tm_sec = i; - - if (*buf && isspace(*buf)) - for (; *tmp && !isspace(*tmp); tmp++); - break; - - case 'H': - case 'I': - case 'k': - case 'l': - if (!isdigit(*buf)) - return ((char *) NULL); - for (i = 0; *buf && isdigit(*buf); buf++) { - i *= 10; - i += *buf - '0'; - } - if (c == 'H' || c == 'k') { - if (i > 23) - return ((char *) NULL); - } else if (i > 11) - return ((char *) NULL); - tm->tm_hour = i; - if (*buf && isspace(*buf)) - for (; *tmp && !isspace(*tmp); tmp++); - break; - - case 'p': - len = strlen(USMap.AM); - if (!strncasecmp(buf, USMap.AM, len)) { - if (tm->tm_hour > 12) - return ((char *) NULL); - if (tm->tm_hour == 12) - tm->tm_hour = 0; - buf += len; - break; - } - len = strlen(USMap.PM); - if (!strncasecmp(buf, USMap.PM, len)) { - if (tm->tm_hour > 12) - return ((char *) NULL); - if (tm->tm_hour != 12) - tm->tm_hour += 12; - buf += len; - break; - } - return ((char *) NULL); - - case 'A': - case 'a': - for (i = 0; i < NUM_DAYS; i++) { - len = strlen(USMap.Days[i]); - if (!strncasecmp(buf, USMap.Days[i], len)) - break; - len = strlen(USMap.DaysAbbrev[i]); - if (!strncasecmp(buf, USMap.DaysAbbrev[i], len)) - break; - } - if (i == NUM_DAYS) - return ((char *) NULL); - tm->tm_wday = i; - buf += len; - break; - - case 'd': - case 'e': - if (!isdigit(*buf)) - return ((char *) NULL); - for (i = 0; *buf && isdigit(*buf); buf++) { - i *= 10; - i += *buf - '0'; - } - if (i > 31) - return ((char *) NULL); - tm->tm_mday = i; - if (*buf && isspace(*buf)) - for (; *tmp && !isspace(*tmp); tmp++); - break; - - case 'B': - case 'b': - case 'h': - for (i = 0; i < NUM_MONTHS; i++) { - len = strlen(USMap.Months[i]); - if (!strncasecmp(buf, USMap.Months[i], len)) - break; - len = strlen(USMap.MonthsAbbrev[i]); - if (!strncasecmp(buf, USMap.MonthsAbbrev[i], len)) - break; - } - if (i == NUM_MONTHS) - return ((char *) NULL); - tm->tm_mon = i; - buf += len; - break; - - case 'm': - if (!isdigit(*buf)) - return ((char *) NULL); - for (i = 0; *buf && isdigit(*buf); buf++) { - i *= 10; - i += *buf - '0'; - } - if (i < 1 || i > 12) - return ((char *) NULL); - tm->tm_mon = i - 1; - if (*buf && isspace(*buf)) - for (; *tmp && !isspace(*tmp); tmp++); - break; - - case 'Y': - case 'y': - if (!(*buf) || isspace(*buf)) - break; - if (!isdigit(*buf)) - return ((char *) NULL); - for (i = 0; *buf && isdigit(*buf); buf++) { - i *= 10; - i += *buf - '0'; - } - if (c == 'Y') - i -= 1900; - if (i < 0) - return ((char *) NULL); - tm->tm_year = i; - if (*buf && isspace(*buf)) - for (; *tmp && !isspace(*tmp); tmp++); - break; - } - } - return (buf); -} - -#endif diff --git a/libmej/strptime.h b/libmej/strptime.h deleted file mode 100644 index c1bd76a..0000000 --- a/libmej/strptime.h +++ /dev/null @@ -1,70 +0,0 @@ -/*************************************************************** - * STRPTIME.H -- Header file for strptime() * - * -- Michael Jennings * - * -- 2 April 1997 * - ***************************************************************/ -/* - * Copyright (C) 1997-2000, Michael Jennings - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies of the Software, its documentation and marketing & publicity - * materials, and acknowledgment shall be given in the documentation, materials - * and software packages that this Software was used. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef _STRPTIME_H_ - -#define _STRPTIME_H_ - -#define sizeofone(s) (sizeof(s) / sizeof((s)[0])) - -#define NUM_MONTHS 12 -#define NUM_DAYS 7 - -typedef struct dtmap_struct { - char *Months[NUM_MONTHS]; - char *MonthsAbbrev[NUM_MONTHS]; - char *Days[NUM_DAYS]; - char *DaysAbbrev[NUM_DAYS]; - char *DateFormat; - char *TimeFormat; - char *DateTimeFormat; - char *LocaleDateFormat; - char *AM; - char *PM; -} DTMap; - -static DTMap USMap = { - { "January", "February", "March", "April", - "May", "June", "July", "August", - "September", "October", "November", "December" }, - { "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }, - { "Sunday", "Monday", "Tuesday", "Wednesday", - "Thursday", "Friday", "Saturday" }, - { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }, - "%m/%d/%y", - "%H:%M:%S", - "%a %b %e %T %Z %Y", - "%A, %B, %e, %Y", - "AM", - "PM" -}; - -extern char *strptime(char *, const char *, struct tm *); - -#endif /* _STRPTIME_H_ */ diff --git a/src/actions.c b/src/actions.c index 525010e..87f006e 100644 --- a/src/actions.c +++ b/src/actions.c @@ -26,17 +26,10 @@ static const char cvs_ident[] = "$Id$"; #include "config.h" #include "feature.h" -#include #include -#include #include -#include "../libmej/debug.h" -#include "../libmej/strings.h" -#include "debug.h" #include "startup.h" -#include "mem.h" -#include "strings.h" #include "actions.h" #include "command.h" #include "e.h" diff --git a/src/buttons.c b/src/buttons.c index ea979a0..7e810ac 100644 --- a/src/buttons.c +++ b/src/buttons.c @@ -28,9 +28,6 @@ static const char cvs_ident[] = "$Id$"; #include -#include "../libmej/debug.h" -#include "../libmej/mem.h" -#include "../libmej/strings.h" #include "buttons.h" #include "command.h" #include "draw.h" @@ -580,7 +577,7 @@ button_create(char *text) MEMSET(button, 0, sizeof(button_t)); if (text) { - button->text = StrDup(text); + button->text = STRDUP(text); button->len = strlen(text); } else { button->text = ""; diff --git a/src/command.c b/src/command.c index 13408a0..90a9c09 100644 --- a/src/command.c +++ b/src/command.c @@ -111,10 +111,6 @@ static const char cvs_ident[] = "$Id$"; /* Eterm-specific Headers */ #include "command.h" #include "startup.h" -#include "../libmej/debug.h" -#include "debug.h" -#include "../libmej/mem.h" -#include "../libmej/strings.h" #include "events.h" #include "font.h" #include "grkelot.h" @@ -1017,7 +1013,7 @@ dump_stack_trace(void) print_error("Your system does not support any of the methods Eterm uses. Exiting.\n"); return; #endif - signal(SIGALRM, (sighandler_t) hard_exit); + signal(SIGALRM, (eterm_sighandler_t) hard_exit); alarm(10); system(cmd); } @@ -1063,7 +1059,7 @@ static RETSIGTYPE handle_exit_signal(int sig) { - print_error("Received terminal signal %s (%d)", sig_to_str(sig), sig); + print_error("Received terminal signal %s (%d)\n", sig_to_str(sig), sig); signal(sig, SIG_DFL); #ifdef UTMP_SUPPORT @@ -1082,7 +1078,7 @@ static RETSIGTYPE handle_crash(int sig) { - print_error("Received terminal signal %s (%d)", sig_to_str(sig), sig); + print_error("Received terminal signal %s (%d)\n", sig_to_str(sig), sig); signal(sig, SIG_DFL); /* Let the OS handle recursive seg faults */ /* Lock down security so we don't write any core files as root. */ @@ -1140,6 +1136,7 @@ clean_exit(void) remove_utmp_entry(); #endif privileges(REVERT); + memrec_dump(); PABLO_STOP_TRACING(); DPRINTF1(("Cleanup done. I am outta here!\n")); } @@ -1307,7 +1304,7 @@ get_pty(void) fcntl(fd, F_SETFL, O_NDELAY); return (fd); } else { - print_error("Can't open pseudo-tty -- %s", strerror(errno)); + print_error("Can't open pseudo-tty -- %s\n", strerror(errno)); return (-1); } } @@ -1343,7 +1340,7 @@ get_tty(void) print_error("Slave tty device name is NULL. Failed to open slave pty.\n"); exit(EXIT_FAILURE); } else if ((fd = open(ttydev, O_RDWR)) < 0) { - print_error("Can't open slave tty %s -- %s", ttydev, strerror(errno)); + print_error("Can't open slave tty %s -- %s\n", ttydev, strerror(errno)); exit(EXIT_FAILURE); } else { D_TTY(("Opened slave tty %s\n", ttydev)); @@ -1727,7 +1724,7 @@ init_locale(void) locale = setlocale(LC_ALL, ""); TermWin.fontset = (XFontSet) -1; if (locale == NULL) { - print_error("Setting locale failed."); + print_error("Setting locale failed.\n"); } else { #ifdef MULTI_CHARSET TermWin.fontset = create_fontset(etfonts[def_font_idx], etmfonts[def_font_idx]); @@ -1896,13 +1893,13 @@ xim_real_init(void) destroy_cb.callback = xim_destroy_cb; destroy_cb.client_data = NULL; if (XSetIMValues(xim, XNDestroyCallback, &destroy_cb, NULL)) { - print_error("Could not set destroy callback to IM"); + print_error("Could not set destroy callback to IM\n"); } } #endif if ((XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL)) || (!xim_styles)) { - print_error("input method doesn't support any style"); + print_error("input method doesn't support any style\n"); XCloseIM(xim); return -1; } @@ -1936,14 +1933,14 @@ xim_real_init(void) XFree(xim_styles); if (found == 0) { - print_error("input method doesn't support my preedit type"); + print_error("input method doesn't support my preedit type\n"); XCloseIM(xim); return -1; } if ((xim_input_style != (XIMPreeditNothing | XIMStatusNothing)) && (xim_input_style != (XIMPreeditArea | XIMStatusArea)) && (xim_input_style != (XIMPreeditPosition | XIMStatusNothing))) { - print_error("This program does not support the preedit type"); + print_error("This program does not support the preedit type\n"); XCloseIM(xim); return -1; } @@ -1969,7 +1966,7 @@ xim_real_init(void) XFree(status_attr); } if (xim_input_context == NULL) { - print_error("Failed to create input context"); + print_error("Failed to create input context\n"); XCloseIM(xim); return -1; } @@ -2065,7 +2062,7 @@ run_command(char *argv[]) # if defined (__sun__) on_exit(clean_exit, NULL); /* non-ANSI exit handler */ # else - print_error("no atexit(), UTMP entries can't be cleaned"); + print_error("no atexit(), UTMP entries can't be cleaned\n"); # endif #endif @@ -2083,7 +2080,7 @@ run_command(char *argv[]) SavedModes |= PrivMode_scrollbar; } #if DEBUG >= DEBUG_TTYMODE && defined(HAVE_TERMIOS_H) - if (debug_level >= DEBUG_TTYMODE) { + if (DEBUG_LEVEL >= DEBUG_TTYMODE) { debug_ttymode(&tio); } #endif @@ -2092,7 +2089,7 @@ run_command(char *argv[]) cmd_pid = fork(); D_CMD(("After fork(), cmd_pid == %d\n", cmd_pid)); if (cmd_pid < 0) { - print_error("fork(): %s", strerror(errno)); + print_error("fork(): %s\n", strerror(errno)); return (-1); } if (cmd_pid == 0) { @@ -2166,7 +2163,7 @@ run_command(char *argv[]) } if (argv != NULL) { #if DEBUG >= DEBUG_CMD - if (debug_level >= DEBUG_CMD) { + if (DEBUG_LEVEL >= DEBUG_CMD) { int i; for (i = 0; argv[i]; i++) { @@ -2175,7 +2172,7 @@ run_command(char *argv[]) } #endif execvp(argv[0], argv); - print_error("execvp() failed, cannot execute \"%s\": %s", argv[0], strerror(errno)); + print_error("execvp() failed, cannot execute \"%s\": %s\n", argv[0], strerror(errno)); } else { const char *argv0, *shell; @@ -2192,7 +2189,7 @@ run_command(char *argv[]) argv0 = p; } execlp(shell, argv0, NULL); - print_error("execlp() failed, cannot execute \"%s\": %s", shell, strerror(errno)); + print_error("execlp() failed, cannot execute \"%s\": %s\n", shell, strerror(errno)); } sleep(3); /* Sleep to make sure fork() returns in the parent, and so user can read error message */ exit(EXIT_FAILURE); @@ -2249,7 +2246,7 @@ init_command(char *argv[]) cmdbuf_ptr = cmdbuf_endp = cmdbuf_base; if ((cmd_fd = run_command(argv)) < 0) { - print_error("aborting"); + print_error("aborting\n"); exit(EXIT_FAILURE); } } @@ -2621,7 +2618,7 @@ main_loop(void) ch = *cmdbuf_ptr++; #if DEBUG >= DEBUG_VT - if (debug_level >= DEBUG_VT) { + if (DEBUG_LEVEL >= DEBUG_VT) { if (ch < 32) { D_VT(("\'%s\' (%d 0x%02x %03o)\n", get_ctrl_char_name(ch), ch, ch, ch)); } else { @@ -2730,7 +2727,7 @@ v_writeBig(int f, char *d, int len) } if (v_bufend < v_bufptr + len) { /* still won't fit: get more space */ - /* Don't use XtRealloc because an error is not fatal. */ + /* Don't use Xtlibmej_realloc because an error is not fatal. */ int size = v_bufptr - v_buffer; /* save across realloc */ v_buffer = REALLOC(v_buffer, size + len); diff --git a/src/debug.h b/src/debug.h deleted file mode 100644 index 4d26c2c..0000000 --- a/src/debug.h +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright (C) 1997-2000, Michael Jennings - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies of the Software, its documentation and marketing & publicity - * materials, and acknowledgment shall be given in the documentation, materials - * and software packages that this Software was used. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef _DEBUG_H -# define _DEBUG_H - -#include -#include - -#if defined(__GNUC__) && !defined(inline) -# define inline __inline__ -#endif - -extern unsigned int debug_level; - -/* A NOP. Does nothing. */ -# define NOP ((void)0) - -/* A macro and an #undef to FIXME-ize individual calls or entire code blocks. */ -# define FIXME_NOP(x) -# undef FIXME_BLOCK - -/* The basic debugging output leader. */ -#if defined(__FILE__) && defined(__LINE__) -# ifdef __GNUC__ -# define __DEBUG() fprintf(stderr, "[%lu] %12s | %4d: %s(): ", (unsigned long) time(NULL), __FILE__, __LINE__, __FUNCTION__) -# else -# define __DEBUG() fprintf(stderr, "[%lu] %12s | %4d: ", (unsigned long) time(NULL), __FILE__, __LINE__) -# endif -#else -# define __DEBUG() NOP -#endif - -/* A quick and dirty macro to say, "Hi! I got here without crashing!" */ -# define MOO() do { __DEBUG(); fprintf(stderr, "Moo.\n"); fflush(stderr); } while (0) - -/* Assertion/abort macros which are quite a bit more useful than assert() and abort(). */ -#if defined(__FILE__) && defined(__LINE__) -# ifdef __GNUC__ -# define ASSERT(x) do {if (!(x)) {if (debug_level>=1) {fatal_error("ASSERT failed in %s() at %s:%d: %s", __FUNCTION__, __FILE__, __LINE__, #x);} \ - else {print_warning("ASSERT failed in %s() at %s:%d: %s", __FUNCTION__, __FILE__, __LINE__, #x);}}} while (0) -# define ASSERT_RVAL(x, val) do {if (!(x)) {if (debug_level>=1) {fatal_error("ASSERT failed in %s() at %s:%d: %s", __FUNCTION__, __FILE__, __LINE__, #x);} \ - else {print_warning("ASSERT failed in %s() at %s:%d: %s", __FUNCTION__, __FILE__, __LINE__, #x);} \ - return (val);}} while (0) -# define ASSERT_NOTREACHED() do {if (debug_level>=1) {fatal_error("ASSERT failed in %s() at %s:%d: This code should not be reached.", __FUNCTION__, __FILE__, __LINE__);} \ - else {print_warning("ASSERT failed in %s() at %s:%d: This code should not be reached.", __FUNCTION__, __FILE__, __LINE__);} \ - } while (0) -# define ASSERT_NOTREACHED_RVAL(val) do {if (debug_level>=1) {fatal_error("ASSERT failed in %s() at %s:%d: This code should not be reached.", __FUNCTION__, __FILE__, __LINE__);} \ - else {print_warning("ASSERT failed in %s() at %s:%d: This code should not be reached.", __FUNCTION__, __FILE__, __LINE__);} \ - return (val);} while (0) -# define ABORT() fatal_error("Aborting in %s() at %s:%d.", __FUNCTION__, __FILE__, __LINE__) -# else -# define ASSERT(x) do {if (!(x)) {if (debug_level>=1) {fatal_error("ASSERT failed at %s:%d: %s", __FILE__, __LINE__, #x);} \ - else {print_warning("ASSERT failed at %s:%d: %s", __FILE__, __LINE__, #x);}}} while (0) -# define ASSERT_RVAL(x, val) do {if (!(x)) {if (debug_level>=1) {fatal_error("ASSERT failed at %s:%d: %s", __FILE__, __LINE__, #x);} \ - else {print_warning("ASSERT failed at %s:%d: %s", __FILE__, __LINE__, #x);} \ - return (val);}} while (0) -# define ASSERT_NOTREACHED() do {if (debug_level>=1) {fatal_error("ASSERT failed at %s:%d: This code should not be reached.", __FILE__, __LINE__);} \ - else {print_warning("ASSERT failed at %s:%d: This code should not be reached.", __FILE__, __LINE__);} \ - } while (0) -# define ASSERT_NOTREACHED_RVAL(val) do {if (debug_level>=1) {fatal_error("ASSERT failed at %s:%d: This code should not be reached.", __FILE__, __LINE__);} \ - else {print_warning("ASSERT failed at %s:%d: This code should not be reached.", __FILE__, __LINE__);} \ - return (val);} while (0) -# define ABORT() fatal_error("Aborting at %s:%d.", __FILE__, __LINE__) -# endif -#else -# define ASSERT(x) do {if (!(x)) {if (debug_level>=1) {fatal_error("ASSERT failed: %s", #x);} \ - else {print_warning("ASSERT failed: %s", #x);}}} while (0) -# define ASSERT_RVAL(x, val) do {if (!(x)) {if (debug_level>=1) {fatal_error("ASSERT failed: %s", #x);} \ - else {print_warning("ASSERT failed: %s", #x);} return (val);}} while (0) -# define ASSERT_NOTREACHED() return -# define ASSERT_NOTREACHED_RVAL(x) return (x) -# define ABORT() fatal_error("Aborting.") -#endif - -#define REQUIRE(x) do {if (!(x)) {if (debug_level>=1) {__DEBUG(); real_dprintf("REQUIRE failed: %s\n", #x);} return;}} while (0) -#define REQUIRE_RVAL(x, v) do {if (!(x)) {if (debug_level>=1) {__DEBUG(); real_dprintf("REQUIRE failed: %s\n", #x);} return (v);}} while (0) -#define NONULL(x) ((x) ? (x) : ("")) - -/* Macros for printing debugging messages */ -# if DEBUG >= 1 -# ifndef DPRINTF -# define DPRINTF(x) do { __DEBUG(); real_dprintf x; } while (0) -# endif -# define DPRINTF1(x) do { if (debug_level >= 1) {__DEBUG(); real_dprintf x;} } while (0) -# define DPRINTF2(x) do { if (debug_level >= 2) {__DEBUG(); real_dprintf x;} } while (0) -# define DPRINTF3(x) do { if (debug_level >= 3) {__DEBUG(); real_dprintf x;} } while (0) -# define DPRINTF4(x) do { if (debug_level >= 4) {__DEBUG(); real_dprintf x;} } while (0) -# define DPRINTF5(x) do { if (debug_level >= 5) {__DEBUG(); real_dprintf x;} } while (0) -# define DPRINTF6(x) do { if (debug_level >= 6) {__DEBUG(); real_dprintf x;} } while (0) -# define DPRINTF7(x) do { if (debug_level >= 7) {__DEBUG(); real_dprintf x;} } while (0) -# define DPRINTF8(x) do { if (debug_level >= 8) {__DEBUG(); real_dprintf x;} } while (0) -# define DPRINTF9(x) do { if (debug_level >= 9) {__DEBUG(); real_dprintf x;} } while (0) -# else -# ifndef DPRINTF -# define DPRINTF(x) NOP -# endif -# define DPRINTF1(x) NOP -# define DPRINTF2(x) NOP -# define DPRINTF3(x) NOP -# define DPRINTF4(x) NOP -# define DPRINTF5(x) NOP -# define DPRINTF6(x) NOP -# define DPRINTF7(x) NOP -# define DPRINTF8(x) NOP -# define DPRINTF9(x) NOP -# endif - -/* Use this for stuff that you only want turned on in dire situations */ -# define D_NEVER(x) NOP - -/* Debugging macros/defines which set the debugging levels for each output type. - To change the debugging level at which something appears, change the number in - both the DEBUG_ definition and the D_ macro (if there is one). -- mej */ - -# define DEBUG_SCREEN 1 -# define D_SCREEN(x) DPRINTF1(x) -# define DEBUG_CMD 1 -# define D_CMD(x) DPRINTF1(x) -# define DEBUG_TTY 1 -# define D_TTY(x) DPRINTF1(x) -# define DEBUG_SELECTION 1 -# define D_SELECT(x) DPRINTF1(x) -# define DEBUG_UTMP 1 -# define D_UTMP(x) DPRINTF1(x) -# define DEBUG_OPTIONS 1 -# define D_OPTIONS(x) DPRINTF1(x) -# define DEBUG_IMLIB 1 -# define D_IMLIB(x) DPRINTF1(x) -# define DEBUG_PIXMAP 1 -# define D_PIXMAP(x) DPRINTF1(x) -# define DEBUG_EVENTS 1 -# define D_EVENTS(x) DPRINTF1(x) - -# define DEBUG_X11 2 -# define D_X11(x) DPRINTF2(x) -# define DEBUG_ENL 2 -# define D_ENL(x) DPRINTF2(x) -# define DEBUG_SCROLLBAR 2 -# define D_SCROLLBAR(x) DPRINTF2(x) -# define DEBUG_BBAR 2 -# define D_BBAR(x) DPRINTF2(x) -# define DEBUG_TIMER 2 -# define D_TIMER(x) DPRINTF2(x) - -# define DEBUG_MENU 3 -# define D_MENU(x) DPRINTF3(x) -# define DEBUG_FONT 3 -# define D_FONT(x) DPRINTF3(x) -# define DEBUG_TTYMODE 3 -# define D_TTYMODE(x) DPRINTF3(x) -# define DEBUG_COLORS 3 -# define D_COLORS(x) DPRINTF3(x) - -# define DEBUG_ACTIONS 4 -# define D_ACTIONS(x) DPRINTF4(x) - -# define DEBUG_MALLOC 5 -# define D_MALLOC(x) DPRINTF5(x) -# define DEBUG_PROFILE 5 -# define D_PROFILE(x) DPRINTF5(x) - -# define DEBUG_VT 6 -# define D_VT(x) DPRINTF6(x) - -# define DEBUG_X 9 - -# define DEBUG_PARSE 9999 -# define D_PARSE(x) D_NEVER(x) -# define DEBUG_STRINGS 9999 -# define D_STRINGS(x) D_NEVER(x) - -#if (SIZEOF_LONG == 8) -# define MEMSET_LONG() l |= l<<32 -#else -# define MEMSET_LONG() ((void)0) -#endif - -#define MEMSET(s, c, count) do { \ - char *end = (char *)(s) + (count); \ - long l; \ - long *l_dest = (long *)(s); \ - char *c_dest; \ - \ - /* areas of less than 4 * sizeof(long) are set in 1-byte chunks. */ \ - if (((unsigned long) count) >= 4 * sizeof(long)) { \ - /* fill l with c. */ \ - l = (c) | (c)<<8; \ - l |= l<<16; \ - MEMSET_LONG(); \ - \ - /* fill in 1-byte chunks until boundary of long is reached. */ \ - if ((unsigned long)l_dest & (unsigned long)(sizeof(long) -1)) { \ - c_dest = (char *)l_dest; \ - while ((unsigned long)c_dest & (unsigned long)(sizeof(long) -1)) { \ - *(c_dest++) = (c); \ - } \ - l_dest = (long *)c_dest; \ - } \ - \ - /* fill in long-size chunks as long as possible. */ \ - while (((unsigned long) (end - (char *)l_dest)) >= sizeof(long)) { \ - *(l_dest++) = l; \ - } \ - } \ - \ - /* fill the tail in 1-byte chunks. */ \ - if ((char *)l_dest < end) { \ - c_dest = (char *)l_dest; \ - *(c_dest++) = (c); \ - while (c_dest < end) { \ - *(c_dest++) = (c); \ - } \ - } \ - } while (0) - -#include "profile.h" - -#endif /* _DEBUG_H */ diff --git a/src/draw.c b/src/draw.c index db2f4be..fd0f83e 100644 --- a/src/draw.c +++ b/src/draw.c @@ -26,10 +26,6 @@ static const char cvs_ident[] = "$Id$"; #include "config.h" #include "feature.h" -#include "../libmej/debug.h" -#include "../libmej/mem.h" -#include "../libmej/strings.h" -#include "debug.h" #include "draw.h" #include "misc.h" #include "pixmap.h" diff --git a/src/e.c b/src/e.c index 2832c64..a94b982 100644 --- a/src/e.c +++ b/src/e.c @@ -33,10 +33,6 @@ static const char cvs_ident[] = "$Id$"; #include #include -#include "../libmej/debug.h" -#include "../libmej/mem.h" -#include "../libmej/strings.h" -#include "debug.h" #include "e.h" #include "command.h" #include "startup.h" @@ -140,7 +136,7 @@ enl_ipc_send(char *str) if (last_msg != NULL) { FREE(last_msg); } - last_msg = StrDup(str); + last_msg = STRDUP(str); D_ENL(("Sending \"%s\" to Enlightenment.\n", str)); } @@ -249,7 +245,7 @@ enl_send_and_wait(char *msg) { char *reply = IPC_TIMEOUT; - sighandler_t old_alrm; + eterm_sighandler_t old_alrm; if (ipc_win == None) { /* The IPC window is missing. Wait for it to return or Eterm to be killed. */ @@ -257,7 +253,7 @@ enl_send_and_wait(char *msg) sleep(1); } } - old_alrm = (sighandler_t) signal(SIGALRM, (sighandler_t) enl_ipc_timeout); + old_alrm = (eterm_sighandler_t) signal(SIGALRM, (eterm_sighandler_t) enl_ipc_timeout); for (; reply == IPC_TIMEOUT;) { timeout = 0; enl_ipc_send(msg); @@ -290,43 +286,43 @@ eterm_ipc_parse(char *str) if (params) { tt_write((unsigned char *) params, strlen(params)); } else { - print_error("IPC Error: Invalid syntax in command \"%s\"", str); + print_error("IPC Error: Invalid syntax in command \"%s\"\n", str); } } else if (!strcasecmp(str, "parse")) { if (params) { cmd_write((unsigned char *) params, strlen(params)); } else { - print_error("IPC Error: Invalid syntax in command \"%s\"", str); + print_error("IPC Error: Invalid syntax in command \"%s\"\n", str); } } else if (!strcasecmp(str, "enl_send")) { if (params) { enl_ipc_send(params); } else { - print_error("IPC Error: Invalid syntax in command \"%s\"", str); + print_error("IPC Error: Invalid syntax in command \"%s\"\n", str); } } else if (!strcasecmp(str, "enl_query")) { if (params) { char *reply, header[512]; reply = enl_send_and_wait(params); - snprintf(header, sizeof(header), "Enlightenment IPC Reply to \"%s\":\n\n", params); + snprintf(header, sizeof(header), "Enlightenment IPC Reply to \"%s\":\n", params); tt_write((unsigned char *) header, strlen(header)); tt_write((unsigned char *) reply, strlen(reply)); tt_write((unsigned char *) "\n", 1); FREE(reply); } else { - print_error("IPC Error: Invalid syntax in command \"%s\"", str); + print_error("IPC Error: Invalid syntax in command \"%s\"\n", str); } } else if (!strcasecmp(str, "winop")) { if (params) { eterm_handle_winop(params); } else { - print_error("IPC Error: Invalid syntax in command \"%s\"", str); + print_error("IPC Error: Invalid syntax in command \"%s\"\n", str); } } else if (!strcasecmp(str, "exit")) { exit(0); } else { - print_error("IPC Error: Unrecognized command \"%s\"", str); + print_error("IPC Error: Unrecognized command \"%s\"\n", str); } } @@ -373,13 +369,13 @@ eterm_handle_winop(char *action) int x, y, n; char *xx, *yy; - n = NumWords(action); + n = num_words(action); if (n == 3 || n == 4) { if (n == 3) { win = TermWin.parent; } - xx = PWord(n - 1, action); - yy = PWord(n, action); + xx = get_pword(n - 1, action); + yy = get_pword(n, action); x = (int) strtol(xx, (char **) NULL, 0); y = (int) strtol(yy, (char **) NULL, 0); XMoveWindow(Xdisplay, win, x, y); @@ -388,13 +384,13 @@ eterm_handle_winop(char *action) int w, h, n; char *ww, *hh; - n = NumWords(action); + n = num_words(action); if (n == 3 || n == 4) { if (n == 3) { win = TermWin.parent; } - ww = PWord(n - 1, action); - hh = PWord(n, action); + ww = get_pword(n - 1, action); + hh = get_pword(n, action); w = (int) strtol(ww, (char **) NULL, 0); h = (int) strtol(hh, (char **) NULL, 0); XResizeWindow(Xdisplay, win, w, h); @@ -404,6 +400,6 @@ eterm_handle_winop(char *action) } else if (!BEG_STRCASECMP(action, "iconify")) { XIconifyWindow(Xdisplay, win, Xscreen); } else { - print_error("IPC Error: Unrecognized window operation \"%s\"", action); + print_error("IPC Error: Unrecognized window operation \"%s\"\n", action); } } diff --git a/src/encoding.c b/src/encoding.c index 707df9e..e688e56 100644 --- a/src/encoding.c +++ b/src/encoding.c @@ -186,7 +186,7 @@ enc_create_context(const char *id) tmp = (enc_context_t *) MALLOC(sizeof(enc_context_t)); MEMSET(tmp, 0, sizeof(enc_context_t)); - tmp->id = StrDup(id); + tmp->id = STRDUP(id); return tmp; } @@ -207,7 +207,7 @@ enc_create_state(const char *id, unsigned char lifetime) tmp = (enc_state_t *) MALLOC(sizeof(enc_state_t)); MEMSET(tmp, 0, sizeof(enc_state_t)); - tmp->id = StrDup(id); + tmp->id = STRDUP(id); tmp->lifetime = lifetime; return tmp; } diff --git a/src/eterm_debug.h b/src/eterm_debug.h new file mode 100644 index 0000000..496cda5 --- /dev/null +++ b/src/eterm_debug.h @@ -0,0 +1,84 @@ +/* + * Copyright (C) 1997-2000, Michael Jennings + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies of the Software, its documentation and marketing & publicity + * materials, and acknowledgment shall be given in the documentation, materials + * and software packages that this Software was used. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef _ETERM_DEBUG_H +# define _ETERM_DEBUG_H + +/* Debugging macros/defines which set the debugging levels for each output type. + To change the debugging level at which something appears, change the number in + both the DEBUG_ definition and the D_ macro (if there is one). -- mej */ + +# define DEBUG_SCREEN 1 +# define D_SCREEN(x) DPRINTF1(x) +# define DEBUG_CMD 1 +# define D_CMD(x) DPRINTF1(x) +# define DEBUG_TTY 1 +# define D_TTY(x) DPRINTF1(x) +# define DEBUG_SELECTION 1 +# define D_SELECT(x) DPRINTF1(x) +# define DEBUG_UTMP 1 +# define D_UTMP(x) DPRINTF1(x) +# define DEBUG_OPTIONS 1 +# define D_OPTIONS(x) DPRINTF1(x) +# define DEBUG_IMLIB 1 +# define D_IMLIB(x) DPRINTF1(x) +# define DEBUG_PIXMAP 1 +# define D_PIXMAP(x) DPRINTF1(x) +# define DEBUG_EVENTS 1 +# define D_EVENTS(x) DPRINTF1(x) + +# define DEBUG_X11 2 +# define D_X11(x) DPRINTF2(x) +# define DEBUG_ENL 2 +# define D_ENL(x) DPRINTF2(x) +# define DEBUG_SCROLLBAR 2 +# define D_SCROLLBAR(x) DPRINTF2(x) +# define DEBUG_BBAR 2 +# define D_BBAR(x) DPRINTF2(x) +# define DEBUG_TIMER 2 +# define D_TIMER(x) DPRINTF2(x) + +# define DEBUG_MENU 3 +# define D_MENU(x) DPRINTF3(x) +# define DEBUG_FONT 3 +# define D_FONT(x) DPRINTF3(x) +# define DEBUG_TTYMODE 3 +# define D_TTYMODE(x) DPRINTF3(x) +# define DEBUG_COLORS 3 +# define D_COLORS(x) DPRINTF3(x) + +# define DEBUG_ACTIONS 4 +# define D_ACTIONS(x) DPRINTF4(x) + +# define DEBUG_PROFILE 5 +# define D_PROFILE(x) DPRINTF5(x) + +# define DEBUG_VT 6 +# define D_VT(x) DPRINTF6(x) + +# define DEBUG_X 9 + +# define DEBUG_PARSE 9999 +# define D_PARSE(x) D_NEVER(x) + +#endif /* _ETERM_DEBUG_H */ diff --git a/src/events.c b/src/events.c index 314a094..2df0126 100644 --- a/src/events.c +++ b/src/events.c @@ -31,12 +31,7 @@ static const char cvs_ident[] = "$Id$"; #include #include -#include "../libmej/debug.h" -#include "../libmej/strings.h" -#include "debug.h" #include "startup.h" -#include "mem.h" -#include "strings.h" #include "actions.h" #include "buttons.h" #include "command.h" @@ -783,13 +778,13 @@ xerror_handler(Display * display, XErrorEvent * event) strcpy(err_string, ""); XGetErrorText(display, event->error_code, err_string, sizeof(err_string)); - print_error("XError in function %s, resource 0x%08x (request %d.%d): %s (error %d)", request_code_to_name(event->request_code), + print_error("XError in function %s, resource 0x%08x (request %d.%d): %s (error %d)\n", request_code_to_name(event->request_code), (int) event->resourceid, event->request_code, event->minor_code, err_string, event->error_code); #if DEBUG > DEBUG_X11 - if (debug_level >= DEBUG_X11) { + if (DEBUG_LEVEL >= DEBUG_X11) { dump_stack_trace(); } #endif - print_error("Attempting to continue..."); + print_error("Attempting to continue...\n"); return 0; } diff --git a/src/events.h b/src/events.h index 10ee5ec..38ab697 100644 --- a/src/events.h +++ b/src/events.h @@ -50,7 +50,7 @@ # define COUNT_EVENT(x) NOP #endif #ifdef PROFILE_X_EVENTS -# define P_EVENT_TIME(type, start, stop) real_dprintf(type ": %ld microseconds\n", P_CMPTIMEVALS_USEC((start), (stop))) +# define P_EVENT_TIME(type, start, stop) libmej_dprintf(type ": %ld microseconds\n", P_CMPTIMEVALS_USEC((start), (stop))) #else # define P_EVENT_TIME(type, start, stop) NOP #endif diff --git a/src/feature.h b/src/feature.h index b2faf2e..cb3474a 100644 --- a/src/feature.h +++ b/src/feature.h @@ -89,7 +89,8 @@ # include # include -# include "debug.h" +# include +# include "eterm_debug.h" /********************* Color, screen, and image stuff *********************/ diff --git a/src/font.c b/src/font.c index 2f2b496..9ffc298 100644 --- a/src/font.c +++ b/src/font.c @@ -32,10 +32,6 @@ static const char cvs_ident[] = "$Id$"; #include #include -#include "../libmej/debug.h" -#include "../libmej/mem.h" -#include "../libmej/strings.h" -#include "debug.h" #include "command.h" #include "font.h" #include "startup.h" @@ -78,9 +74,9 @@ eterm_font_add(char ***plist, const char *fontname, unsigned char idx) { etfonts = (char **) REALLOC(etfonts, new_size); #ifdef MULTI_CHARSET etmfonts = (char **) REALLOC(etmfonts, new_size); - D_FONT((" -> Reallocating fonts lists to a size of %u bytes gives %8p/%8p\n", new_size, etfonts, etmfonts)); + D_FONT((" -> libmej_reallocating fonts lists to a size of %u bytes gives %8p/%8p\n", new_size, etfonts, etmfonts)); #else - D_FONT((" -> Reallocating fonts list to a size of %u bytes gives %8p\n", new_size, etfonts)); + D_FONT((" -> libmej_reallocating fonts list to a size of %u bytes gives %8p\n", new_size, etfonts)); #endif } else { etfonts = (char **) MALLOC(new_size); @@ -109,7 +105,7 @@ eterm_font_add(char ***plist, const char *fontname, unsigned char idx) { FREE(flist[idx]); } } - flist[idx] = StrDup(fontname); + flist[idx] = STRDUP(fontname); DUMP_FONTS(); } @@ -132,7 +128,7 @@ font_cache_add(const char *name, unsigned char type, void *info) { D_FONT(("font_cache_add(%s, %d, %8p) called.\n", NONULL(name), type, info)); font = (cachefont_t *) MALLOC(sizeof(cachefont_t)); - font->name = StrDup(name); + font->name = STRDUP(name); font->type = type; font->ref_cnt = 1; switch (type) { @@ -295,7 +291,7 @@ load_font(const char *name, const char *fallback, unsigned char type) if ((xfont = XLoadQueryFont(Xdisplay, name)) == NULL) { print_error("Unable to load font \"%s\". Falling back on \"%s\"\n", name, fallback); if ((xfont = XLoadQueryFont(Xdisplay, fallback)) == NULL) { - fatal_error("Couldn't load the fallback font either. Giving up."); + fatal_error("Couldn't load the fallback font either. Giving up.\n"); } else { font_cache_add(fallback, type, (void *) xfont); } @@ -579,7 +575,7 @@ parse_font_fx(const char *line) ASSERT(line != NULL); - n = NumWords(line); + n = num_words(line); if (!BEG_STRCASECMP(line, "none")) { MEMSET(&fshadow, 0, sizeof(fontshadow_t)); @@ -587,7 +583,7 @@ parse_font_fx(const char *line) if (n != 2) { return 0; } - color = Word(2, line); + color = get_word(2, line); p = get_color_by_name(color, "black"); FREE(color); for (which = 0; which < 4; which++) { @@ -596,10 +592,10 @@ parse_font_fx(const char *line) } else if (!BEG_STRCASECMP(line, "shadow")) { if (n == 2) { which = SHADOW_BOTTOM_RIGHT; - color = Word(2, line); + color = get_word(2, line); } else if (n == 3) { - color = Word(3, line); - corner = PWord(2, line); + color = get_word(3, line); + corner = get_pword(2, line); which = get_corner(corner); if (which >= 4) { return 0; @@ -613,12 +609,12 @@ parse_font_fx(const char *line) if (n != 3) { return 0; } - color = Word(2, line); + color = get_word(2, line); p = get_color_by_name(color, "black"); set_shadow_color_by_pixel(SHADOW_BOTTOM_RIGHT, p); FREE(color); - color = Word(3, line); + color = get_word(3, line); p = get_color_by_name(color, "white"); set_shadow_color_by_pixel(SHADOW_TOP_LEFT, p); FREE(color); @@ -626,12 +622,12 @@ parse_font_fx(const char *line) if (n != 3) { return 0; } - color = Word(2, line); + color = get_word(2, line); p = get_color_by_name(color, "black"); set_shadow_color_by_pixel(SHADOW_TOP_LEFT, p); FREE(color); - color = Word(3, line); + color = get_word(3, line); p = get_color_by_name(color, "white"); set_shadow_color_by_pixel(SHADOW_BOTTOM_RIGHT, p); FREE(color); @@ -642,11 +638,11 @@ parse_font_fx(const char *line) which = get_corner(line); if (which >= 4) { which = i; - color = Word(1, line); - line = PWord(2, line); + color = get_word(1, line); + line = get_pword(2, line); } else { - color = Word(2, line); - line = PWord(3, line); + color = get_word(2, line); + line = get_pword(3, line); } set_shadow_color_by_name(which, color); FREE(color); diff --git a/src/menus.c b/src/menus.c index 08100c8..ee03aa4 100644 --- a/src/menus.c +++ b/src/menus.c @@ -28,9 +28,6 @@ static const char cvs_ident[] = "$Id$"; #include -#include "../libmej/debug.h" -#include "../libmej/mem.h" -#include "../libmej/strings.h" #include "command.h" #include "draw.h" #include "e.h" @@ -442,7 +439,7 @@ menu_create(char *title) } menu = (menu_t *) MALLOC(sizeof(menu_t)); MEMSET(menu, 0, sizeof(menu_t)); - menu->title = StrDup(title ? title : ""); + menu->title = STRDUP(title ? title : ""); menu->win = XCreateWindow(Xdisplay, Xroot, 0, 0, 1, 1, 0, Xdepth, InputOutput, CopyFromParent, CWOverrideRedirect | CWSaveUnder | CWBackingStore | CWBorderPixel | CWColormap, &xattr); @@ -466,7 +463,7 @@ menu_set_title(menu_t *menu, const char *title) REQUIRE_RVAL(title != NULL, 0); FREE(menu->title); - menu->title = StrDup(title); + menu->title = STRDUP(title); XStoreName(Xdisplay, menu->win, menu->title); return 1; } @@ -656,7 +653,7 @@ menuitem_create(char *text) MEMSET(menuitem, 0, sizeof(menuitem_t)); if (text) { - menuitem->text = StrDup(text); + menuitem->text = STRDUP(text); menuitem->len = strlen(text); } return menuitem; @@ -671,7 +668,7 @@ menuitem_set_text(menuitem_t * item, const char *text) if (item->text) { FREE(item->text); } - item->text = StrDup(text); + item->text = STRDUP(text); item->len = strlen(text); return 1; } @@ -717,7 +714,7 @@ menuitem_set_rtext(menuitem_t * item, char *rtext) ASSERT_RVAL(item != NULL, 0); ASSERT_RVAL(rtext != NULL, 0); - item->rtext = StrDup(rtext); + item->rtext = STRDUP(rtext); item->rlen = strlen(rtext); return 1; } @@ -1043,14 +1040,14 @@ menu_draw(menu_t * menu) break; #if 0 case MENUITEM_STRING: - safeaction = StrDup(item->action.string); - SafeStr(safeaction, strlen(safeaction)); + safeaction = STRDUP(item->action.string); + safe_str(safeaction, strlen(safeaction)); D_MENU((" Item %hu: %s (string %s)\n", i, item->text, safeaction)); FREE(safeaction); break; case MENUITEM_ECHO: - safeaction = StrDup(item->action.string); - SafeStr(safeaction, strlen(safeaction)); + safeaction = STRDUP(item->action.string); + safe_str(safeaction, strlen(safeaction)); D_MENU((" Item %hu: %s (echo %s)\n", i, item->text, safeaction)); FREE(safeaction); break; diff --git a/src/misc.c b/src/misc.c index 0bfc0e7..f266eb5 100644 --- a/src/misc.c +++ b/src/misc.c @@ -36,10 +36,6 @@ static const char cvs_ident[] = "$Id$"; #include #include -#include "../libmej/debug.h" -#include "debug.h" -#include "../libmej/mem.h" -#include "../libmej/strings.h" #include "command.h" #include "startup.h" #include "misc.h" @@ -55,49 +51,6 @@ my_basename(const char *str) } -/* Print a non-terminal error message */ -void -print_error(const char *fmt,...) -{ - - va_list arg_ptr; - - va_start(arg_ptr, fmt); - fprintf(stderr, APL_NAME ": "); - vfprintf(stderr, fmt, arg_ptr); - fprintf(stderr, "\n"); - va_end(arg_ptr); -} - -/* Print a simple warning. */ -void -print_warning(const char *fmt,...) -{ - - va_list arg_ptr; - - va_start(arg_ptr, fmt); - fprintf(stderr, APL_NAME ": warning: "); - vfprintf(stderr, fmt, arg_ptr); - fprintf(stderr, "\n"); - va_end(arg_ptr); -} - -/* Print a fatal error message and terminate */ -void -fatal_error(const char *fmt,...) -{ - - va_list arg_ptr; - - va_start(arg_ptr, fmt); - fprintf(stderr, APL_NAME ": FATAL: "); - vfprintf(stderr, fmt, arg_ptr); - fprintf(stderr, "\n"); - va_end(arg_ptr); - exit(-1); -} - /* * Compares the first n characters of s1 and s2, where n is strlen(s2) * Returns strlen(s2) if they match, 0 if not. @@ -264,9 +217,9 @@ parse_escaped_string(char *str) *pnew = 0; #if DEBUG >= DEBUG_STRINGS - if (debug_level >= DEBUG_STRINGS) { - D_STRINGS(("New value is:\n\n")); - HexDump(str, (size_t) (pnew - str)); + if (DEBUG_LEVEL >= DEBUG_STRINGS) { + D_STRINGS(("New value is:\n")); + hex_dump(str, (size_t) (pnew - str)); } #endif @@ -360,7 +313,7 @@ mkdirhier(const char *path) struct stat dst; D_CMD(("path == %s\n", path)); - str = StrDup(path); /* We need to modify it. */ + str = STRDUP(path); /* We need to modify it. */ pstr = str; if (*pstr == '/') { pstr++; diff --git a/src/misc.h b/src/misc.h index 502a0b6..cefddc6 100644 --- a/src/misc.h +++ b/src/misc.h @@ -37,9 +37,6 @@ _XFUNCPROTOBEGIN extern const char *my_basename(const char *str); -extern void print_error(const char *fmt,...); -extern void print_warning(const char *fmt,...); -extern void fatal_error(const char *fmt,...); extern unsigned long str_leading_match(register const char *, register const char *); extern char *str_trim(char *str); extern int parse_escaped_string(char *str); diff --git a/src/options.c b/src/options.c index 7164c0d..4571eb2 100644 --- a/src/options.c +++ b/src/options.c @@ -39,10 +39,6 @@ static const char cvs_ident[] = "$Id$"; #include #include -#include "../libmej/debug.h" -#include "../libmej/mem.h" -#include "../libmej/strings.h" -#include "debug.h" #include "actions.h" #include "buttons.h" #include "command.h" @@ -184,17 +180,17 @@ static const struct { OPT_STR('X', "config-file", "choose an alternate config file", &rs_config_file), OPT_STR('d', "display", "X server to connect to", &display_name), #if DEBUG <= 0 - OPT_ILONG("debug", "level of debugging information to show (support not compiled in)", &debug_level), + OPT_ILONG("debug", "level of debugging information to show (support not compiled in)", &DEBUG_LEVEL), #elif DEBUG == 1 - OPT_ILONG("debug", "level of debugging information to show (0-1)", &debug_level), + OPT_ILONG("debug", "level of debugging information to show (0-1)", &DEBUG_LEVEL), #elif DEBUG == 2 - OPT_ILONG("debug", "level of debugging information to show (0-2)", &debug_level), + OPT_ILONG("debug", "level of debugging information to show (0-2)", &DEBUG_LEVEL), #elif DEBUG == 3 - OPT_ILONG("debug", "level of debugging information to show (0-3)", &debug_level), + OPT_ILONG("debug", "level of debugging information to show (0-3)", &DEBUG_LEVEL), #elif DEBUG == 4 - OPT_ILONG("debug", "level of debugging information to show (0-4)", &debug_level), + OPT_ILONG("debug", "level of debugging information to show (0-4)", &DEBUG_LEVEL), #else - OPT_ILONG("debug", "level of debugging information to show (0-5)", &debug_level), + OPT_ILONG("debug", "level of debugging information to show (0-5)", &DEBUG_LEVEL), #endif OPT_BLONG("install", "install a private colormap", &Options, Opt_install), @@ -448,8 +444,8 @@ version(void) #if DEBUG >= DEBUG_EVENTS printf(" +DEBUG_EVENTS"); #endif -#if DEBUG >= DEBUG_MALLOC - printf(" +DEBUG_MALLOC"); +#if DEBUG >= DEBUG_MEM + printf(" +DEBUG_MEM"); #endif #if DEBUG >= DEBUG_X11 printf(" +DEBUG_X11"); @@ -826,7 +822,7 @@ get_options(int argc, char *argv[]) D_OPTIONS(("argv[%d] == \"%s\"\n", i, argv[i])); if (*opt != '-') { - print_error("unexpected argument %s -- expected option", opt); + print_error("unexpected argument %s -- expected option\n", opt); CHECK_BAD(); continue; } @@ -844,14 +840,14 @@ get_options(int argc, char *argv[]) } } if (j == optList_numoptions()) { - print_error("unrecognized long option --%s", opt); + print_error("unrecognized long option --%s\n", opt); CHECK_BAD(); continue; } /* Put option-specific warnings here -- mej */ #if 0 /* No longer needed, since it works :) */ if (optList[j].short_opt == 'w') { - print_error("warning: Use of the -w / --border-width option is discouraged and unsupported."); + print_error("warning: Use of the -w / --border-width option is discouraged and unsupported.\n"); } #endif @@ -861,7 +857,7 @@ get_options(int argc, char *argv[]) hasequal = 1; } else { if (argv[i + 1]) { - if (*argv[i + 1] != '-' || StrCaseStr(optList[j].long_opt, "font") || StrCaseStr(optList[j].long_opt, "geometry")) { + if (*argv[i + 1] != '-' || strcasestr(optList[j].long_opt, "font") || strcasestr(optList[j].long_opt, "geometry")) { val_ptr = argv[++i]; } } @@ -871,7 +867,7 @@ get_options(int argc, char *argv[]) continue; } if (!(optList[j].flag & OPT_BOOLEAN) && (val_ptr == NULL)) { - print_error("long option --%s requires a%s value", opt, + print_error("long option --%s requires a%s value\n", opt, (optList[j].flag & OPT_INTEGER ? "n integer" : " string")); CHECK_BAD(); continue; @@ -885,7 +881,7 @@ get_options(int argc, char *argv[]) rs_execArgs = (char **) MALLOC(sizeof(char *) * (argc - i + 1)); for (k = 0; k < len; k++) { - rs_execArgs[k] = StrDup(argv[k + i]); + rs_execArgs[k] = STRDUP(argv[k + i]); D_OPTIONS(("rs_execArgs[%d] == %s\n", k, rs_execArgs[k])); } rs_execArgs[k] = (char *) NULL; @@ -894,11 +890,11 @@ get_options(int argc, char *argv[]) register unsigned short k; - rs_execArgs = (char **) MALLOC(sizeof(char *) * (NumWords(val_ptr) + 1)); + rs_execArgs = (char **) MALLOC(sizeof(char *) * (num_words(val_ptr) + 1)); for (k = 0; val_ptr; k++) { - rs_execArgs[k] = Word(1, val_ptr); - val_ptr = PWord(2, val_ptr); + rs_execArgs[k] = get_word(1, val_ptr); + val_ptr = get_pword(2, val_ptr); D_OPTIONS(("rs_execArgs[%d] == %s\n", k, rs_execArgs[k])); } rs_execArgs[k] = (char *) NULL; @@ -922,7 +918,7 @@ get_options(int argc, char *argv[]) *(optList[j].maskvar) &= ~(optList[j].mask); } } else { - print_error("unrecognized boolean value \"%s\" for option --%s", + print_error("unrecognized boolean value \"%s\" for option --%s\n", val_ptr, optList[j].long_opt); CHECK_BAD(); } @@ -938,7 +934,7 @@ get_options(int argc, char *argv[]) } else { /* String value */ D_OPTIONS(("String option detected\n")); if (val_ptr && optList[j].pval) { - *((const char **) optList[j].pval) = StrDup(val_ptr); + *((const char **) optList[j].pval) = STRDUP(val_ptr); } } } @@ -955,14 +951,14 @@ get_options(int argc, char *argv[]) } } if (j == optList_numoptions()) { - print_error("unrecognized option -%c", opt[pos]); + print_error("unrecognized option -%c\n", opt[pos]); CHECK_BAD(); continue; } /* Put option-specific warnings here -- mej */ #if 0 /* No longer needed, since it works :) */ if (optList[j].short_opt == 'w') { - print_error("warning: Use of the -w / --border-width option is discouraged and unsupported."); + print_error("warning: Use of the -w / --border-width option is discouraged and unsupported.\n"); } #endif @@ -978,7 +974,7 @@ get_options(int argc, char *argv[]) continue; } if ((val_ptr == NULL) || ((*val_ptr == '-') && (optList[j].short_opt != 'F') && (optList[j].short_opt != 'g'))) { - print_error("option -%c requires a%s value", opt[pos], + print_error("option -%c requires a%s value\n", opt[pos], (optList[j].flag & OPT_INTEGER ? "n integer" : " string")); CHECK_BAD(); if (val_ptr) { /* If the "arg" was actually an option, don't skip it */ @@ -1004,15 +1000,15 @@ get_options(int argc, char *argv[]) rs_execArgs = (char **) MALLOC(sizeof(char *) * len); if (k == i) { - rs_execArgs[0] = StrDup((char *) (val_ptr)); + rs_execArgs[0] = STRDUP((char *) (val_ptr)); D_OPTIONS(("rs_execArgs[0] == %s\n", rs_execArgs[0])); k++; } else { - rs_execArgs[0] = StrDup(argv[k - 1]); + rs_execArgs[0] = STRDUP(argv[k - 1]); D_OPTIONS(("rs_execArgs[0] == %s\n", rs_execArgs[0])); } for (; k < argc; k++) { - rs_execArgs[k - i] = StrDup(argv[k]); + rs_execArgs[k - i] = STRDUP(argv[k]); D_OPTIONS(("rs_execArgs[%d] == %s\n", k - i, rs_execArgs[k - i])); } rs_execArgs[len - 1] = (char *) NULL; @@ -1033,7 +1029,7 @@ get_options(int argc, char *argv[]) } else { /* String value */ D_OPTIONS(("String option detected\n")); if (optList[j].pval) { - *((const char **) optList[j].pval) = StrDup(val_ptr); + *((const char **) optList[j].pval) = STRDUP(val_ptr); } } /* End if value type */ } /* End if option type */ @@ -1093,7 +1089,7 @@ get_initial_options(int argc, char *argv[]) } D_OPTIONS(("hasequal == %d val_ptr == %10.8p \"%s\"\n", hasequal, val_ptr, val_ptr)); if (val_ptr == NULL && j != 4) { - print_error("long option --%s requires a%s value", opt, (j == 3 ? "n integer" : " string")); + print_error("long option --%s requires a%s value", opt, (j == 3 ? "n integer" : " string\n")); continue; } if (j == 3) { @@ -1121,7 +1117,7 @@ get_initial_options(int argc, char *argv[]) } else { D_OPTIONS(("String option detected\n")); if (val_ptr && optList[j].pval) { - *((const char **) optList[j].pval) = StrDup(val_ptr); + *((const char **) optList[j].pval) = STRDUP(val_ptr); } } } else { /* It's a POSIX option */ @@ -1149,7 +1145,7 @@ get_initial_options(int argc, char *argv[]) } D_OPTIONS(("val_ptr == %s done == %d\n", val_ptr, done)); if ((val_ptr == NULL) || (*val_ptr == '-')) { - print_error("option -%c requires a string value", opt[pos]); + print_error("option -%c requires a string value\n", opt[pos]); if (val_ptr) { /* If the "arg" was actually an option, don't skip it */ i--; } @@ -1157,7 +1153,7 @@ get_initial_options(int argc, char *argv[]) } D_OPTIONS(("String option detected\n")); if (optList[j].pval) { - *((const char **) optList[j].pval) = StrDup(val_ptr); + *((const char **) optList[j].pval) = STRDUP(val_ptr); } } /* End for loop */ } /* End if (islong) */ @@ -1230,7 +1226,7 @@ conf_register_context(char *name, ctx_handler_t handler) { ctx_cnt *= 2; context = (ctx_t *) REALLOC(context, sizeof(ctx_t) * ctx_cnt); } - context[ctx_idx].name = StrDup(name); + context[ctx_idx].name = STRDUP(name); context[ctx_idx].handler = handler; D_OPTIONS(("conf_register_context(): Added context \"%s\" with ID %d and handler 0x%08x\n", context[ctx_idx].name, ctx_idx, context[ctx_idx].handler)); @@ -1257,7 +1253,7 @@ conf_register_fstate(FILE *fp, char *path, char *outfile, unsigned long line, un unsigned char conf_register_builtin(char *name, eterm_func_ptr_t ptr) { - builtins[builtin_idx].name = StrDup(name); + builtins[builtin_idx].name = STRDUP(name); builtins[builtin_idx].ptr = ptr; if (++builtin_idx == builtin_cnt) { builtin_cnt *= 2; @@ -1379,11 +1375,11 @@ builtin_random(char *param) rseed = (unsigned int) (getpid() * time(NULL) % ((unsigned int) -1)); srand(rseed); } - n = NumWords(param); + n = num_words(param); index = (int) (n * ((float) rand()) / (RAND_MAX + 1.0)) + 1; D_PARSE(("random index == %lu\n", index)); - return (Word(index, param)); + return (get_word(index, param)); } static char * @@ -1399,7 +1395,7 @@ builtin_exec(char *param) Command = (char *) MALLOC(CONFIG_BUFF); OutFile = tmpnam(NULL); if (strlen(param) + strlen(OutFile) + 8 > CONFIG_BUFF) { - print_error("Parse error in file %s, line %lu: Cannot execute command, line too long", + print_error("Parse error in file %s, line %lu: Cannot execute command, line too long\n", file_peek_path(), file_peek_line()); return ((char *) NULL); } @@ -1417,12 +1413,12 @@ builtin_exec(char *param) Output[fsize] = 0; fclose(fp); remove(OutFile); - Output = CondenseWhitespace(Output); + Output = condense_whitespace(Output); } else { - print_warning("Command at line %lu of file %s returned no output.", file_peek_line(), file_peek_path()); + print_warning("Command at line %lu of file %s returned no output.\n", file_peek_line(), file_peek_path()); } } else { - print_warning("Output file %s could not be created. (line %lu of file %s)", NONULL(OutFile), + print_warning("Output file %s could not be created. (line %lu of file %s)\n", NONULL(OutFile), file_peek_line(), file_peek_path()); } FREE(Command); @@ -1436,15 +1432,15 @@ builtin_get(char *param) char *s, *f, *v; unsigned short n; - if (!param || ((n = NumWords(param)) > 2)) { - print_error("Parse error in file %s, line %lu: Invalid syntax for %get(). Syntax is: %get(variable)", file_peek_path(), file_peek_line()); + if (!param || ((n = num_words(param)) > 2)) { + print_error("Parse error in file %s, line %lu: Invalid syntax for %get(). Syntax is: %get(variable)\n", file_peek_path(), file_peek_line()); return NULL; } D_PARSE(("builtin_get(%s) called\n", param)); - s = Word(1, param); + s = get_word(1, param); if (n == 2) { - f = Word(2, param); + f = get_word(2, param); } else { f = NULL; } @@ -1454,7 +1450,7 @@ builtin_get(char *param) if (f) { FREE(f); } - return (StrDup(v)); + return (STRDUP(v)); } else if (f) { return f; } else { @@ -1467,14 +1463,14 @@ builtin_put(char *param) { char *var, *val; - if (!param || (NumWords(param) != 2)) { - print_error("Parse error in file %s, line %lu: Invalid syntax for %put(). Syntax is: %put(variable value)", file_peek_path(), file_peek_line()); + if (!param || (num_words(param) != 2)) { + print_error("Parse error in file %s, line %lu: Invalid syntax for %put(). Syntax is: %put(variable value)\n", file_peek_path(), file_peek_line()); return NULL; } D_PARSE(("builtin_put(%s) called\n", param)); - var = Word(1, param); - val = Word(2, param); + var = get_word(1, param); + val = get_word(2, param); conf_put_var(var, val); return NULL; } @@ -1489,12 +1485,12 @@ builtin_dirscan(char *param) struct stat filestat; char *dir, *buff; - if (!param || (NumWords(param) != 1)) { - print_error("Parse error in file %s, line %lu: Invalid syntax for %dirscan(). Syntax is: %dirscan(directory)", file_peek_path(), file_peek_line()); + if (!param || (num_words(param) != 1)) { + print_error("Parse error in file %s, line %lu: Invalid syntax for %dirscan(). Syntax is: %dirscan(directory)\n", file_peek_path(), file_peek_line()); return NULL; } D_PARSE(("builtin_dirscan(%s)\n", param)); - dir = Word(1, param); + dir = get_word(1, param); dirp = opendir(dir); if (!dirp) { return NULL; @@ -1537,7 +1533,7 @@ builtin_version(char *param) D_PARSE(("builtin_version(%s) called\n", param)); } - return (StrDup(VERSION)); + return (STRDUP(VERSION)); } static char * @@ -1548,7 +1544,7 @@ builtin_appname(char *param) D_PARSE(("builtin_appname(%s) called\n", param)); } - return (StrDup(APL_NAME "-" VERSION)); + return (STRDUP(APL_NAME "-" VERSION)); } /* chomp() removes leading and trailing whitespace/quotes from a string */ @@ -1677,7 +1673,7 @@ shell_expand(char *s) } *(--tmp1) = 0; if (l) { - print_error("parse error in file %s, line %lu: Mismatched parentheses", + print_error("parse error in file %s, line %lu: Mismatched parentheses\n", file_peek_path(), file_peek_line()); return ((char *) NULL); } @@ -1731,7 +1727,7 @@ shell_expand(char *s) new[j] = *pbuff; } #else - print_warning("Backquote execution support not compiled in, ignoring"); + print_warning("Backquote execution support not compiled in, ignoring\n"); new[j] = *pbuff; #endif break; @@ -1820,51 +1816,51 @@ parse_color(char *buff, void *state) return NULL; } if (!BEG_STRCASECMP(buff, "foreground ")) { - RESET_AND_ASSIGN(rs_color[fgColor], Word(2, buff)); + RESET_AND_ASSIGN(rs_color[fgColor], get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "background ")) { - RESET_AND_ASSIGN(rs_color[bgColor], Word(2, buff)); + RESET_AND_ASSIGN(rs_color[bgColor], get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "cursor ")) { #ifndef NO_CURSORCOLOR - RESET_AND_ASSIGN(rs_color[cursorColor], Word(2, buff)); + RESET_AND_ASSIGN(rs_color[cursorColor], get_word(2, buff)); #else - print_warning("Support for the cursor attribute was not compiled in, ignoring"); + print_warning("Support for the cursor attribute was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(buff, "cursor_text ")) { #ifndef NO_CURSORCOLOR - RESET_AND_ASSIGN(rs_color[cursorColor2], Word(2, buff)); + RESET_AND_ASSIGN(rs_color[cursorColor2], get_word(2, buff)); #else - print_warning("Support for the cursor_text attribute was not compiled in, ignoring"); + print_warning("Support for the cursor_text attribute was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(buff, "menu ")) { - RESET_AND_ASSIGN(rs_color[menuColor], Word(2, buff)); + RESET_AND_ASSIGN(rs_color[menuColor], get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "menu_text ")) { - RESET_AND_ASSIGN(rs_color[menuTextColor], Word(2, buff)); + RESET_AND_ASSIGN(rs_color[menuTextColor], get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "scrollbar ")) { - RESET_AND_ASSIGN(rs_color[scrollColor], Word(2, buff)); + RESET_AND_ASSIGN(rs_color[scrollColor], get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "unfocused_menu ")) { - RESET_AND_ASSIGN(rs_color[unfocusedMenuColor], Word(2, buff)); + RESET_AND_ASSIGN(rs_color[unfocusedMenuColor], get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "unfocused_scrollbar ")) { - RESET_AND_ASSIGN(rs_color[unfocusedScrollColor], Word(2, buff)); + RESET_AND_ASSIGN(rs_color[unfocusedScrollColor], get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "pointer ")) { - RESET_AND_ASSIGN(rs_color[pointerColor], Word(2, buff)); + RESET_AND_ASSIGN(rs_color[pointerColor], get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "video ")) { - char *tmp = PWord(2, buff); + char *tmp = get_pword(2, buff); if (!BEG_STRCASECMP(tmp, "reverse")) { Options |= Opt_reverseVideo; } else if (BEG_STRCASECMP(tmp, "normal")) { - print_error("Parse error in file %s, line %lu: Invalid value \"%s\" for attribute video", + print_error("Parse error in file %s, line %lu: Invalid value \"%s\" for attribute video\n", file_peek_path(), file_peek_line(), tmp); } } else if (!BEG_STRCASECMP(buff, "color ")) { @@ -1872,14 +1868,14 @@ parse_color(char *buff, void *state) char *tmp = 0, *r1, *g1, *b1; unsigned int n, r, g, b, index = 0; - n = NumWords(buff); + n = num_words(buff); if (n < 3) { - print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for " + print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for \n" "attribute color", file_peek_path(), file_peek_line(), NONULL(tmp)); return NULL; } - tmp = PWord(2, buff); - r1 = PWord(3, buff); + tmp = get_pword(2, buff); + r1 = get_pword(3, buff); if (!isdigit(*r1)) { if (isdigit(*tmp)) { n = strtoul(tmp, (char **) NULL, 0); @@ -1888,38 +1884,38 @@ parse_color(char *buff, void *state) } else if (n >= 8 && n <= 15) { index = minBright + n - 8; } - RESET_AND_ASSIGN(rs_color[index], Word(1, r1)); + RESET_AND_ASSIGN(rs_color[index], get_word(1, r1)); return NULL; } else { if (!BEG_STRCASECMP(tmp, "bd ")) { #ifndef NO_BOLDUNDERLINE - RESET_AND_ASSIGN(rs_color[colorBD], Word(1, r1)); + RESET_AND_ASSIGN(rs_color[colorBD], get_word(1, r1)); #else - print_warning("Support for the color bd attribute was not compiled in, ignoring"); + print_warning("Support for the color bd attribute was not compiled in, ignoring\n"); #endif return NULL; } else if (!BEG_STRCASECMP(tmp, "ul ")) { #ifndef NO_BOLDUNDERLINE - RESET_AND_ASSIGN(rs_color[colorUL], Word(1, r1)); + RESET_AND_ASSIGN(rs_color[colorUL], get_word(1, r1)); #else - print_warning("Support for the color ul attribute was not compiled in, ignoring"); + print_warning("Support for the color ul attribute was not compiled in, ignoring\n"); #endif return NULL; } else { - tmp = Word(1, tmp); - print_error("Parse error in file %s, line %lu: Invalid color index \"%s\"", + tmp = get_word(1, tmp); + print_error("Parse error in file %s, line %lu: Invalid color index \"%s\"\n", file_peek_path(), file_peek_line(), NONULL(tmp)); FREE(tmp); } } } if (n != 5) { - print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for " + print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for \n" "attribute color", file_peek_path(), file_peek_line(), NONULL(tmp)); return NULL; } - g1 = PWord(4, buff); - b1 = PWord(5, buff); + g1 = get_pword(4, buff); + b1 = get_pword(5, buff); if (isdigit(*tmp)) { n = strtoul(tmp, (char **) NULL, 0); r = strtoul(r1, (char **) NULL, 0); @@ -1934,7 +1930,7 @@ parse_color(char *buff, void *state) RESET_AND_ASSIGN(rs_color[index], MALLOC(14)); sprintf(rs_color[index], "#%02x%02x%02x", r, g, b); } else { - print_error("Parse error in file %s, line %lu: Invalid color index %lu", + print_error("Parse error in file %s, line %lu: Invalid color index %lu\n", file_peek_path(), file_peek_line(), n); } @@ -1946,7 +1942,7 @@ parse_color(char *buff, void *state) b = strtoul(b1, (char **) NULL, 0); sprintf(rs_color[colorBD], "#%02x%02x%02x", r, g, b); #else - print_warning("Support for the color bd attribute was not compiled in, ignoring"); + print_warning("Support for the color bd attribute was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(tmp, "ul ")) { @@ -1957,17 +1953,17 @@ parse_color(char *buff, void *state) b = strtoul(b1, (char **) NULL, 0); sprintf(rs_color[colorUL], "#%02x%02x%02x", r, g, b); #else - print_warning("Support for the color ul attribute was not compiled in, ignoring"); + print_warning("Support for the color ul attribute was not compiled in, ignoring\n"); #endif } else { - tmp = Word(1, tmp); - print_error("Parse error in file %s, line %lu: Invalid color index \"%s\"", + tmp = get_word(1, tmp); + print_error("Parse error in file %s, line %lu: Invalid color index \"%s\"\n", file_peek_path(), file_peek_line(), NONULL(tmp)); FREE(tmp); } } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid " + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid \n" "within context color", file_peek_path(), file_peek_line(), buff); } return state; @@ -1980,67 +1976,67 @@ parse_attributes(char *buff, void *state) return NULL; } if (!BEG_STRCASECMP(buff, "geometry ")) { - RESET_AND_ASSIGN(rs_geometry, Word(2, buff)); + RESET_AND_ASSIGN(rs_geometry, get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "title ")) { - RESET_AND_ASSIGN(rs_title, Word(2, buff)); + RESET_AND_ASSIGN(rs_title, get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "name ")) { - RESET_AND_ASSIGN(rs_name, Word(2, buff)); + RESET_AND_ASSIGN(rs_name, get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "iconname ")) { - RESET_AND_ASSIGN(rs_iconName, Word(2, buff)); + RESET_AND_ASSIGN(rs_iconName, get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "desktop ")) { rs_desktop = (int) strtol(buff, (char **) NULL, 0); } else if (!BEG_STRCASECMP(buff, "scrollbar_type ")) { - RESET_AND_ASSIGN(rs_scrollbar_type, Word(2, buff)); + RESET_AND_ASSIGN(rs_scrollbar_type, get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "scrollbar_width ")) { - rs_scrollbar_width = strtoul(PWord(2, buff), (char **) NULL, 0); + rs_scrollbar_width = strtoul(get_pword(2, buff), (char **) NULL, 0); } else if (!BEG_STRCASECMP(buff, "font ")) { - char *tmp = PWord(2, buff); + char *tmp = get_pword(2, buff); unsigned char n; if (!BEG_STRCASECMP(tmp, "fx ") || !BEG_STRCASECMP(tmp, "effect")) { - if (parse_font_fx(PWord(2, tmp)) != 1) { - print_error("Parse error in file %s, line %lu: Syntax error in font effects specification", + if (parse_font_fx(get_pword(2, tmp)) != 1) { + print_error("Parse error in file %s, line %lu: Syntax error in font effects specification\n", file_peek_path(), file_peek_line()); } - } else if (NumWords(buff) != 3) { - print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for " + } else if (num_words(buff) != 3) { + print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for \n" "attribute font", file_peek_path(), file_peek_line(), NONULL(tmp)); return NULL; } else if (isdigit(*tmp)) { n = (unsigned char) strtoul(tmp, (char **) NULL, 0); if (n <= 255) { - eterm_font_add(&etfonts, PWord(2, tmp), n); + eterm_font_add(&etfonts, get_pword(2, tmp), n); } else { - print_error("Parse error in file %s, line %lu: Invalid font index %d", + print_error("Parse error in file %s, line %lu: Invalid font index %d\n", file_peek_path(), file_peek_line(), n); } } else if (!BEG_STRCASECMP(tmp, "bold ")) { #ifndef NO_BOLDFONT - RESET_AND_ASSIGN(rs_boldFont, Word(2, tmp)); + RESET_AND_ASSIGN(rs_boldFont, get_word(2, tmp)); #else - print_warning("Support for the bold font attribute was not compiled in, ignoring"); + print_warning("Support for the bold font attribute was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(tmp, "default ")) { - def_font_idx = strtoul(PWord(2, tmp), (char **) NULL, 0); + def_font_idx = strtoul(get_pword(2, tmp), (char **) NULL, 0); } else { - tmp = Word(1, tmp); - print_error("Parse error in file %s, line %lu: Invalid font index \"%s\"", + tmp = get_word(1, tmp); + print_error("Parse error in file %s, line %lu: Invalid font index \"%s\"\n", file_peek_path(), file_peek_line(), NONULL(tmp)); FREE(tmp); } } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid " + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid \n" "within context attributes", file_peek_path(), file_peek_line(), (buff ? buff : "")); } return state; @@ -2055,8 +2051,8 @@ parse_toggles(char *buff, void *state) if ((*buff == CONF_BEGIN_CHAR) || (*buff == CONF_END_CHAR)) { return NULL; } - if (!(tmp = PWord(2, buff))) { - print_error("Parse error in file %s, line %lu: Missing boolean value in context toggles", file_peek_path(), file_peek_line()); + if (!(tmp = get_pword(2, buff))) { + print_error("Parse error in file %s, line %lu: Missing boolean value in context toggles\n", file_peek_path(), file_peek_line()); return NULL; } if (BOOL_OPT_ISTRUE(tmp)) { @@ -2064,7 +2060,7 @@ parse_toggles(char *buff, void *state) } else if (BOOL_OPT_ISFALSE(tmp)) { bool_val = 0; } else { - print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" in context toggles", + print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" in context toggles\n", file_peek_path(), file_peek_line(), tmp); return NULL; } @@ -2077,7 +2073,7 @@ parse_toggles(char *buff, void *state) Options &= ~(Opt_mapAlert); } #else - print_warning("Support for the map_alert attribute was not compiled in, ignoring"); + print_warning("Support for the map_alert attribute was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(buff, "visual_bell ")) { @@ -2107,7 +2103,7 @@ parse_toggles(char *buff, void *state) Options &= ~(Opt_utmpLogging); } #else - print_warning("Support for the utmp_logging attribute was not compiled in, ignoring"); + print_warning("Support for the utmp_logging attribute was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(buff, "meta8 ")) { @@ -2118,7 +2114,7 @@ parse_toggles(char *buff, void *state) Options &= ~(Opt_meta8); } #else - print_warning("Support for the meta8 attribute was not compiled in, ignoring"); + print_warning("Support for the meta8 attribute was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(buff, "iconic ")) { @@ -2238,7 +2234,7 @@ parse_toggles(char *buff, void *state) } } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context toggles", file_peek_path(), file_peek_line(), buff); + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context toggles\n", file_peek_path(), file_peek_line(), buff); } return state; } @@ -2251,18 +2247,18 @@ parse_keyboard(char *buff, void *state) } if (!BEG_STRCASECMP(buff, "smallfont_key ")) { #if defined (HOTKEY_CTRL) || defined (HOTKEY_META) - RESET_AND_ASSIGN(rs_smallfont_key, Word(2, buff)); + RESET_AND_ASSIGN(rs_smallfont_key, get_word(2, buff)); to_keysym(&ks_smallfont, rs_smallfont_key); #else - print_warning("Support for the smallfont_key attribute was not compiled in, ignoring"); + print_warning("Support for the smallfont_key attribute was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(buff, "bigfont_key ")) { #if defined (HOTKEY_CTRL) || defined (HOTKEY_META) - RESET_AND_ASSIGN(rs_bigfont_key, Word(2, buff)); + RESET_AND_ASSIGN(rs_bigfont_key, get_word(2, buff)); to_keysym(&ks_bigfont, rs_bigfont_key); #else - print_warning("Support for the bigfont_key attribute was not compiled in, ignoring"); + print_warning("Support for the bigfont_key attribute was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(buff, "keysym ")) { @@ -2277,11 +2273,11 @@ parse_keyboard(char *buff, void *state) if (sym >= 0xff00) sym -= 0xff00; if (sym < 0 || sym > 0xff) { - print_error("Parse error in file %s, line %lu: Keysym 0x%x out of range 0xff00-0xffff", + print_error("Parse error in file %s, line %lu: Keysym 0x%x out of range 0xff00-0xffff\n", file_peek_path(), file_peek_line(), sym + 0xff00); return NULL; } - s = Word(3, buff); + s = get_word(3, buff); str = (char *) MALLOC(strlen(s) + 2); strcpy(str, s); FREE(s); @@ -2299,34 +2295,34 @@ parse_keyboard(char *buff, void *state) } } #else - print_warning("Support for the keysym attributes was not compiled in, ignoring"); + print_warning("Support for the keysym attributes was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(buff, "meta_mod ")) { - char *tmp = PWord(2, buff); + char *tmp = get_pword(2, buff); if (!tmp) { - print_error("Parse error in file %s, line %lu: Missing modifier value for attribute meta_mod", + print_error("Parse error in file %s, line %lu: Missing modifier value for attribute meta_mod\n", file_peek_path(), file_peek_line()); return NULL; } rs_meta_mod = (unsigned int) strtoul(tmp, (char **) NULL, 0); } else if (!BEG_STRCASECMP(buff, "alt_mod ")) { - char *tmp = PWord(2, buff); + char *tmp = get_pword(2, buff); if (!tmp) { - print_error("Parse error in file %s, line %lu: Missing modifier value for attribute alt_mod", + print_error("Parse error in file %s, line %lu: Missing modifier value for attribute alt_mod\n", file_peek_path(), file_peek_line()); return NULL; } rs_alt_mod = (unsigned int) strtoul(tmp, (char **) NULL, 0); } else if (!BEG_STRCASECMP(buff, "numlock_mod ")) { - char *tmp = PWord(2, buff); + char *tmp = get_pword(2, buff); if (!tmp) { - print_error("Parse error in file %s, line %lu: Missing modifier value for attribute numlock_mod", + print_error("Parse error in file %s, line %lu: Missing modifier value for attribute numlock_mod\n", file_peek_path(), file_peek_line()); return NULL; } @@ -2335,40 +2331,40 @@ parse_keyboard(char *buff, void *state) } else if (!BEG_STRCASECMP(buff, "greek ")) { #ifdef GREEK_SUPPORT - char *tmp = PWord(2, buff); + char *tmp = get_pword(2, buff); if (!tmp) { - print_error("Parse error in file %s, line %lu: Missing boolean value for attribute greek", + print_error("Parse error in file %s, line %lu: Missing boolean value for attribute greek\n", file_peek_path(), file_peek_line()); return NULL; } if (BOOL_OPT_ISTRUE(tmp)) { - RESET_AND_ASSIGN(rs_greek_keyboard, Word(3, buff)); + RESET_AND_ASSIGN(rs_greek_keyboard, get_word(3, buff)); if (BEG_STRCASECMP(rs_greek_keyboard, "iso")) { greek_setmode(GREEK_ELOT928); } else if (BEG_STRCASECMP(rs_greek_keyboard, "ibm")) { greek_setmode(GREEK_IBM437); } else { - print_error("Parse error in file %s, line %lu: Invalid greek keyboard mode \"%s\"", + print_error("Parse error in file %s, line %lu: Invalid greek keyboard mode \"%s\"\n", file_peek_path(), file_peek_line(), (rs_greek_keyboard ? rs_greek_keyboard : "")); } } else if (BOOL_OPT_ISFALSE(tmp)) { /* This space intentionally left no longer blank =^) */ } else { - print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" for attribute %s", + print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" for attribute %s\n", file_peek_path(), file_peek_line(), tmp, buff); return NULL; } #else - print_warning("Support for the greek attribute was not compiled in, ignoring"); + print_warning("Support for the greek attribute was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(buff, "app_keypad ")) { - char *tmp = PWord(2, buff); + char *tmp = get_pword(2, buff); if (!tmp) { - print_error("Parse error in file %s, line %lu: Missing boolean value for attribute app_keypad", + print_error("Parse error in file %s, line %lu: Missing boolean value for attribute app_keypad\n", file_peek_path(), file_peek_line()); return NULL; } @@ -2377,17 +2373,17 @@ parse_keyboard(char *buff, void *state) } else if (BOOL_OPT_ISFALSE(tmp)) { PrivateModes &= ~(PrivMode_aplKP); } else { - print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" for " + print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" for \n" "attribute app_keypad", file_peek_path(), file_peek_line(), tmp); return NULL; } } else if (!BEG_STRCASECMP(buff, "app_cursor ")) { - char *tmp = PWord(2, buff); + char *tmp = get_pword(2, buff); if (!tmp) { - print_error("Parse error in file %s, line %lu: Missing boolean value for attribute app_cursor", + print_error("Parse error in file %s, line %lu: Missing boolean value for attribute app_cursor\n", file_peek_path(), file_peek_line()); return NULL; } @@ -2396,13 +2392,13 @@ parse_keyboard(char *buff, void *state) } else if (BOOL_OPT_ISFALSE(tmp)) { PrivateModes &= ~(PrivMode_aplCUR); } else { - print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" for " + print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" for \n" "attribute app_cursor", file_peek_path(), file_peek_line(), tmp); return NULL; } } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid " + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid \n" "within context keyboard", file_peek_path(), file_peek_line(), buff); } return state; @@ -2416,62 +2412,62 @@ parse_misc(char *buff, void *state) } if (!BEG_STRCASECMP(buff, "print_pipe ")) { #ifdef PRINTPIPE - RESET_AND_ASSIGN(rs_print_pipe, StrDup(PWord(2, buff))); + RESET_AND_ASSIGN(rs_print_pipe, STRDUP(get_pword(2, buff))); chomp(rs_print_pipe); #else - print_warning("Support for the print_pipe attribute was not compiled in, ignoring"); + print_warning("Support for the print_pipe attribute was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(buff, "save_lines ")) { - rs_saveLines = strtol(PWord(2, buff), (char **) NULL, 0); + rs_saveLines = strtol(get_pword(2, buff), (char **) NULL, 0); } else if (!BEG_STRCASECMP(buff, "min_anchor_size ")) { - rs_min_anchor_size = strtol(PWord(2, buff), (char **) NULL, 0); + rs_min_anchor_size = strtol(get_pword(2, buff), (char **) NULL, 0); } else if (!BEG_STRCASECMP(buff, "border_width ")) { #ifdef BORDER_WIDTH_OPTION - TermWin.internalBorder = (short) strtol(PWord(2, buff), (char **) NULL, 0); + TermWin.internalBorder = (short) strtol(get_pword(2, buff), (char **) NULL, 0); #else - print_warning("Support for the border_width attribute was not compiled in, ignoring"); + print_warning("Support for the border_width attribute was not compiled in, ignoring\n"); #endif } else if (!BEG_STRCASECMP(buff, "line_space ")) { - rs_line_space = strtol(PWord(2, buff), (char **) NULL, 0); + rs_line_space = strtol(get_pword(2, buff), (char **) NULL, 0); } else if (!BEG_STRCASECMP(buff, "finished_title ")) { - RESET_AND_ASSIGN(rs_finished_title, Word(2, buff)); + RESET_AND_ASSIGN(rs_finished_title, get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "finished_text ")) { - RESET_AND_ASSIGN(rs_finished_text, Word(2, buff)); + RESET_AND_ASSIGN(rs_finished_text, get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "term_name ")) { - RESET_AND_ASSIGN(rs_term_name, Word(2, buff)); + RESET_AND_ASSIGN(rs_term_name, get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "debug ")) { - debug_level = (unsigned int) strtoul(PWord(2, buff), (char **) NULL, 0); + DEBUG_LEVEL = (unsigned int) strtoul(get_pword(2, buff), (char **) NULL, 0); } else if (!BEG_STRCASECMP(buff, "exec ")) { register unsigned short k, n; - RESET_AND_ASSIGN(rs_execArgs, (char **) MALLOC(sizeof(char *) * ((n = NumWords(PWord(2, buff))) + 1))); + RESET_AND_ASSIGN(rs_execArgs, (char **) MALLOC(sizeof(char *) * ((n = num_words(get_pword(2, buff))) + 1))); for (k = 0; k < n; k++) { - rs_execArgs[k] = Word(k + 2, buff); + rs_execArgs[k] = get_word(k + 2, buff); D_OPTIONS(("rs_execArgs[%d] == %s\n", k, rs_execArgs[k])); } rs_execArgs[n] = (char *) NULL; } else if (!BEG_STRCASECMP(buff, "cut_chars ")) { #ifdef CUTCHAR_OPTION - RESET_AND_ASSIGN(rs_cutchars, Word(2, buff)); + RESET_AND_ASSIGN(rs_cutchars, get_word(2, buff)); chomp(rs_cutchars); #else - print_warning("Support for the cut_chars attribute was not compiled in, ignoring"); + print_warning("Support for the cut_chars attribute was not compiled in, ignoring\n"); #endif } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid " + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid \n" "within context misc", file_peek_path(), file_peek_line(), buff); } return state; @@ -2486,36 +2482,36 @@ parse_imageclasses(char *buff, void *state) if (!BEG_STRCASECMP(buff, "icon ")) { #ifdef PIXMAP_SUPPORT - RESET_AND_ASSIGN(rs_icon, Word(2, buff)); + RESET_AND_ASSIGN(rs_icon, get_word(2, buff)); #else - print_warning("Pixmap support was not compiled in, ignoring \"icon\" attribute"); + print_warning("Pixmap support was not compiled in, ignoring \"icon\" attribute\n"); #endif } else if (!BEG_STRCASECMP(buff, "cache")) { #ifdef PIXMAP_SUPPORT - rs_cache_size = strtoul(PWord(2, buff), (char **) NULL, 0); + rs_cache_size = strtoul(get_pword(2, buff), (char **) NULL, 0); #else - print_warning("Pixmap support was not compiled in, ignoring \"cache\" attribute"); + print_warning("Pixmap support was not compiled in, ignoring \"cache\" attribute\n"); #endif } else if (!BEG_STRCASECMP(buff, "path ")) { - RESET_AND_ASSIGN(rs_path, Word(2, buff)); + RESET_AND_ASSIGN(rs_path, get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "anim ")) { #ifdef BACKGROUND_CYCLING_SUPPORT - char *tmp = PWord(2, buff); + char *tmp = get_pword(2, buff); if (tmp) { - rs_anim_pixmap_list = StrDup(tmp); + rs_anim_pixmap_list = STRDUP(tmp); } else { - print_error("Parse error in file %s, line %lu: Invalid parameter list \"\" for attribute anim", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Invalid parameter list \"\" for attribute anim\n", file_peek_path(), file_peek_line()); } #else - print_warning("Support for the anim attribute was not compiled in, ignoring"); + print_warning("Support for the anim attribute was not compiled in, ignoring\n"); #endif } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid " + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid \n" "within context imageclasses", file_peek_path(), file_peek_line(), buff); } return state; @@ -2530,6 +2526,7 @@ parse_image(char *buff, void *state) int *tmp; tmp = (int *) MALLOC(sizeof(int)); + *tmp = -1; return ((void *) tmp); } ASSERT_RVAL(state != NULL, (void *)(file_skip_to_end(), NULL)); @@ -2542,10 +2539,10 @@ parse_image(char *buff, void *state) } idx = *((int *) state); if (!BEG_STRCASECMP(buff, "type ")) { - char *type = PWord(2, buff); + char *type = get_pword(2, buff); if (!type) { - print_error("Parse error in file %s, line %lu: Missing image type", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Missing image type\n", file_peek_path(), file_peek_line()); return NULL; } if (!strcasecmp(type, "background")) { @@ -2579,21 +2576,21 @@ parse_image(char *buff, void *state) } else if (!strcasecmp(type, "dialog_box")) { idx = image_dialog; } else { - print_error("Parse error in file %s, line %lu: Invalid image type \"%s\"", file_peek_path(), file_peek_line(), type); + print_error("Parse error in file %s, line %lu: Invalid image type \"%s\"\n", file_peek_path(), file_peek_line(), type); return NULL; } *((int *) state) = idx; } else if (!BEG_STRCASECMP(buff, "mode ")) { - char *mode = PWord(2, buff); - char *allow_list = PWord(4, buff); + char *mode = get_pword(2, buff); + char *allow_list = get_pword(4, buff); - if (idx < 0) { - print_error("Parse error in file %s, line %lu: Encountered \"mode\" with no image type defined", file_peek_path(), file_peek_line()); + if (!CHECK_VALID_INDEX(idx)) { + print_error("Parse error in file %s, line %lu: Encountered \"mode\" with no image type defined\n", file_peek_path(), file_peek_line()); return NULL; } if (!mode) { - print_error("Parse error in file %s, line %lu: Missing parameters for mode line", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Missing parameters for mode line\n", file_peek_path(), file_peek_line()); return NULL; } if (!BEG_STRCASECMP(mode, "image")) { @@ -2607,7 +2604,7 @@ parse_image(char *buff, void *state) } else if (!BEG_STRCASECMP(mode, "solid")) { images[idx].mode = MODE_SOLID; } else { - print_error("Parse error in file %s, line %lu: Invalid mode \"%s\"", file_peek_path(), file_peek_line(), mode); + print_error("Parse error in file %s, line %lu: Invalid mode \"%s\"\n", file_peek_path(), file_peek_line(), mode); } if (allow_list) { char *allow; @@ -2623,19 +2620,19 @@ parse_image(char *buff, void *state) images[idx].mode |= ALLOW_AUTO; } else if (!BEG_STRCASECMP("solid", allow)) { } else { - print_error("Parse error in file %s, line %lu: Invalid mode \"%s\"", file_peek_path(), file_peek_line(), allow); + print_error("Parse error in file %s, line %lu: Invalid mode \"%s\"\n", file_peek_path(), file_peek_line(), allow); } } } } else if (!BEG_STRCASECMP(buff, "state ")) { - char *state = PWord(2, buff), new = 0; + char *state = get_pword(2, buff), new = 0; if (!state) { - print_error("Parse error in file %s, line %lu: Missing state", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Missing state\n", file_peek_path(), file_peek_line()); return NULL; } - if (idx < 0) { - print_error("Parse error in file %s, line %lu: Encountered \"state\" with no image type defined", file_peek_path(), file_peek_line()); + if (!CHECK_VALID_INDEX(idx)) { + print_error("Parse error in file %s, line %lu: Encountered \"state\" with no image type defined\n", file_peek_path(), file_peek_line()); return NULL; } if (!strcasecmp(state, "normal")) { @@ -2663,7 +2660,7 @@ parse_image(char *buff, void *state) } images[idx].current = images[idx].disabled; } else { - print_error("Parse error in file %s, line %lu: Invalid state \"%s\"", file_peek_path(), file_peek_line(), state); + print_error("Parse error in file %s, line %lu: Invalid state \"%s\"\n", file_peek_path(), file_peek_line(), state); return NULL; } if (new) { @@ -2674,18 +2671,18 @@ parse_image(char *buff, void *state) MEMSET(images[idx].current->iml, 0, sizeof(imlib_t)); } } else if (!BEG_STRCASECMP(buff, "color ")) { - char *fg = Word(2, buff), *bg = Word(3, buff); + char *fg = get_word(2, buff), *bg = get_word(3, buff); - if (idx < 0) { - print_error("Parse error in file %s, line %lu: Encountered \"color\" with no image type defined", file_peek_path(), file_peek_line()); + if (!CHECK_VALID_INDEX(idx)) { + print_error("Parse error in file %s, line %lu: Encountered \"color\" with no image type defined\n", file_peek_path(), file_peek_line()); return NULL; } if (images[idx].current == NULL) { - print_error("Parse error in file %s, line %lu: Encountered \"color\" with no image state defined", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Encountered \"color\" with no image state defined\n", file_peek_path(), file_peek_line()); return NULL; } if (!fg || !bg) { - print_error("Parse error in file %s, line %lu: Foreground and background colors must be specified with \"color\"", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Foreground and background colors must be specified with \"color\"\n", file_peek_path(), file_peek_line()); return NULL; } if (!BEG_STRCASECMP(fg, "0x")) { @@ -2703,66 +2700,66 @@ parse_image(char *buff, void *state) #ifdef PIXMAP_SUPPORT } else if (!BEG_STRCASECMP(buff, "file ")) { - char *filename = PWord(2, buff); + char *filename = get_pword(2, buff); - if (idx < 0) { - print_error("Parse error in file %s, line %lu: Encountered \"file\" with no image type defined", file_peek_path(), file_peek_line()); + if (!CHECK_VALID_INDEX(idx)) { + print_error("Parse error in file %s, line %lu: Encountered \"file\" with no image type defined\n", file_peek_path(), file_peek_line()); return NULL; } if (images[idx].current == NULL) { - print_error("Parse error in file %s, line %lu: Encountered \"file\" with no image state defined", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Encountered \"file\" with no image state defined\n", file_peek_path(), file_peek_line()); return NULL; } if (!filename) { - print_error("Parse error in file %s, line %lu: Missing filename", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Missing filename\n", file_peek_path(), file_peek_line()); return NULL; } if (!load_image(filename, images[idx].current)) { - print_error("Unable to locate image \"%s\" in the image path.", NONULL(filename)); + print_error("Unable to locate image \"%s\" in the image path.\n", NONULL(filename)); images[idx].mode &= ~(MODE_IMAGE | ALLOW_IMAGE); D_PIXMAP(("New image mode is 0x%02x, iml->im is 0x%08x\n", images[idx].mode, images[idx].current->iml->im)); } } else if (!BEG_STRCASECMP(buff, "geom ")) { - char *geom = PWord(2, buff); + char *geom = get_pword(2, buff); - if (idx < 0) { - print_error("Parse error in file %s, line %lu: Encountered \"geom\" with no image type defined", file_peek_path(), file_peek_line()); + if (!CHECK_VALID_INDEX(idx)) { + print_error("Parse error in file %s, line %lu: Encountered \"geom\" with no image type defined\n", file_peek_path(), file_peek_line()); return NULL; } if (images[idx].current == NULL) { - print_error("Parse error in file %s, line %lu: Encountered \"geom\" with no image state defined", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Encountered \"geom\" with no image state defined\n", file_peek_path(), file_peek_line()); return NULL; } if (!geom) { - print_error("Parse error in file %s, line %lu: Missing geometry string", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Missing geometry string\n", file_peek_path(), file_peek_line()); return NULL; } set_pixmap_scale(geom, images[idx].current->pmap); } else if (!BEG_STRCASECMP(buff, "cmod ") || !BEG_STRCASECMP(buff, "colormod ")) { - char *color = PWord(2, buff); - char *mods = PWord(3, buff); + char *color = get_pword(2, buff); + char *mods = get_pword(3, buff); unsigned char n; imlib_t *iml = images[idx].current->iml; - if (idx < 0) { - print_error("Parse error in file %s, line %lu: Encountered color modifier with no image type defined", file_peek_path(), file_peek_line()); + if (!CHECK_VALID_INDEX(idx)) { + print_error("Parse error in file %s, line %lu: Encountered color modifier with no image type defined\n", file_peek_path(), file_peek_line()); return NULL; } if (images[idx].current == NULL) { - print_error("Parse error in file %s, line %lu: Encountered color modifier with no image state defined", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Encountered color modifier with no image state defined\n", file_peek_path(), file_peek_line()); return NULL; } if (!color) { - print_error("Parse error in file %s, line %lu: Missing color name", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Missing color name\n", file_peek_path(), file_peek_line()); return NULL; } if (!mods) { - print_error("Parse error in file %s, line %lu: Missing modifier(s)", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Missing modifier(s)\n", file_peek_path(), file_peek_line()); return NULL; } - n = NumWords(mods); + n = num_words(mods); if (!BEG_STRCASECMP(color, "image ")) { if (iml->mod) { @@ -2771,10 +2768,10 @@ parse_image(char *buff, void *state) iml->mod = create_colormod(); iml->mod->brightness = (int) strtol(mods, (char **) NULL, 0); if (n > 1) { - iml->mod->contrast = (int) strtol(PWord(2, mods), (char **) NULL, 0); + iml->mod->contrast = (int) strtol(get_pword(2, mods), (char **) NULL, 0); } if (n > 2) { - iml->mod->gamma = (int) strtol(PWord(3, mods), (char **) NULL, 0); + iml->mod->gamma = (int) strtol(get_pword(3, mods), (char **) NULL, 0); } update_cmod(iml->mod); } else if (!BEG_STRCASECMP(color, "red ")) { @@ -2784,10 +2781,10 @@ parse_image(char *buff, void *state) iml->rmod = create_colormod(); iml->rmod->brightness = (int) strtol(mods, (char **) NULL, 0); if (n > 1) { - iml->rmod->contrast = (int) strtol(PWord(2, mods), (char **) NULL, 0); + iml->rmod->contrast = (int) strtol(get_pword(2, mods), (char **) NULL, 0); } if (n > 2) { - iml->rmod->gamma = (int) strtol(PWord(3, mods), (char **) NULL, 0); + iml->rmod->gamma = (int) strtol(get_pword(3, mods), (char **) NULL, 0); } update_cmod(iml->rmod); } else if (!BEG_STRCASECMP(color, "green ")) { @@ -2797,10 +2794,10 @@ parse_image(char *buff, void *state) iml->gmod = create_colormod(); iml->gmod->brightness = (int) strtol(mods, (char **) NULL, 0); if (n > 1) { - iml->gmod->contrast = (int) strtol(PWord(2, mods), (char **) NULL, 0); + iml->gmod->contrast = (int) strtol(get_pword(2, mods), (char **) NULL, 0); } if (n > 2) { - iml->gmod->gamma = (int) strtol(PWord(3, mods), (char **) NULL, 0); + iml->gmod->gamma = (int) strtol(get_pword(3, mods), (char **) NULL, 0); } update_cmod(iml->gmod); } else if (!BEG_STRCASECMP(color, "blue ")) { @@ -2810,33 +2807,33 @@ parse_image(char *buff, void *state) iml->bmod = create_colormod(); iml->bmod->brightness = (int) strtol(mods, (char **) NULL, 0); if (n > 1) { - iml->bmod->contrast = (int) strtol(PWord(2, mods), (char **) NULL, 0); + iml->bmod->contrast = (int) strtol(get_pword(2, mods), (char **) NULL, 0); } if (n > 2) { - iml->bmod->gamma = (int) strtol(PWord(3, mods), (char **) NULL, 0); + iml->bmod->gamma = (int) strtol(get_pword(3, mods), (char **) NULL, 0); } update_cmod(iml->bmod); } else { - print_error("Parse error in file %s, line %lu: Color must be either \"image\", \"red\", \"green\", or \"blue\"", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Color must be either \"image\", \"red\", \"green\", or \"blue\"\n", file_peek_path(), file_peek_line()); return NULL; } #endif } else if (!BEG_STRCASECMP(buff, "border ")) { - if (idx < 0) { - print_error("Parse error in file %s, line %lu: Encountered \"border\" with no image type defined", file_peek_path(), file_peek_line()); + if (!CHECK_VALID_INDEX(idx)) { + print_error("Parse error in file %s, line %lu: Encountered \"border\" with no image type defined\n", file_peek_path(), file_peek_line()); return NULL; } - if (NumWords(buff + 7) < 4) { - print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"border\"", file_peek_path(), file_peek_line()); + if (num_words(buff + 7) < 4) { + print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"border\"\n", file_peek_path(), file_peek_line()); return NULL; } RESET_AND_ASSIGN(images[idx].current->iml->border, (Imlib_Border *) MALLOC(sizeof(Imlib_Border))); - images[idx].current->iml->border->left = (unsigned short) strtoul(PWord(2, buff), (char **) NULL, 0); - images[idx].current->iml->border->right = (unsigned short) strtoul(PWord(3, buff), (char **) NULL, 0); - images[idx].current->iml->border->top = (unsigned short) strtoul(PWord(4, buff), (char **) NULL, 0); - images[idx].current->iml->border->bottom = (unsigned short) strtoul(PWord(5, buff), (char **) NULL, 0); + images[idx].current->iml->border->left = (unsigned short) strtoul(get_pword(2, buff), (char **) NULL, 0); + images[idx].current->iml->border->right = (unsigned short) strtoul(get_pword(3, buff), (char **) NULL, 0); + images[idx].current->iml->border->top = (unsigned short) strtoul(get_pword(4, buff), (char **) NULL, 0); + images[idx].current->iml->border->bottom = (unsigned short) strtoul(get_pword(5, buff), (char **) NULL, 0); if ((images[idx].current->iml->border->left == 0) && (images[idx].current->iml->border->right == 0) && (images[idx].current->iml->border->top == 0) && (images[idx].current->iml->border->bottom == 0)) { @@ -2844,16 +2841,16 @@ parse_image(char *buff, void *state) images[idx].current->iml->border = (Imlib_Border *) NULL; /* No sense in wasting CPU time and memory if there are no borders */ } } else if (!BEG_STRCASECMP(buff, "bevel ")) { - if (idx < 0) { - print_error("Parse error in file %s, line %lu: Encountered \"bevel\" with no image type defined", file_peek_path(), file_peek_line()); + if (!CHECK_VALID_INDEX(idx)) { + print_error("Parse error in file %s, line %lu: Encountered \"bevel\" with no image type defined\n", file_peek_path(), file_peek_line()); return NULL; } if (images[idx].current == NULL) { - print_error("Parse error in file %s, line %lu: Encountered \"bevel\" with no image state defined", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Encountered \"bevel\" with no image state defined\n", file_peek_path(), file_peek_line()); return NULL; } - if (NumWords(buff + 6) < 5) { - print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"bevel\"", file_peek_path(), file_peek_line()); + if (num_words(buff + 6) < 5) { + print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"bevel\"\n", file_peek_path(), file_peek_line()); return NULL; } if (images[idx].current->iml->bevel != NULL) { @@ -2863,15 +2860,15 @@ parse_image(char *buff, void *state) images[idx].current->iml->bevel = (bevel_t *) MALLOC(sizeof(bevel_t)); images[idx].current->iml->bevel->edges = (Imlib_Border *) MALLOC(sizeof(Imlib_Border)); - if (!BEG_STRCASECMP(PWord(2, buff), "down")) { + if (!BEG_STRCASECMP(get_pword(2, buff), "down")) { images[idx].current->iml->bevel->up = 0; } else { images[idx].current->iml->bevel->up = 1; } - images[idx].current->iml->bevel->edges->left = (unsigned short) strtoul(PWord(3, buff), (char **) NULL, 0); - images[idx].current->iml->bevel->edges->right = (unsigned short) strtoul(PWord(4, buff), (char **) NULL, 0); - images[idx].current->iml->bevel->edges->top = (unsigned short) strtoul(PWord(5, buff), (char **) NULL, 0); - images[idx].current->iml->bevel->edges->bottom = (unsigned short) strtoul(PWord(6, buff), (char **) NULL, 0); + images[idx].current->iml->bevel->edges->left = (unsigned short) strtoul(get_pword(3, buff), (char **) NULL, 0); + images[idx].current->iml->bevel->edges->right = (unsigned short) strtoul(get_pword(4, buff), (char **) NULL, 0); + images[idx].current->iml->bevel->edges->top = (unsigned short) strtoul(get_pword(5, buff), (char **) NULL, 0); + images[idx].current->iml->bevel->edges->bottom = (unsigned short) strtoul(get_pword(6, buff), (char **) NULL, 0); if ((images[idx].current->iml->bevel->edges->left == 0) && (images[idx].current->iml->bevel->edges->right == 0) && (images[idx].current->iml->bevel->edges->top == 0) && (images[idx].current->iml->bevel->edges->bottom == 0)) { @@ -2881,24 +2878,24 @@ parse_image(char *buff, void *state) images[idx].current->iml->bevel = (bevel_t *) NULL; } } else if (!BEG_STRCASECMP(buff, "padding ")) { - if (idx < 0) { - print_error("Parse error in file %s, line %lu: Encountered \"padding\" with no image type defined", file_peek_path(), file_peek_line()); + if (!CHECK_VALID_INDEX(idx)) { + print_error("Parse error in file %s, line %lu: Encountered \"padding\" with no image type defined\n", file_peek_path(), file_peek_line()); return NULL; } if (images[idx].current == NULL) { - print_error("Parse error in file %s, line %lu: Encountered \"padding\" with no image state defined", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Encountered \"padding\" with no image state defined\n", file_peek_path(), file_peek_line()); return NULL; } - if (NumWords(buff + 8) < 4) { - print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"padding\"", file_peek_path(), file_peek_line()); + if (num_words(buff + 8) < 4) { + print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"padding\"\n", file_peek_path(), file_peek_line()); return NULL; } RESET_AND_ASSIGN(images[idx].current->iml->pad, (Imlib_Border *) MALLOC(sizeof(Imlib_Border))); - images[idx].current->iml->pad->left = (unsigned short) strtoul(PWord(2, buff), (char **) NULL, 0); - images[idx].current->iml->pad->right = (unsigned short) strtoul(PWord(3, buff), (char **) NULL, 0); - images[idx].current->iml->pad->top = (unsigned short) strtoul(PWord(4, buff), (char **) NULL, 0); - images[idx].current->iml->pad->bottom = (unsigned short) strtoul(PWord(5, buff), (char **) NULL, 0); + images[idx].current->iml->pad->left = (unsigned short) strtoul(get_pword(2, buff), (char **) NULL, 0); + images[idx].current->iml->pad->right = (unsigned short) strtoul(get_pword(3, buff), (char **) NULL, 0); + images[idx].current->iml->pad->top = (unsigned short) strtoul(get_pword(4, buff), (char **) NULL, 0); + images[idx].current->iml->pad->bottom = (unsigned short) strtoul(get_pword(5, buff), (char **) NULL, 0); if ((images[idx].current->iml->pad->left == 0) && (images[idx].current->iml->pad->right == 0) && (images[idx].current->iml->pad->top == 0) && (images[idx].current->iml->pad->bottom == 0)) { @@ -2906,7 +2903,7 @@ parse_image(char *buff, void *state) images[idx].current->iml->pad = (Imlib_Border *) NULL; } } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid " + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid \n" "within context image", file_peek_path(), file_peek_line(), buff); } return ((void *) state); @@ -2926,7 +2923,7 @@ parse_actions(char *buff, void *state) } if (!BEG_STRCASECMP(buff, "bind ")) { - for (i = 2; (str = Word(i, buff)) && strcasecmp(str, "to"); i++) { + for (i = 2; (str = get_word(i, buff)) && strcasecmp(str, "to"); i++) { if (!BEG_STRCASECMP(str, "anymod")) { mod = MOD_ANY; } else if (!BEG_STRCASECMP(str, "ctrl")) { @@ -2959,38 +2956,38 @@ parse_actions(char *buff, void *state) FREE(str); } if (!str) { - print_error("Parse error in file %s, line %lu: Syntax error (\"to\" not found)", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Syntax error (\"to\" not found)\n", file_peek_path(), file_peek_line()); return NULL; } FREE(str); if ((button == BUTTON_NONE) && (keysym == 0)) { - print_error("Parse error in file %s, line %lu: No valid button/keysym found for action", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: No valid button/keysym found for action\n", file_peek_path(), file_peek_line()); return NULL; } i++; - str = PWord(i, buff); + str = get_pword(i, buff); if (!BEG_STRCASECMP(str, "string")) { - str = Word(i+1, buff); + str = get_word(i+1, buff); action_add(mod, button, keysym, ACTION_STRING, (void *) str); FREE(str); } else if (!BEG_STRCASECMP(str, "echo")) { - str = Word(i+1, buff); + str = get_word(i+1, buff); action_add(mod, button, keysym, ACTION_ECHO, (void *) str); FREE(str); } else if (!BEG_STRCASECMP(str, "menu")) { menu_t *menu; - str = Word(i+1, buff); + str = get_word(i+1, buff); menu = find_menu_by_title(menu_list, str); action_add(mod, button, keysym, ACTION_MENU, (void *) menu); FREE(str); } else { - print_error("Parse error in file %s, line %lu: Syntax error (\"to\" not found)", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Syntax error (\"to\" not found)\n", file_peek_path(), file_peek_line()); return NULL; } } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid " + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid \n" "within context action", file_peek_path(), file_peek_line(), buff); } return state; @@ -3002,7 +2999,7 @@ parse_menu(char *buff, void *state) menu_t *menu; if (*buff == CONF_BEGIN_CHAR) { - char *title = PWord(2, buff + 6); + char *title = get_pword(2, buff + 6); menu = menu_create(title); return ((void *) menu); @@ -3015,22 +3012,22 @@ parse_menu(char *buff, void *state) sprintf(tmp, "Eterm_Menu_%u", menu_list->nummenus); menu_set_title(menu, tmp); - print_error("Parse error in file %s, line %lu: Menu context ended without giving a title. Defaulted to \"%s\".", file_peek_path(), file_peek_line(), tmp); + print_error("Parse error in file %s, line %lu: Menu context ended without giving a title. Defaulted to \"%s\".\n", file_peek_path(), file_peek_line(), tmp); } menu_list = menulist_add_menu(menu_list, menu); return NULL; } if (!BEG_STRCASECMP(buff, "title ")) { - char *title = Word(2, buff); + char *title = get_word(2, buff); menu_set_title(menu, title); FREE(title); } else if (!BEG_STRCASECMP(buff, "font ")) { - char *name = Word(2, buff); + char *name = get_word(2, buff); if (!name) { - print_error("Parse error in file %s, line %lu: Missing font name.", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Missing font name.\n", file_peek_path(), file_peek_line()); return ((void *) menu); } menu_set_font(menu, name); @@ -3044,7 +3041,7 @@ parse_menu(char *buff, void *state) menuitem_set_action(item, MENUITEM_SEP, (char *) NULL); } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context menu", file_peek_path(), file_peek_line(), buff); + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context menu\n", file_peek_path(), file_peek_line(), buff); } return ((void *) menu); } @@ -3065,7 +3062,7 @@ parse_menuitem(char *buff, void *state) ASSERT_RVAL(menu != NULL, state); if (*buff == CONF_END_CHAR) { if (!(curitem->text)) { - print_error("Parse error in file %s, line %lu: Menuitem context ended with no text given. Discarding this entry.", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Menuitem context ended with no text given. Discarding this entry.\n", file_peek_path(), file_peek_line()); FREE(curitem); } else { menu_add_item(menu, curitem); @@ -3073,20 +3070,20 @@ parse_menuitem(char *buff, void *state) return ((void *) menu); } if (!BEG_STRCASECMP(buff, "text ")) { - char *text = Word(2, buff); + char *text = get_word(2, buff); if (!text) { - print_error("Parse error in file %s, line %lu: Missing menuitem text.", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Missing menuitem text.\n", file_peek_path(), file_peek_line()); return ((void *) curitem); } menuitem_set_text(curitem, text); FREE(text); } else if (!BEG_STRCASECMP(buff, "rtext ")) { - char *rtext = Word(2, buff); + char *rtext = get_word(2, buff); if (!rtext) { - print_error("Parse error in file %s, line %lu: Missing menuitem right-justified text.", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Missing menuitem right-justified text.\n", file_peek_path(), file_peek_line()); return ((void *) curitem); } menuitem_set_rtext(curitem, rtext); @@ -3095,8 +3092,8 @@ parse_menuitem(char *buff, void *state) } else if (!BEG_STRCASECMP(buff, "icon ")) { } else if (!BEG_STRCASECMP(buff, "action ")) { - char *type = PWord(2, buff); - char *action = Word(3, buff); + char *type = get_pword(2, buff); + char *action = get_word(3, buff); if (!BEG_STRCASECMP(type, "submenu ")) { menuitem_set_action(curitem, MENUITEM_SUBMENU, action); @@ -3111,12 +3108,12 @@ parse_menuitem(char *buff, void *state) menuitem_set_action(curitem, MENUITEM_SEP, action); } else { - print_error("Parse error in file %s, line %lu: Invalid menu item action \"%s\"", file_peek_path(), file_peek_line(), NONULL(type)); + print_error("Parse error in file %s, line %lu: Invalid menu item action \"%s\"\n", file_peek_path(), file_peek_line(), NONULL(type)); } FREE(action); } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context menu", file_peek_path(), file_peek_line(), buff); + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context menu\n", file_peek_path(), file_peek_line(), buff); } return ((void *) curitem); } @@ -3137,16 +3134,16 @@ parse_bbar(char *buff, void *state) return NULL; } if (!BEG_STRCASECMP(buff, "font ")) { - char *font = Word(2, buff); + char *font = get_word(2, buff); bbar_set_font(bbar, font); FREE(font); } else if (!BEG_STRCASECMP(buff, "dock ")) { - char *where = PWord(2, buff); + char *where = get_pword(2, buff); if (!where) { - print_error("Parse error in file %s, line %lu: Attribute dock requires a parameter", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Attribute dock requires a parameter\n", file_peek_path(), file_peek_line()); } else if (!BEG_STRCASECMP(where, "top")) { bbar_set_docked(bbar, BBAR_DOCKED_TOP); } else if (!BEG_STRCASECMP(where, "bot")) { /* "bot" or "bottom" */ @@ -3154,33 +3151,33 @@ parse_bbar(char *buff, void *state) } else if (!BEG_STRCASECMP(where, "no")) { /* "no" or "none" */ bbar_set_docked(bbar, BBAR_UNDOCKED); } else { - print_error("Parse error in file %s, line %lu: Invalid parameter \"%s\" to attribute dock", file_peek_path(), file_peek_line(), where); + print_error("Parse error in file %s, line %lu: Invalid parameter \"%s\" to attribute dock\n", file_peek_path(), file_peek_line(), where); } } else if (!BEG_STRCASECMP(buff, "visible ")) { - char *tmp = PWord(2, buff); + char *tmp = get_pword(2, buff); if (BOOL_OPT_ISTRUE(tmp)) { bbar_set_visible(bbar, 1); } else if (BOOL_OPT_ISFALSE(tmp)) { bbar_set_visible(bbar, 0); } else { - print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" in context button_bar", file_peek_path(), file_peek_line(), tmp); + print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" in context button_bar\n", file_peek_path(), file_peek_line(), tmp); } } else if (!BEG_STRCASECMP(buff, "button ") || !BEG_STRCASECMP(buff, "rbutton ")) { - char *text = PWord(2, buff); - char *icon = StrCaseStr(buff, "icon "); - char *action = StrCaseStr(buff, "action "); + char *text = get_pword(2, buff); + char *icon = strcasestr(buff, "icon "); + char *action = strcasestr(buff, "action "); button_t *button; if (text == icon) { text = NULL; } else { - text = Word(1, text); + text = get_word(1, text); } if (!text && !icon) { - print_error("Parse error in file %s, line %lu: Missing button specifications", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Missing button specifications\n", file_peek_path(), file_peek_line()); return ((void *) bbar); } @@ -3188,7 +3185,7 @@ parse_bbar(char *buff, void *state) if (icon) { simage_t *simg; - icon = Word(2, icon); + icon = get_word(2, icon); simg = create_simage(); if (load_image(icon, simg)) { button_set_icon(button, simg); @@ -3198,9 +3195,9 @@ parse_bbar(char *buff, void *state) FREE(icon); } if (action) { - char *type = PWord(2, action); + char *type = get_pword(2, action); - action = Word(2, type); + action = get_word(2, type); if (!BEG_STRCASECMP(type, "menu ")) { button_set_action(button, ACTION_MENU, action); } else if (!BEG_STRCASECMP(type, "string ")) { @@ -3208,14 +3205,14 @@ parse_bbar(char *buff, void *state) } else if (!BEG_STRCASECMP(type, "echo ")) { button_set_action(button, ACTION_ECHO, action); } else { - print_error("Parse error in file %s, line %lu: Invalid button action \"%s\"", file_peek_path(), file_peek_line(), type); + print_error("Parse error in file %s, line %lu: Invalid button action \"%s\"\n", file_peek_path(), file_peek_line(), type); FREE(action); FREE(button); return ((void *) bbar); } FREE(action); } else { - print_error("Parse error in file %s, line %lu: Missing button action", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: Missing button action\n", file_peek_path(), file_peek_line()); FREE(button); return ((void *) bbar); } @@ -3225,7 +3222,7 @@ parse_bbar(char *buff, void *state) bbar_add_button(bbar, button); } } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid " + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid \n" "within context menu", file_peek_path(), file_peek_line(), buff); } return ((void *) bbar); @@ -3239,15 +3236,15 @@ parse_xim(char *buff, void *state) return NULL; } if (!BEG_STRCASECMP(buff, "input_method ")) { - RESET_AND_ASSIGN(rs_input_method, Word(2, buff)); + RESET_AND_ASSIGN(rs_input_method, get_word(2, buff)); } else if (!BEG_STRCASECMP(buff, "preedit_type ")) { - RESET_AND_ASSIGN(rs_preedit_type, Word(2, buff)); + RESET_AND_ASSIGN(rs_preedit_type, get_word(2, buff)); } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context xim", + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context xim\n", file_peek_path(), file_peek_line(), buff); } #else - print_warning("XIM support was not compiled in, ignoring entire context"); + print_warning("XIM support was not compiled in, ignoring entire context\n"); file_poke_skip(1); #endif return state; @@ -3262,50 +3259,50 @@ parse_multichar(char *buff, void *state) return NULL; } if (!BEG_STRCASECMP(buff, "encoding ")) { - RESET_AND_ASSIGN(rs_multichar_encoding, Word(2, buff)); + RESET_AND_ASSIGN(rs_multichar_encoding, get_word(2, buff)); if (rs_multichar_encoding != NULL) { if (BEG_STRCASECMP(rs_multichar_encoding, "eucj") && BEG_STRCASECMP(rs_multichar_encoding, "sjis") && BEG_STRCASECMP(rs_multichar_encoding, "euckr")) { - print_error("Parse error in file %s, line %lu: Invalid multichar encoding mode \"%s\"", + print_error("Parse error in file %s, line %lu: Invalid multichar encoding mode \"%s\"\n", file_peek_path(), file_peek_line(), rs_multichar_encoding); return NULL; } set_multichar_encoding(rs_multichar_encoding); } else { - print_error("Parse error in file %s, line %lu: Invalid parameter list \"\" for attribute encoding", + print_error("Parse error in file %s, line %lu: Invalid parameter list \"\" for attribute encoding\n", file_peek_path(), file_peek_line()); } } else if (!BEG_STRCASECMP(buff, "font ")) { - char *tmp = PWord(2, buff); + char *tmp = get_pword(2, buff); unsigned char n; - if (NumWords(buff) != 3) { - print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for " + if (num_words(buff) != 3) { + print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for \n" "attribute font", file_peek_path(), file_peek_line(), NONULL(tmp)); return NULL; } if (isdigit(*tmp)) { n = (unsigned char) strtoul(tmp, (char **) NULL, 0); if (n <= 255) { - eterm_font_add(&etmfonts, PWord(2, tmp), n); + eterm_font_add(&etmfonts, get_pword(2, tmp), n); } else { - print_error("Parse error in file %s, line %lu: Invalid font index %d", + print_error("Parse error in file %s, line %lu: Invalid font index %d\n", file_peek_path(), file_peek_line(), n); } } else { - tmp = Word(1, tmp); - print_error("Parse error in file %s, line %lu: Invalid font index \"%s\"", + tmp = get_word(1, tmp); + print_error("Parse error in file %s, line %lu: Invalid font index \"%s\"\n", file_peek_path(), file_peek_line(), NONULL(tmp)); FREE(tmp); } } else { - print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context multichar", + print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context multichar\n", file_peek_path(), file_peek_line(), buff); } #else - print_warning("Multichar support was not compiled in, ignoring entire context"); + print_warning("Multichar support was not compiled in, ignoring entire context\n"); file_poke_skip(1); #endif return state; @@ -3405,7 +3402,7 @@ open_config_file(char *name) *end_ptr = 0; } if ((ver = BEG_STRCASECMP(begin_ptr, VERSION)) > 0) { - print_warning("Config file is designed for a newer version of " PACKAGE); + print_warning("Config file is designed for a newer version of \n" PACKAGE); } } } @@ -3448,7 +3445,7 @@ conf_parse(char *conf_name, const char *dir, const char *path) { for (; fgets(buff, CONFIG_BUFF, file_peek_fp());) { file_inc_line(); if (!strchr(buff, '\n')) { - print_error("Parse error in file %s, line %lu: line too long", file_peek_path(), file_peek_line()); + print_error("Parse error in file %s, line %lu: line too long\n", file_peek_path(), file_peek_line()); for (; fgets(buff, CONFIG_BUFF, file_peek_fp()) && !strrchr(buff, '\n');); continue; } @@ -3462,19 +3459,19 @@ conf_parse(char *conf_name, const char *dir, const char *path) { break; case '%': D_OPTIONS(("read_config(): Parsing line #%lu of file %s\n", file_peek_line(), file_peek_path())); - if (!BEG_STRCASECMP(PWord(1, buff + 1), "include ")) { + if (!BEG_STRCASECMP(get_pword(1, buff + 1), "include ")) { char *path; FILE *fp; shell_expand(buff); - path = Word(2, buff + 1); + path = get_word(2, buff + 1); if ((fp = open_config_file(path)) == NULL) { - print_error("Error in file %s, line %lu: Unable to locate %%included config file %s (%s), continuing", file_peek_path(), file_peek_line(), + print_error("Error in file %s, line %lu: Unable to locate %%included config file %s (%s), continuing\n", file_peek_path(), file_peek_line(), path, strerror(errno)); } else { file_push(fp, path, NULL, 1, 0); } - } else if (!BEG_STRCASECMP(PWord(1, buff + 1), "preproc ")) { + } else if (!BEG_STRCASECMP(get_pword(1, buff + 1), "preproc ")) { char cmd[PATH_MAX]; FILE *fp; @@ -3482,7 +3479,7 @@ conf_parse(char *conf_name, const char *dir, const char *path) { continue; } outfile = tmpnam(NULL); - snprintf(cmd, PATH_MAX, "%s < %s > %s", PWord(2, buff), file_peek_path(), outfile); + snprintf(cmd, PATH_MAX, "%s < %s > %s", get_pword(2, buff), file_peek_path(), outfile); system(cmd); fp = fopen(outfile, "rt"); if (fp != NULL) { @@ -3505,7 +3502,7 @@ conf_parse(char *conf_name, const char *dir, const char *path) { continue; } if (!BEG_STRCASECMP(buff, "begin ")) { - name = PWord(2, buff); + name = get_pword(2, buff); ctx_name_to_id(id, name, i); ctx_push(id); *buff = CONF_BEGIN_CHAR; @@ -3552,7 +3549,7 @@ conf_parse(char *conf_name, const char *dir, const char *path) { chdir(orig_dir); } D_OPTIONS(("Returning \"%s\"\n", p)); - return (StrDup(p)); + return (STRDUP(p)); } char * @@ -3579,7 +3576,7 @@ conf_parse_theme(char **theme, char *conf_name, unsigned char fallback) } } if (fallback & PARSE_TRY_DEFAULT_THEME) { - RESET_AND_ASSIGN(*theme, StrDup(PACKAGE)); + RESET_AND_ASSIGN(*theme, STRDUP(PACKAGE)); if ((ret = conf_parse(conf_name, *theme, path)) != NULL) { return ret; } @@ -3599,7 +3596,7 @@ parse_null(char *buff, void *state) { } else if (*buff == CONF_END_CHAR) { return (NULL); } else { - print_error("Parse error in file %s, line %lu: Not allowed in \"null\" context: \"%s\"", file_peek_path(), file_peek_line(), buff); + print_error("Parse error in file %s, line %lu: Not allowed in \"null\" context: \"%s\"\n", file_peek_path(), file_peek_line(), buff); return (state); } } @@ -3610,13 +3607,13 @@ init_defaults(void) { unsigned char i; -#if DEBUG >= DEBUG_MALLOC - if (debug_level >= DEBUG_MALLOC) { +#if DEBUG >= DEBUG_MEM + if (DEBUG_LEVEL >= DEBUG_MEM) { memrec_init(); } #endif - rs_name = StrDup(APL_NAME " " VERSION); + rs_name = STRDUP(APL_NAME " " VERSION); Options = (Opt_scrollbar | Opt_select_trailing_spaces); Xdisplay = NULL; rs_term_name = NULL; @@ -3647,7 +3644,7 @@ init_defaults(void) #endif } #ifdef MULTI_CHARSET - rs_multichar_encoding = StrDup(MULTICHAR_ENCODING); + rs_multichar_encoding = STRDUP(MULTICHAR_ENCODING); #endif TermWin.internalBorder = DEFAULT_BORDER_WIDTH; } @@ -3664,22 +3661,22 @@ post_parse(void) #ifdef XTERM_SCROLLBAR scrollbar_set_type(SCROLLBAR_XTERM); #else - print_error("Support for xterm scrollbars was not compiled in. Sorry."); + print_error("Support for xterm scrollbars was not compiled in. Sorry.\n"); #endif } else if (!strcasecmp(rs_scrollbar_type, "next")) { #ifdef NEXT_SCROLLBAR scrollbar_set_type(SCROLLBAR_NEXT); #else - print_error("Support for NeXT scrollbars was not compiled in. Sorry."); + print_error("Support for NeXT scrollbars was not compiled in. Sorry.\n"); #endif } else if (!strcasecmp(rs_scrollbar_type, "motif")) { #ifdef MOTIF_SCROLLBAR scrollbar_set_type(SCROLLBAR_MOTIF); #else - print_error("Support for motif scrollbars was not compiled in. Sorry."); + print_error("Support for motif scrollbars was not compiled in. Sorry.\n"); #endif } else { - print_error("Unrecognized scrollbar type \"%s\".", rs_scrollbar_type); + print_error("Unrecognized scrollbar type \"%s\".\n", rs_scrollbar_type); } } if (rs_scrollbar_width) { @@ -3700,11 +3697,11 @@ post_parse(void) #ifdef PRINTPIPE if (!rs_print_pipe) - rs_print_pipe = StrDup(PRINTPIPE); + rs_print_pipe = STRDUP(PRINTPIPE); #endif #ifdef CUTCHAR_OPTION if (!rs_cutchars) - rs_cutchars = StrDup(CUTCHARS); + rs_cutchars = STRDUP(CUTCHARS); #endif #ifndef NO_BOLDFONT @@ -3737,7 +3734,7 @@ post_parse(void) } if (rs_font_effects) { if (parse_font_fx(rs_font_effects) != 1) { - print_error("Syntax error in the font effects specified on the command line."); + print_error("Syntax error in the font effects specified on the command line.\n"); } RESET_AND_ASSIGN(rs_font_effects, NULL); } @@ -3774,7 +3771,7 @@ post_parse(void) if (rs_pixmaps[i]) { reset_simage(images[i].norm, RESET_ALL_SIMG); load_image(rs_pixmaps[i], images[i].norm); - FREE(rs_pixmaps[i]); /* These are created by StrDup() */ + FREE(rs_pixmaps[i]); /* These are created by STRDUP() */ } #else /* Right now, solid mode is the only thing we can do without pixmap support. */ @@ -3892,7 +3889,7 @@ post_parse(void) char buff[10]; sprintf(buff, "0x%03x", ((100 - rs_shade) << 8) / 100); - rs_cmod_image = StrDup(buff); + rs_cmod_image = STRDUP(buff); } if (rs_tint) { char buff[10]; @@ -3908,23 +3905,23 @@ post_parse(void) r = (t & 0xff0000) >> 16; if (r != 0xff) { sprintf(buff, "0x%03lx", r); - rs_cmod_red = StrDup(buff); + rs_cmod_red = STRDUP(buff); } g = (t & 0xff00) >> 8; if (g != 0xff) { sprintf(buff, "0x%03lx", g); - rs_cmod_green = StrDup(buff); + rs_cmod_green = STRDUP(buff); } b = t & 0xff; if (b != 0xff) { sprintf(buff, "0x%03lx", b); - rs_cmod_blue = StrDup(buff); + rs_cmod_blue = STRDUP(buff); } } FREE(rs_tint); } if (rs_cmod_image) { - unsigned char n = NumWords(rs_cmod_image); + unsigned char n = num_words(rs_cmod_image); imlib_t *iml = images[image_bg].norm->iml; if (iml->mod) { @@ -3933,15 +3930,15 @@ post_parse(void) iml->mod = create_colormod(); iml->mod->brightness = (int) strtol(rs_cmod_image, (char **) NULL, 0); if (n > 1) { - iml->mod->contrast = (int) strtol(PWord(2, rs_cmod_image), (char **) NULL, 0); + iml->mod->contrast = (int) strtol(get_pword(2, rs_cmod_image), (char **) NULL, 0); } if (n > 2) { - iml->mod->gamma = (int) strtol(PWord(3, rs_cmod_image), (char **) NULL, 0); + iml->mod->gamma = (int) strtol(get_pword(3, rs_cmod_image), (char **) NULL, 0); } FREE(rs_cmod_image); } if (rs_cmod_red) { - unsigned char n = NumWords(rs_cmod_red); + unsigned char n = num_words(rs_cmod_red); imlib_t *iml = images[image_bg].norm->iml; if (iml->rmod) { @@ -3950,15 +3947,15 @@ post_parse(void) iml->rmod = create_colormod(); iml->rmod->brightness = (int) strtol(rs_cmod_red, (char **) NULL, 0); if (n > 1) { - iml->rmod->contrast = (int) strtol(PWord(2, rs_cmod_red), (char **) NULL, 0); + iml->rmod->contrast = (int) strtol(get_pword(2, rs_cmod_red), (char **) NULL, 0); } if (n > 2) { - iml->rmod->gamma = (int) strtol(PWord(3, rs_cmod_red), (char **) NULL, 0); + iml->rmod->gamma = (int) strtol(get_pword(3, rs_cmod_red), (char **) NULL, 0); } FREE(rs_cmod_red); } if (rs_cmod_green) { - unsigned char n = NumWords(rs_cmod_green); + unsigned char n = num_words(rs_cmod_green); imlib_t *iml = images[image_bg].norm->iml; if (iml->gmod) { @@ -3967,15 +3964,15 @@ post_parse(void) iml->gmod = create_colormod(); iml->gmod->brightness = (int) strtol(rs_cmod_green, (char **) NULL, 0); if (n > 1) { - iml->gmod->contrast = (int) strtol(PWord(2, rs_cmod_green), (char **) NULL, 0); + iml->gmod->contrast = (int) strtol(get_pword(2, rs_cmod_green), (char **) NULL, 0); } if (n > 2) { - iml->gmod->gamma = (int) strtol(PWord(3, rs_cmod_green), (char **) NULL, 0); + iml->gmod->gamma = (int) strtol(get_pword(3, rs_cmod_green), (char **) NULL, 0); } FREE(rs_cmod_green); } if (rs_cmod_blue) { - unsigned char n = NumWords(rs_cmod_blue); + unsigned char n = num_words(rs_cmod_blue); imlib_t *iml = images[image_bg].norm->iml; if (iml->bmod) { @@ -3984,10 +3981,10 @@ post_parse(void) iml->bmod = create_colormod(); iml->bmod->brightness = (int) strtol(rs_cmod_blue, (char **) NULL, 0); if (n > 1) { - iml->bmod->contrast = (int) strtol(PWord(2, rs_cmod_blue), (char **) NULL, 0); + iml->bmod->contrast = (int) strtol(get_pword(2, rs_cmod_blue), (char **) NULL, 0); } if (n > 2) { - iml->bmod->gamma = (int) strtol(PWord(3, rs_cmod_blue), (char **) NULL, 0); + iml->bmod->gamma = (int) strtol(get_pword(3, rs_cmod_blue), (char **) NULL, 0); } FREE(rs_cmod_blue); } @@ -4032,28 +4029,28 @@ post_parse(void) char *w1, *h1, *temp; unsigned long w, h; - count = NumWords(rs_anim_pixmap_list) - 1; /* -1 for the delay */ + count = num_words(rs_anim_pixmap_list) - 1; /* -1 for the delay */ rs_anim_pixmaps = (char **) MALLOC(sizeof(char *) * (count + 1)); for (i = 0; i < count; i++) { - temp = Word(i + 2, rs_anim_pixmap_list); /* +2 rather than +1 to account for the delay */ + temp = get_word(i + 2, rs_anim_pixmap_list); /* +2 rather than +1 to account for the delay */ if (temp == NULL) break; - if (NumWords(temp) != 3) { - if (NumWords(temp) == 1) { + if (num_words(temp) != 3) { + if (num_words(temp) == 1) { rs_anim_pixmaps[i] = temp; } } else { - w1 = PWord(1, temp); - h1 = PWord(2, temp); + w1 = get_pword(1, temp); + h1 = get_pword(2, temp); w = strtol(w1, (char **) NULL, 0); h = strtol(h1, (char **) NULL, 0); if (w || h) { - rs_anim_pixmaps[i] = Word(3, temp); + rs_anim_pixmaps[i] = get_word(3, temp); rs_anim_pixmaps[i] = (char *) REALLOC(rs_anim_pixmaps[i], strlen(rs_anim_pixmaps[i]) + 9); strcat(rs_anim_pixmaps[i], "@100x100"); } else { - rs_anim_pixmaps[i] = Word(3, temp); + rs_anim_pixmaps[i] = get_word(3, temp); rs_anim_pixmaps[i] = (char *) REALLOC(rs_anim_pixmaps[i], strlen(rs_anim_pixmaps[i]) + 5); strcat(rs_anim_pixmaps[i], "@0x0"); } @@ -4078,14 +4075,14 @@ post_parse(void) struct stat fst; if (lstat(rs_pipe_name, &fst) != 0) { - print_error("Unable to stat console pipe \"%s\" -- %s", rs_pipe_name, strerror(errno)); + print_error("Unable to stat console pipe \"%s\" -- %s\n", rs_pipe_name, strerror(errno)); } else { if (S_ISREG(fst.st_mode) || S_ISDIR(fst.st_mode)) { - print_error("Directories and regular files are not valid console pipes. Sorry."); + print_error("Directories and regular files are not valid console pipes. Sorry.\n"); } else { pipe_fd = open(rs_pipe_name, O_RDONLY | O_NDELAY | O_NOCTTY); if (pipe_fd < 0) { - print_error("Unable to open console pipe -- %s", strerror(errno)); + print_error("Unable to open console pipe -- %s\n", strerror(errno)); } } } @@ -4129,7 +4126,7 @@ save_config(char *path, unsigned char save_theme) *(--tmp) = '/'; } if (!mkdirhier(path) || (stat(path, &fst) && !CAN_WRITE(fst))) { - print_error("I couldn't write to \"%s\" or \"%s\". I give up.", (theme_dir ? theme_dir : PKGDATADIR "/themes/Eterm"), path); + print_error("I couldn't write to \"%s\" or \"%s\". I give up.", (theme_dir ? theme_dir : PKGDATADIR "/themes/Eterm\n"), path); return errno; } } @@ -4158,7 +4155,7 @@ save_config(char *path, unsigned char save_theme) *(--tmp) = '/'; } if (!mkdirhier(path) || (stat(path, &fst) && !CAN_WRITE(fst))) { - print_error("I couldn't write to \"%s\" or \"%s\". I give up.", (user_dir ? user_dir : PKGDATADIR "/themes/Eterm"), path); + print_error("I couldn't write to \"%s\" or \"%s\". I give up.", (user_dir ? user_dir : PKGDATADIR "/themes/Eterm\n"), path); return errno; } } @@ -4725,7 +4722,7 @@ save_config(char *path, unsigned char save_theme) fprintf(fp, " min_anchor_size %d\n", rs_min_anchor_size); fprintf(fp, " border_width %d\n", TermWin.internalBorder); fprintf(fp, " term_name %s\n", getenv("TERM")); - fprintf(fp, " debug %d\n", debug_level); + fprintf(fp, " debug %d\n", DEBUG_LEVEL); if (save_theme && rs_execArgs) { fprintf(fp, " exec "); for (i = 0; rs_execArgs[i]; i++) { diff --git a/src/options.h b/src/options.h index 6f0aa67..067144f 100644 --- a/src/options.h +++ b/src/options.h @@ -102,10 +102,10 @@ #define BAD_THRESHOLD 3 #define CHECK_BAD() do { \ if (++bad_opts >= BAD_THRESHOLD) { \ - print_error("Error threshold exceeded, giving up."); \ + print_error("Error threshold exceeded, giving up.\n"); \ usage(); \ } else { \ - print_error("Attempting to continue, but strange things may happen."); \ + print_error("Attempting to continue, but strange things may happen.\n"); \ } \ } while(0) @@ -157,9 +157,10 @@ #define file_inc_line() (fstate[fstate_idx].line++) -#define to_keysym(p,s) do { KeySym sym; \ - if (s && ((sym = XStringToKeysym(s)) != 0)) *p = sym; \ - } while (0) +#define to_keysym(p,s) do { KeySym sym; \ + if (s && ((sym = XStringToKeysym(s)) != 0)) *p = sym; \ + } while (0) +#define CHECK_VALID_INDEX(i) (((i) >= image_bg) && ((i) < image_max)) #define RESET_AND_ASSIGN(var, val) do {if ((var) != NULL) FREE(var); (var) = (val);} while (0) @@ -251,7 +252,7 @@ extern KeySym ks_smallfont; /************ Function Prototypes ************/ _XFUNCPROTOBEGIN -unsigned long NumWords(const char *str); +unsigned long num_words(const char *str); extern void get_initial_options(int, char **); extern void get_options(int, char **); extern void conf_init_subsystem(void); diff --git a/src/pixmap.c b/src/pixmap.c index 611599d..9317321 100644 --- a/src/pixmap.c +++ b/src/pixmap.c @@ -38,9 +38,6 @@ static const char cvs_ident[] = "$Id$"; # include #endif -#include "../libmej/debug.h" -#include "../libmej/mem.h" -#include "../libmej/strings.h" #include "draw.h" #include "e.h" #include "icon.h" @@ -591,7 +588,7 @@ create_viewport_pixmap(simage_t *simg, Drawable d, int x, int y, unsigned short imlib_render_pixmaps_for_whole_image(&viewport_pixmap, &mask); } if (viewport_pixmap == None) { - print_error("Delayed image load failure for \"%s\". Using solid color mode.", imlib_image_get_filename()); + print_error("Delayed image load failure for \"%s\". Using solid color mode.\n", imlib_image_get_filename()); image_set_mode(image_bg, MODE_SOLID); reset_simage(simg, RESET_ALL_SIMG); return None; @@ -667,7 +664,7 @@ paste_simage(simage_t *simg, unsigned char which, Drawable d, unsigned short x, FREE(reply); } else { pmap = (Pixmap) strtoul(reply, (char **) NULL, 0); - mask = (Pixmap) strtoul(PWord(2, reply), (char **) NULL, 0); + mask = (Pixmap) strtoul(get_pword(2, reply), (char **) NULL, 0); FREE(reply); enl_ipc_sync(); if (pmap) { @@ -729,7 +726,7 @@ paste_simage(simage_t *simg, unsigned char which, Drawable d, unsigned short x, imlib_render_pixmaps_for_whole_image_at_size(&pmap, &mask, w, h); } if (pmap == None) { - print_error("Delayed image load failure for \"%s\".", NONULL(imlib_image_get_filename())); + print_error("Delayed image load failure for \"%s\".\n", NONULL(imlib_image_get_filename())); reset_simage(simg, RESET_ALL_SIMG); return; } @@ -892,7 +889,7 @@ render_simage(simage_t * simg, Window win, unsigned short width, unsigned short Pixmap pmap, mask; pmap = (Pixmap) strtoul(reply, (char **) NULL, 0); - mask = (Pixmap) strtoul(PWord(2, reply), (char **) NULL, 0); + mask = (Pixmap) strtoul(get_pword(2, reply), (char **) NULL, 0); FREE(reply); enl_ipc_sync(); if (pmap) { @@ -1073,7 +1070,7 @@ render_simage(simage_t * simg, Window win, unsigned short width, unsigned short XSetWindowBackgroundPixmap(Xdisplay, win, simg->pmap->pixmap); } } else { - print_error("Delayed image load failure for \"%s\". Using solid color mode.", imlib_image_get_filename()); + print_error("Delayed image load failure for \"%s\". Using solid color mode.\n", imlib_image_get_filename()); image_set_mode(which, MODE_SOLID); reset_simage(simg, RESET_ALL_SIMG); } @@ -1253,7 +1250,7 @@ load_image(const char *file, simage_t *simg) if (f != NULL) { im = imlib_load_image_immediately(f); if (im == NULL) { - print_error("Unable to load image file \"%s\"", file); + print_error("Unable to load image file \"%s\"\n", file); return 0; } else { reset_simage(simg, (RESET_IMLIB_IM | RESET_PMAP_PIXMAP | RESET_PMAP_MASK)); @@ -1640,12 +1637,12 @@ colormod_trans(Pixmap p, imlib_t *iml, GC gc, unsigned short w, unsigned short h } ximg = XGetImage(Xdisplay, p, 0, 0, w, h, -1, ZPixmap); if (ximg == NULL) { - print_warning("XGetImage(Xdisplay, 0x%08x, 0, 0, %d, %d, -1, ZPixmap) returned NULL.", p, w, h); + print_warning("XGetImage(Xdisplay, 0x%08x, 0, 0, %d, %d, -1, ZPixmap) returned NULL.\n", p, w, h); return; } D_PIXMAP(("XGetImage(Xdisplay, 0x%08x, 0, 0, %d, %d, -1, ZPixmap) returned %8p.\n", p, w, h, ximg)); if (Xdepth <= 8) { -#ifdef FIXME_BLOCK +#if FIXME_BLOCK D_PIXMAP(("Rendering low-depth image, depth == %d\n", (int) Xdepth)); for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { @@ -1700,7 +1697,7 @@ colormod_trans(Pixmap p, imlib_t *iml, GC gc, unsigned short w, unsigned short h #endif break; default: - print_warning("Bit depth of %d is unsupported for tinting/shading.", real_depth); + print_warning("Bit depth of %d is unsupported for tinting/shading.\n", real_depth); return; } } @@ -1743,7 +1740,7 @@ update_desktop_info(int *w, int *h) XGetGeometry(Xdisplay, desktop_pixmap, &dummy, &px, &py, &pw, &ph, &pb, &pd); } if ((pw <= 0) || (ph <= 0)) { - print_error("Value of desktop pixmap property is invalid. Please restart your " + print_error("Value of desktop pixmap property is invalid. Please restart your \n" "window manager or use Esetroot to set a new one."); desktop_pixmap = None; return 0; diff --git a/src/pixmap.h b/src/pixmap.h index c1650d4..8f2f7f1 100644 --- a/src/pixmap.h +++ b/src/pixmap.h @@ -54,7 +54,7 @@ typedef void *Imlib_Color_Modifier; # define CONVERT_TINT_RED(t) (((t) & 0xff0000) >> 16) # define CONVERT_TINT_GREEN(t) (((t) & 0x00ff00) >> 8) # define CONVERT_TINT_BLUE(t) ((t) & 0x0000ff) -# define IMLIB_FREE_PIXMAP(p) do {D_PIXMAP(("Freeing pixmap: imlib_free_pixmap_and_mask(0x%08x)\n", (p))); imlib_free_pixmap_and_mask(p);} while (0) +# define IMLIB_FREE_PIXMAP(p) do {D_PIXMAP(("libmej_freeing pixmap: imlib_free_pixmap_and_mask(0x%08x)\n", (p))); imlib_free_pixmap_and_mask(p);} while (0) #else # define background_is_image() (0) # define background_is_trans() (0) @@ -75,8 +75,8 @@ typedef void *Imlib_Color_Modifier; # define X_CREATE_PIXMAP(w, h) (XCreatePixmap(Xdisplay, TermWin.parent, (w), (h), Xdepth)) # define X_CREATE_GC(flags, gcv) (XCreateGC(Xdisplay, TermWin.parent, (flags), (gcv))) #endif -#define X_FREE_PIXMAP(p) do {D_PIXMAP(("Freeing pixmap: XFreePixmap(Xdisplay, 0x%08x)\n", (p))); XFreePixmap(Xdisplay, (p));} while (0) -#define X_FREE_GC(gc) do {D_PIXMAP(("Freeing GC: XFreeGC(Xdisplay, 0x%08x)\n", (gc))); XFreeGC(Xdisplay, (gc));} while (0) +#define X_FREE_PIXMAP(p) do {D_PIXMAP(("libmej_freeing pixmap: XFreePixmap(Xdisplay, 0x%08x)\n", (p))); XFreePixmap(Xdisplay, (p));} while (0) +#define X_FREE_GC(gc) do {D_PIXMAP(("libmej_freeing GC: XFreeGC(Xdisplay, 0x%08x)\n", (gc))); XFreeGC(Xdisplay, (gc));} while (0) #define PIXMAP_EXT NULL #define GEOM_LEN 19 diff --git a/src/screen.c b/src/screen.c index a97d54b..d352993 100644 --- a/src/screen.c +++ b/src/screen.c @@ -30,12 +30,8 @@ static const char cvs_ident[] = "$Id$"; # include #endif -#include "../libmej/debug.h" -#include "../libmej/mem.h" -#include "../libmej/strings.h" #include "buttons.h" #include "command.h" -#include "debug.h" #include "font.h" #include "startup.h" #include "screen.h" @@ -2157,7 +2153,7 @@ scr_search_scrollback(char *str) return; } } else { - last_str = StrDup(str); + last_str = STRDUP(str); } lrow = rows = TermWin.nrow + TermWin.saveLines; cols = TermWin.ncol; @@ -2670,7 +2666,7 @@ selection_make(Time tm) XSetSelectionOwner(Xdisplay, XA_PRIMARY, TermWin.vt, tm); if (XGetSelectionOwner(Xdisplay, XA_PRIMARY) != TermWin.vt) - print_error("can't get primary selection"); + print_error("can't get primary selection\n"); XChangeProperty(Xdisplay, Xroot, XA_CUT_BUFFER0, XA_STRING, 8, PropModeReplace, selection.text, selection.len); D_SELECT(("selection.len=%d\n", selection.len)); diff --git a/src/scrollbar.c b/src/scrollbar.c index c497804..b50cd76 100644 --- a/src/scrollbar.c +++ b/src/scrollbar.c @@ -28,9 +28,6 @@ static const char cvs_ident[] = "$Id$"; #include -#include "../libmej/debug.h" -#include "../libmej/mem.h" -#include "debug.h" #include "buttons.h" #include "command.h" #include "draw.h" @@ -880,7 +877,7 @@ scrollbar_drawing_init(void) { #ifdef XTERM_SCROLLBAR gcvalue.stipple = XCreateBitmapFromData(Xdisplay, scrollbar.win, (char *) xterm_sb_bits, 12, 2); if (!gcvalue.stipple) { - print_error("Unable to create xterm scrollbar bitmap."); + print_error("Unable to create xterm scrollbar bitmap.\n\n"); if (scrollbar_get_type() == SCROLLBAR_XTERM) { scrollbar_set_type(SCROLLBAR_MOTIF); } diff --git a/src/startup.c b/src/startup.c index 3cf3792..7c1a4d0 100644 --- a/src/startup.c +++ b/src/startup.c @@ -40,10 +40,6 @@ static const char cvs_ident[] = "$Id$"; #include #include -#include "../libmej/debug.h" /* from libmej */ -#include "../libmej/mem.h" -#include "../libmej/strings.h" -#include "debug.h" #include "startup.h" #include "actions.h" #include "buttons.h" @@ -68,7 +64,6 @@ short bg_needs_update = 1; TermWin_t TermWin; Display *Xdisplay; /* display */ Colormap cmap; -unsigned int debug_level = 0; /* Level of debugging information to display */ const char *display_name = NULL; unsigned int colorfgbg; @@ -110,7 +105,7 @@ eterm_bootstrap(int argc, char *argv[]) privileges(REVERT); #endif if (!Xdisplay) { - print_error("can't open display %s", display_name); + print_error("can't open display %s\n", display_name); exit(EXIT_FAILURE); } XSetErrorHandler((XErrorHandler) xerror_handler); @@ -217,7 +212,7 @@ eterm_bootstrap(int argc, char *argv[]) } #if DEBUG >= DEBUG_X - if (debug_level >= DEBUG_X) { + if (DEBUG_LEVEL >= DEBUG_X) { XSync(Xdisplay, False); XSynchronize(Xdisplay, True); } diff --git a/src/system.c b/src/system.c index c3eedc6..24718b3 100644 --- a/src/system.c +++ b/src/system.c @@ -36,13 +36,11 @@ static const char cvs_ident[] = "$Id$"; # include #endif -#include "../libmej/debug.h" -#include "debug.h" #include "command.h" #include "misc.h" #include "system.h" -/*static sighandler_t old_handler = (sighandler_t) NULL;*/ +/*static eterm_sighandler_t old_handler = (eterm_sighandler_t) NULL;*/ int wait_for_chld(int system_pid) @@ -94,7 +92,7 @@ system_wait(char *command) setreuid(my_ruid, my_ruid); setregid(my_rgid, my_rgid); execl("/bin/sh", "sh", "-c", command, (char *) NULL); - print_error("execl(%s) failed -- %s", command, strerror(errno)); + print_error("execl(%s) failed -- %s\n", command, strerror(errno)); exit(EXIT_FAILURE); } else { D_OPTIONS(("%d: fork() returned %d\n", getpid(), pid)); @@ -114,7 +112,7 @@ system_no_wait(char *command) setreuid(my_ruid, my_ruid); setregid(my_rgid, my_rgid); execl("/bin/sh", "sh", "-c", command, (char *) NULL); - print_error("execl(%s) failed -- %s", command, strerror(errno)); + print_error("execl(%s) failed -- %s\n", command, strerror(errno)); exit(EXIT_FAILURE); } return (0); diff --git a/src/system.h b/src/system.h index 88390ef..24e99f6 100644 --- a/src/system.h +++ b/src/system.h @@ -32,7 +32,7 @@ # define system(c) system_no_wait((c)) #endif -typedef RETSIGTYPE (*sighandler_t)(int); +typedef RETSIGTYPE (*eterm_sighandler_t)(int); extern int wait_for_chld(int); extern int system_wait(char *); diff --git a/src/term.c b/src/term.c index 50fa009..d43e92e 100644 --- a/src/term.c +++ b/src/term.c @@ -31,10 +31,6 @@ static const char cvs_ident[] = "$Id$"; #include #include -#include "../libmej/debug.h" -#include "../libmej/mem.h" -#include "../libmej/strings.h" -#include "debug.h" #include "actions.h" #include "buttons.h" #include "command.h" @@ -181,7 +177,7 @@ get_modifiers(void) } } -/* To handle buffer overflows properly, we must malloc a buffer. Free it when done. */ +/* To handle buffer overflows properly, we must malloc a buffer. libmej_free it when done. */ #ifdef USE_XIM # define LK_RET() do {if (kbuf_alloced) FREE(kbuf); return;} while (0) #else @@ -359,7 +355,7 @@ lookup_key(XEvent * ev) switch (keysym) { case XK_Print: /* Print the screen contents out to the print pipe */ #if DEBUG >= DEBUG_SELECTION - if (debug_level >= DEBUG_SELECTION) { + if (DEBUG_LEVEL >= DEBUG_SELECTION) { debug_selection(); } #endif @@ -770,11 +766,11 @@ popen_printer(void) FILE *stream; if (((my_ruid != my_euid) || (my_rgid != my_egid)) && (strcmp(rs_print_pipe, PRINTPIPE))) { - print_warning("Running setuid/setgid. Refusing to use custom printpipe."); - RESET_AND_ASSIGN(rs_print_pipe, StrDup(PRINTPIPE)); + print_warning("Running setuid/setgid. Refusing to use custom printpipe.\n"); + RESET_AND_ASSIGN(rs_print_pipe, STRDUP(PRINTPIPE)); } if ((stream = (FILE *) popen(rs_print_pipe, "w")) == NULL) { - print_error("Can't open printer pipe \"%s\" -- %s", rs_print_pipe, strerror(errno)); + print_error("Can't open printer pipe \"%s\" -- %s\n", rs_print_pipe, strerror(errno)); } return stream; } @@ -1646,7 +1642,7 @@ set_title(const char *str) } D_X11(("Setting window title to \"%s\"\n", str)); XStoreName(Xdisplay, TermWin.parent, str); - name = StrDup(str); + name = STRDUP(str); } } @@ -1662,7 +1658,7 @@ set_icon_name(const char *str) } D_X11(("Setting window icon name to \"%s\"\n", str)); XSetIconName(Xdisplay, TermWin.parent, str); - name = StrDup(str); + name = STRDUP(str); } } @@ -1733,7 +1729,7 @@ xterm_seq(int op, const char *str) return; #ifdef PIXMAP_SUPPORT - orig_tnstr = tnstr = StrDup(str); + orig_tnstr = tnstr = STRDUP(str); #endif switch (op) { @@ -2104,22 +2100,22 @@ xterm_seq(int op, const char *str) #ifdef XTERM_SCROLLBAR scrollbar_change_type(SCROLLBAR_XTERM); #else - print_error("Support for xterm scrollbars was not compiled in. Sorry."); + print_error("Support for xterm scrollbars was not compiled in. Sorry.\n"); #endif } else if (!strcasecmp(nstr, "next")) { #ifdef NEXT_SCROLLBAR scrollbar_change_type(SCROLLBAR_NEXT); #else - print_error("Support for NeXT scrollbars was not compiled in. Sorry."); + print_error("Support for NeXT scrollbars was not compiled in. Sorry.\n"); #endif } else if (!strcasecmp(nstr, "motif")) { #ifdef MOTIF_SCROLLBAR scrollbar_change_type(SCROLLBAR_MOTIF); #else - print_error("Support for motif scrollbars was not compiled in. Sorry."); + print_error("Support for motif scrollbars was not compiled in. Sorry.\n"); #endif } else { - print_error("Unrecognized scrollbar type \"%s\".", nstr); + print_error("Unrecognized scrollbar type \"%s\".\n", nstr); } } nstr = (char *) strsep(&tnstr, ";"); @@ -2267,7 +2263,7 @@ xterm_seq(int op, const char *str) /* Set debugging level */ nstr = (char *) strsep(&tnstr, ";"); if (nstr && *nstr) { - debug_level = (unsigned int) strtoul(nstr, (char **) NULL, 0); + DEBUG_LEVEL = (unsigned int) strtoul(nstr, (char **) NULL, 0); } break; diff --git a/src/timer.c b/src/timer.c index 5bf73da..60823a1 100644 --- a/src/timer.c +++ b/src/timer.c @@ -31,11 +31,7 @@ static const char cvs_ident[] = "$Id$"; #include #include -#include "../libmej/debug.h" -#include "../libmej/strings.h" -#include "debug.h" #include "startup.h" -#include "mem.h" #include "command.h" #include "events.h" #include "options.h" diff --git a/src/utmp.c b/src/utmp.c index 2c6a454..422fac4 100644 --- a/src/utmp.c +++ b/src/utmp.c @@ -68,13 +68,11 @@ static const char cvs_ident[] = "$Id$"; # ifdef HAVE_LASTLOG_H # include # endif -# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__bsdi__) +# if defined(__libmej_freeBSD__) || defined(__NetBSD__) || defined(__bsdi__) # include # endif # include "eterm_utmp.h" -# include "debug.h" -# include "../libmej/debug.h" # include "command.h" # include "screen.h" @@ -85,7 +83,7 @@ static const char cvs_ident[] = "$Id$"; /* don't go off end of ut_id & remember if an entry has been made */ # ifndef HAVE_UTEMPTER -# if defined(USE_SYSV_UTMP) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__) +# if defined(USE_SYSV_UTMP) || defined(__libmej_freeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__) static char ut_id[5]; /* remember if entry to utmp made */ # else static int utmp_pos; /* BSD position of utmp-stamp */ @@ -170,7 +168,7 @@ add_utmp_entry(const char *pty, const char *hostname, int fd) if (sscanf(pty, "pts/%d", &n) == 1) sprintf(ut_id, "vt%02x", n); /* sysv naming */ else { - print_error("can't parse tty name \"%s\"", pty); + print_error("can't parse tty name \"%s\"\n", pty); ut_id[0] = '\0'; /* entry not made */ return; } @@ -276,7 +274,7 @@ remove_utmp_entry(void) # else /* USE_SYSV_UTMP */ /* BSD utmp support */ -# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__bsdi__) +# if defined(__libmej_freeBSD__) || defined(__NetBSD__) || defined(__bsdi__) /* used to hold the line we are using */ static char ut_line[32]; @@ -324,7 +322,7 @@ b_login(struct utmp *ut) } } -# else /* __FreeBSD__ || NetBSD || BSDI */ +# else /* __libmej_freeBSD__ || NetBSD || BSDI */ static int utmp_pos = 0; /* position of utmp-stamp */ /*----------------------------------------------------------------------* @@ -382,7 +380,7 @@ write_utmp(struct utmp *putmp) return rval; } -# endif /* __FreeBSD__ || NetBSD || BSDI */ +# endif /* __libmej_freeBSD__ || NetBSD || BSDI */ void add_utmp_entry(const char *pty, const char *hostname, int fd) @@ -397,12 +395,12 @@ add_utmp_entry(const char *pty, const char *hostname, int fd) if (!strncmp(pty, "pty", 3) || !strncmp(pty, "tty", 3)) strncpy(ut_id, (pty + 3), sizeof(ut_id)); /* bsd naming */ else { - print_error("can't parse tty name \"%s\"", pty); + print_error("can't parse tty name \"%s\"\n", pty); ut_id[0] = '\0'; /* entry not made */ return; } -# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__bsdi__) +# if defined(__libmej_freeBSD__) || defined(__NetBSD__) || defined(__bsdi__) strncpy(ut_line, pty, 31); strncpy(utmp.ut_line, pty, UT_LINESIZE); @@ -411,7 +409,7 @@ add_utmp_entry(const char *pty, const char *hostname, int fd) utmp.ut_time = time(NULL); b_login(&utmp); -# else /* __FreeBSD__ || NetBSD || BSDI */ +# else /* __libmej_freeBSD__ || NetBSD || BSDI */ strncpy(utmp.ut_line, ut_id, sizeof(utmp.ut_line)); strncpy(utmp.ut_name, pwent->pw_name, sizeof(utmp.ut_name)); strncpy(utmp.ut_host, hostname, sizeof(utmp.ut_host)); @@ -430,10 +428,10 @@ add_utmp_entry(const char *pty, const char *hostname, int fd) void remove_utmp_entry(void) { -# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__bsdi__) +# if defined(__libmej_freeBSD__) || defined(__NetBSD__) || defined(__bsdi__) logout(ut_line); logwtmp(ut_line, "", ""); -# else /* __FreeBSD__ */ +# else /* __libmej_freeBSD__ */ FILE *fd; privileges(INVOKE); @@ -447,7 +445,7 @@ remove_utmp_entry(void) fclose(fd); } privileges(REVERT); -# endif /* __FreeBSD__ || NetBSD || BSDI */ +# endif /* __libmej_freeBSD__ || NetBSD || BSDI */ } # endif /* USE_SYSV_UTMP */ diff --git a/src/windows.c b/src/windows.c index a96a982..d480cfa 100644 --- a/src/windows.c +++ b/src/windows.c @@ -32,10 +32,6 @@ static const char cvs_ident[] = "$Id$"; #include #include -#include "../libmej/debug.h" -#include "../libmej/mem.h" -#include "../libmej/strings.h" -#include "debug.h" #include "buttons.h" #include "command.h" #include "e.h" @@ -101,7 +97,7 @@ get_tint_by_color_name(const char *color) D_PIXMAP(("Tint string is \"%s\", white color is rgbi:%d/%d/%d\n", color, wcol.red, wcol.green, wcol.blue)); if (!XParseColor(Xdisplay, Xcmap, color, &xcol)) { - print_error("Unable to parse tint color \"%s\". Ignoring.", color); + print_error("Unable to parse tint color \"%s\". Ignoring.\n", color); return 0xffffff; } @@ -146,7 +142,7 @@ get_bottom_shadow_color(Pixel norm_color, const char *type) xcol.blue /= 2; if (!XAllocColor(Xdisplay, cmap, &xcol)) { - print_error("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.", type, xcol.pixel, xcol.red, xcol.green, xcol.blue); + print_error("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.\n", type, xcol.pixel, xcol.red, xcol.green, xcol.blue); xcol.pixel = PixColors[minColor]; } return (xcol.pixel); @@ -178,7 +174,7 @@ get_top_shadow_color(Pixel norm_color, const char *type) xcol.blue = MIN(white.blue, (xcol.blue * 7) / 5); if (!XAllocColor(Xdisplay, cmap, &xcol)) { - print_error("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.", type, xcol.pixel, xcol.red, xcol.green, xcol.blue); + print_error("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.\n", type, xcol.pixel, xcol.red, xcol.green, xcol.blue); xcol.pixel = PixColors[WhiteColor]; } return (xcol.pixel); @@ -197,11 +193,11 @@ get_color_by_name(const char *name, const char *fallback) } } if (!XParseColor(Xdisplay, cmap, name, &xcol)) { - print_warning("Unable to resolve \"%s\" as a color name. Falling back on \"%s\".", name, NONULL(fallback)); + print_warning("Unable to resolve \"%s\" as a color name. Falling back on \"%s\".\n", name, NONULL(fallback)); name = fallback; if (name) { if (!XParseColor(Xdisplay, cmap, name, &xcol)) { - print_warning("Unable to resolve \"%s\" as a color name. This should never fail. Please repair/restore your RGB database.", name); + print_warning("Unable to resolve \"%s\" as a color name. This should never fail. Please repair/restore your RGB database.\n", name); return ((Pixel) -1); } } else { @@ -209,12 +205,12 @@ get_color_by_name(const char *name, const char *fallback) } } if (!XAllocColor(Xdisplay, cmap, &xcol)) { - print_warning("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map. Falling back on \"%s\".", + print_warning("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map. Falling back on \"%s\".\n", name, xcol.pixel, xcol.red, xcol.green, xcol.blue, NONULL(fallback)); name = fallback; if (name) { if (!XAllocColor(Xdisplay, cmap, &xcol)) { - print_warning("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.", name, xcol.pixel, xcol.red, xcol.green, xcol.blue); + print_warning("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.\n", name, xcol.pixel, xcol.red, xcol.green, xcol.blue); return ((Pixel) -1); } } else { @@ -231,18 +227,18 @@ get_color_by_pixel(Pixel pixel, Pixel fallback) xcol.pixel = pixel; if (!XQueryColor(Xdisplay, cmap, &xcol)) { - print_warning("Unable to convert pixel value 0x%08x to an XColor structure. Falling back on 0x%08x.", pixel, fallback); + print_warning("Unable to convert pixel value 0x%08x to an XColor structure. Falling back on 0x%08x.\n", pixel, fallback); xcol.pixel = fallback; if (!XQueryColor(Xdisplay, cmap, &xcol)) { - print_warning("Unable to convert pixel value 0x%08x to an XColor structure.", xcol.pixel); + print_warning("Unable to convert pixel value 0x%08x to an XColor structure.\n", xcol.pixel); return ((Pixel) 0); } } if (!XAllocColor(Xdisplay, cmap, &xcol)) { - print_warning("Unable to allocate 0x%08x (0x%04x, 0x%04x, 0x%04x) in the color map. Falling back on 0x%08x.", xcol.pixel, xcol.red, xcol.green, xcol.blue, fallback); + print_warning("Unable to allocate 0x%08x (0x%04x, 0x%04x, 0x%04x) in the color map. Falling back on 0x%08x.\n", xcol.pixel, xcol.red, xcol.green, xcol.blue, fallback); xcol.pixel = fallback; if (!XAllocColor(Xdisplay, cmap, &xcol)) { - print_warning("Unable to allocate 0x%08x (0x%04x, 0x%04x, 0x%04x) in the color map.", xcol.pixel, xcol.red, xcol.green, xcol.blue); + print_warning("Unable to allocate 0x%08x (0x%04x, 0x%04x, 0x%04x) in the color map.\n", xcol.pixel, xcol.red, xcol.green, xcol.blue); return ((Pixel) 0); } } @@ -323,7 +319,7 @@ Create_Windows(int argc, char *argv[]) if (Options & Opt_borderless) { prop = XInternAtom(Xdisplay, "_MOTIF_WM_HINTS", True); if (prop == None) { - print_warning("Window Manager does not support MWM hints. Bypassing window manager control for borderless window."); + print_warning("Window Manager does not support MWM hints. Bypassing window manager control for borderless window.\n"); Attributes.override_redirect = TRUE; mwmhints.flags = 0; } else { @@ -663,17 +659,17 @@ set_window_color(int idx, const char *color) if (i >= 0 && i <= 7) { /* normal colors */ PixColors[idx] = PixColors[minColor + i]; } else { - print_warning("Color index %d is invalid.", i); + print_warning("Color index %d is invalid.\n", i); return; } } else if (XParseColor(Xdisplay, cmap, color, &xcol)) { if (!XAllocColor(Xdisplay, cmap, &xcol)) { - print_warning("Unable to allocate \"%s\" in the color map.", color); + print_warning("Unable to allocate \"%s\" in the color map.\n", color); return; } PixColors[idx] = xcol.pixel; } else { - print_warning("Unable to resolve \"%s\" as a color name.", color); + print_warning("Unable to resolve \"%s\" as a color name.\n", color); return; } redraw_image(image_bg);