2006-03-08 David Shaw * argparse.c (default_strusage): Update copyright year to 2006. 2006-02-19 David Shaw * http.c (send_request): A zero length proxy is the same as no proxy. 2006-02-14 Werner Koch * errors.c (g10_errstr): Add NO_DATA. 2006-01-26 David Shaw * cert.c (get_cert): Disable IPGP types for now until the format questions in the draft are settled. * srv.c (getsrv): Error on oversize SRV responses. 2005-12-24 David Shaw * cert.c (get_cert): Properly chase down CNAMEs pointing to CERTs. 2005-12-23 David Shaw * cert.c, Makefile.am: New code to do DNS CERT queries. 2005-12-22 David Shaw * srv.c, Makefile.am: Only build srv.c if we need to. 2005-12-10 Ryan Lortie (dshaw) * ttyio.c (tty_enable_completion, tty_disable_completion): Add checks for no_terminal so we don't try to open("/dev/tty") when invoked with --no-tty. 2005-12-06 David Shaw * Makefile.am: Some cleanup so we don't build files that are completely ifdeffed out. This causes a warning on Sun's cc. Do the internal regex code as well for consistency. * mkdtemp.c (mkdtemp): Fix warning. * secmem.c, assuan-buffer.c, dotlock.c: Fix a few warnings from printf-ing %p where the arg wasn't void *. 2005-11-02 David Shaw * util.c [!HAVE_DECL_GETPAGESIZE]: Prototype getpagesize() if unistd.h doesn't have it (for MinGW). 2005-09-22 Werner Koch * iobuf.c (iobuf_get_filelength): New arg OVERFLOW. (iobuf_get_filelength) [W32]: Use GetFileSizeEx if available. * fileutil.c (is_file_compressed): Take care of the OVERFLOW 2005-08-31 David Shaw * fileutil.c (untilde): New. Expand ~/foo and ~username/foo filenames into full paths using $HOME if possible, or getpwuid/getpwnam if necessary. (make_filename): Use it here. 2005-07-28 Werner Koch * pka.c: New. (parse_txt_record): Changed from v=1 to v=pka1. * Makefile.am (pka-test): new. 2005-07-27 Werner Koch * memory.c (FNAMEX, FNAMEXM): New macros to cope with the now used names xmalloc style names. 2005-07-18 Werner Koch * ttyio.c (do_get): Move printing of the prompt after disabling echo. Suggested by Scott Worley. 2005-06-23 David Shaw * http.c (make_radix64_string): Add '=' padding as per standard. (send_request, http_open, http_open_document): Clean up auth code. Can now support different auth for a proxy and the file being requested via that proxy. Unescape auth strings. 2005-06-22 David Shaw * memrchr.c (memrchr): Not all compilers allow initializing based on a variable that is also being initialized. Noted by Nelson H. F. Beebe. 2005-06-21 David Shaw * http.c (send_request, http_open, http_open_document): Pass in auth and proxyauth that can override the in-url auth. * http.c (send_request): Need == after the radix64-encoded basic auth string. 2005-06-08 David Shaw * dotlock.c [HAVE_DOSISH_SYSTEM]: Fix unused function warnings on mingw32. Noted by Joe Vender. 2005-05-31 Werner Koch * regcomp.c (MB_CUR_MAX) [_WIN32]: Define it only if not defined. 2005-05-29 David Shaw * strgutil.c (set_native_charset) [_WIN32]: Add alias for codepage CP65001 to utf-8. 2005-05-19 Werner Koch * membuf.c: New. Taken from gnupg 1.9. 2005-05-05 David Shaw * miscutil.c (add_days_to_timestamp): Remove as unused. 2005-04-12 David Shaw * assuan-client.c: Fix warning on OSX. * memrchr.c: New replacement function. * assuan-buffer.c: Use it here. 2005-04-04 Werner Koch * memory.c (xcalloc, xcalloc_secure): New wrappers. * assuan-client.c (assuan_transact): Factored all code out to .. (assuan_transact2): .. new. Add arg OKAY_CB. Wipe the memory processed though that callback. 2005-03-31 Werner Koch * isascii.c: New. This is an autoconf replacement function. * Makefile.am (assuan_source): New. Only used when agent support has been requested. * assuan-buffer.c, assuan-client.c, assuan-defs.h, * assuan-errors.c, assuan-logging.c, assuan-socket-connect.c, * assuan-socket.c, assuan-util.c, assuan-connect.c: New. Taken from libassuan 0.6.9 and adjusted for our limited use of Assuan. 2005-03-18 David Shaw * ttyio.c (tty_enable_completion, tty_disable_completion): Enable and disable readline completion. (init_ttyfp): Completion is disabled by default. 2005-03-14 Werner Koch * miscutil.c (isotimestamp): New. 2005-03-10 Werner Koch * secmem.c (secmem_realloc): Take control information into account when checking whether a resize is needed. 2005-03-08 Werner Koch * miscutil.c (asctimestamp) [W32]: Don't use %Z. 2005-02-03 Werner Koch * w32reg.c (read_w32_registry_string): Fallback to HKLM also for a missing name. * http.c (connect_server): Define ERR outside of the !W32 block. 2005-02-01 David Shaw * http.c (connect_server): Fix fd leak when connecting to a round-robin server set that has some down servers. Noted by Phil Pennock. 2005-01-20 Werner Koch * simple-gettext.c (set_gettext_file): Use MO files depending on the installation directory. Add new arg REGKEY. 2005-01-18 Werner Koch * argparse.c (default_strusage): Changed default copyright year to 2005. * strgutil.c (handle_iconv_error): Print error messages only once. (native_to_utf8, utf8_to_native): Ditto. 2005-01-11 Werner Koch * strgutil.c (set_native_charset) [W32]: Use the alias table from libiconv 1.9.2. 2005-01-13 David Shaw * http.c (connect_server): Use INADDR_NONE instead of SOCKET_ERROR. Noted by Timo. 2005-01-06 Werner Koch * strgutil.c (set_native_charset): Assume that ASCII, ANSI_X3.4-1968 and 646 are actually meant as Latin-1. If nl_langinfo is not available get the charset from environment variables. For W32 use GetACP as error fallback. Removed Latin-15 to Latin-1 aliasing. 2004-12-28 David Shaw * srv.h: Better implementation for the SRV check. We don't need to actually check all the header files individually since the SRV test compile uses them together. 2004-12-20 Werner Koch * strgutil.c (handle_iconv_error): Turn diagnostics into warnings so that gpg does not return with failure. (native_to_utf8, utf8_to_native): Ditto. 2004-12-16 Werner Koch * iobuf.c (fd_cache_strcmp) [W32]: Casting is a Bad Thing. Cast to an unsigned char pointer and to an unsigned integer. 2004-12-18 David Shaw * ttyio.c: Use only HAVE_LIBREADLINE to detect readline availability. 2004-12-16 David Shaw * srv.h: Don't include arpa/nameser.h unless we have it. Include "types.h" for u16. * secmem.c (secmem_init): Return a flag to indicate whether we got the lock. 2004-12-06 Werner Koch * iobuf.c (fd_cache_strcmp): New. Use whenever we compare filenames for the fd_cache. This is needed because the backslash is an alias for a slash under W32. Reported by Tobias Winkler. 2004-12-03 David Shaw * http.c (send_request): Include the port if non-80 in the Host: header. Noted by Jason Harris. 2004-11-03 Timo Schulz * strgutil.c (w32_strerror): New. * ttyio.c (init_ttyfp, tty_printf, do_get): Use it here. * iobuf.c (fd_cache_open, file_filter): Likewise. (iobuf_seek, translate_file_handle): Likewise. 2004-11-02 Werner Koch * strgutil.c (load_libiconv): Use log_info to avoid failures when iconv.dll is not installed. 2004-10-31 Werner Koch * simple-gettext.c (get_string): Removed debugging hack. 2004-10-27 Werner Koch * simple-gettext.c: Removed windows.h. (get_string): On the fly translation from utf-8 to active character set. * strgutil.c (load_libiconv) [_WIN32]: new. (set_native_charset) [_WIN32]: Call it here and autodetect the used code page. (native_to_utf8, utf8_to_native): Reverted arguments for iconv_open. (handle_iconv_error): Made this function match iconv_open argumnet ordering. (utf8_to_native): Disable all quoting for DELIM == -1. 2004-10-26 Werner Koch * strgutil.c (mem2str): Translated comment to English. (handle_iconv_error) [USE_GNUPG_ICONV]: New. (set_native_charset) [USE_GNUPG_ICONV]: Added iconv based conversion checks. (native_to_utf8, utf8_to_native): Added iconv based conversion. 2004-10-21 Werner Koch * vasprintf.c: Removed. It was used only at one place and I don't want to get into build problems in 1.4. 2004-10-18 David Shaw * http.c (connect_server, send_request): Use the URI scheme as the SRV tag rather than hard-coding _hkp. 2004-10-16 David Shaw * http.c (connect_server): [_WIN32] actually fill in the sin_addr so we aren't always talking to localhost. Add some general sanity checking of parameters learned from gethostbyname(). 2004-10-15 Werner Koch * vasprintf.c: New. Taken from gnupg 1.9. 2004-10-14 Werner Koch * iobuf.c (iobuf_get_fd): Removed double check on directfp and cats it to FILEP becuase directfp is actually a void *. Notes by Stefan. 2004-10-13 Werner Koch * logger.c (g10_log_error_f, g10_log_fatal_f, g10_log_info_f) (g10_log_debug_f, print_prefix_f): Removed. * iobuf.c (iobuf_is_pipe_filename): New. (iobuf_get_fd): New. * fileutil.c (is_file_compressed): Use it here. 2004-09-30 David Shaw * iobuf.c (pop_filter): Make static. * dotlock.c (destroy_dotlock): New. Remove the handle from the list of locks. (release_dotlock): Don't act if we don't have any locks at all. From Werner on stable branch. 2004-09-10 David Shaw * http.c (make_radix64_string, do_parse_uri, send_request): Add basic auth for proxies and direct requests. Suggested by Florent Thoumie. * http.c (main): Fix test code for http-test. 2004-09-09 Werner Koch * errors.c (g10_errstr): New error codes G10ERR_NO_CARD, G10ERR_CANCELED. * ttyio.c (tty_get): Add readline support. * iobuf.c (iobuf_skip_rest): New. Orginal patch by Florian Weimer. Added new argument PARTIAL. 2004-08-19 David Shaw * http.c (insert_escapes): Fix encoding problem for non-URI-safe characters. Noted by Vladimir Novak. 2004-05-21 David Shaw * timegm.c: New replacement function. Removes the need for setenv.c and unsetenv.c. * setenv.c: Removed. * unsetenv.c: Removed. 2004-03-04 David Shaw * iobuf.c (block_filter): Remove the old gpg indeterminate length mode. (iobuf_set_block_mode, iobuf_in_block_mode): Removed as superfluous. 2004-03-01 David Shaw * iobuf.c (block_filter): Properly handle a partial body stream that ends with a 5-byte length that happens to be zero. 2004-02-28 David Shaw * unsetenv.c: Fixed debugging typo. 2004-02-24 Werner Koch * secmem.c (lock_pool) [_AIX]: Also set errno. 2004-02-21 David Shaw * miscutil.c (hextobyte): Moved here from g10/misc.c so I can use it in the keyserver helpers. 2004-02-20 David Shaw * mkdtemp.c: New (moved from g10/), setenv.c: New, unsetenv.c: New. * Makefile.am: Include @LIBOBJS@ for replacement functions. 2004-01-15 David Shaw * argparse.c (default_strusage): Update copyright date. (initialize): Avoid a number of -Wformat-nonliteral warnings. These aren't actual problems, but the warnings bothered me. * miscutil.c (print_string2): New variation on print_string that allows two delimiters. (print_string): Call print_string2 to do work. 2003-12-29 David Shaw * g10u.c: Dead code. Remove. * Makefile.am: Don't compile g10u.c. * iobuf.c (block_filter): Properly handle a partial body stream that ends with a 5-byte length. 2003-12-28 David Shaw * http.c (send_request, http_open_document, http_open): Pass the http proxy from outside rather than pulling it from the evironment. 2003-12-28 Stefan Bellon * riscos.c [__riscos__]: Better filetype handling (use a different SWI) and removal of unnecessary function. * memory.c (out_of_core) [__riscos__]: Produce stack backtrace on RISC OS if out_of_core() is called and M_GUARD is compiled in. 2003-12-06 David Shaw * http.c (send_request): Add a Host: header for virtual hosts. 2003-12-04 David Shaw * miscutil.c (answer_is_yes_no_default, answer_is_yes_no_quit): Don't use alternate strings when not needed so we don't have to re-translate them. Hopefully the comment will be enough to indicate multiple match strings. 2003-11-20 David Shaw * miscutil.c (match_multistr): New. Match against each segment in a string with tokens separated by |. (answer_is_yes_no_default, answer_is_yes_no_quit, answer_is_okay_cancel): Use it here to enable alternate translations. 2003-11-01 David Shaw * http.c (connect_server): Differentiate between generic "can't connect" errors and the more specific "host not found". Suggested by Samuel Tardieu. 2003-10-29 Werner Koch * miscutil.c (answer_is_okay_cancel): New. 2003-10-25 Werner Koch * Makefile.am: Replaced INTLLIBS by LIBINTL. 2003-10-23 Werner Koch * secmem.c (lock_pool) [_AIX]: Don't use plock. 2003-10-12 David Shaw * srv.c: OSX 10.2.8/Darwin 6.8 seems to have some #include ordering issues? Move sys/types.h up higher to work around. 2003-10-08 Werner Koch * ttyio.c (tty_print_string, tty_print_utf8_string2) (tty_print_utf8_string): Made string arg const. 2003-09-28 Timo Schulz * strgutil.c [WIN32] (asprintf): New. 2003-09-28 Werner Koch * ttyio.c (tty_fprintf): New. 2003-09-21 Timo Schulz * http.c [WIN32]: Define MB_CUR_MAX. (connect_server): use unsigned long since W32 does not have in_addr_t. 2003-08-28 David Shaw * dotlock.c, http.c, iobuf.c, simple-gettext.c, srv.c, srv.h, strgutil.c, ttyio.c, w32reg.c: s/__MINGW32__/_WIN32/ to help building on native Windows compilers. Requested by Brian Gladman. From Werner on stable branch. * http.c (connect_server): Oops - forgot to freeaddrinfo(). 2003-08-24 David Shaw * http.c (connect_server): Try and use getaddrinfo if it is available. Try for IPv6 via getaddrinfo() or a IPv6-ized gethostbyname(). Suggested by Jun-ichiro itojun Hagino. 2003-07-10 David Shaw (from Werner on stable branch) * iobuf.c (check_special_filename): Replaced is isdigit by digitp to avoid passing negative values and potential locale problems. Problem noted by Christian Biere. * strgutil.c (strlwr,strcasecmp,strncasecmp): Make sure we don't pass a negative value. * miscutil.c (scan_isodatestr): Ditto. 2003-05-30 David Shaw * srv.h, srv.c: Include windows.h with MINGW32. 2003-05-24 David Shaw * argparse.c, dotlock.c, fileutil.c, iobuf.c, miscutil.c, simple-gettext.c, errors.c, http.c, memory.c, secmem.c, ttyio.c: Edit all preprocessor instructions to remove whitespace before the '#'. This is not required by C89, but there are some compilers out there that don't like it. 2003-05-21 Werner Koch * fileutil.c (is_file_compressed): Fixed checking for "-" filename. 2003-04-13 David Shaw * srv.c (main): Test against wwwkeys.pgp.net. * srv.h: Grr. The RH7.3 Linux man page defines the fourth arg of dn_expand as unsigned char*, but it is really char* according to resolv.h. 2003-03-23 David Shaw * argparse.c (default_strusage): Change copyright date. 2003-03-14 David Shaw * srv.h, srv.c (getsrv): Use unsigned char rather than char. Noted by Stefan Bellon. 2003-03-11 David Shaw * http.c (connect_server): Use DNS SRV to get a server list. Fail over to A records if necessary. * Makefile.am, srv.h, srv.c: New DNS SRV handling code. 2003-02-22 David Shaw * ttyio.c (tty_print_utf8_string, tty_print_utf8_string2): Use 0 to indicate a string with no maximum size. This prevents early truncation of strings that contain control chars which are expanded into \xXX form. 2002-12-26 David Shaw * iobuf.c (iobuf_flush): Only print debug info if debugging is on. 2002-11-13 David Shaw * secmem.c (lock_pool) [__CYGWIN__]: Don't print secmem warning. From Werner on stable branch. 2002-11-09 Werner Koch * ttyio.c (TERMDEVICE): Removed. (tty_get_ttyname): New. (init_ttyfp): Use it here instead of the TERMDEVICE macro. 2002-11-06 David Shaw * w32reg.c (read_w32_registry_string): Fixed expanding of the environment buffer; didn't worked at all. Reported by Thijmen Klok. From Werner on stable branch. * secmem.c (secmem_free, secmem_term): Use wipememory2() instead of memset() to overwrite secure memory * iobuf.c (direct_open): Handle mode 'b' if O_BINARY is available. From Werner on stable branch. * fileutil.c: Comment from stable branch. 2002-10-31 Stefan Bellon * riscos.c (riscos_load_module, riscos_check_regexp): New. (riscos_set_filetype_by_mimetype, riscos_dump_fdlist) (riscos_fdopenfile, riscos_close_fds, riscos_renamefile) (riscos_gstrans, riscos_list_openfiles, riscos_not_implemented): Renamed functions to contain riscos prefix. * dotlock.c [__riscos__]: Renames due to changes in riscos.c. * fileutil.c [__riscos__]: Likewise. 2002-10-29 Stefan Bellon * fileutil.c: Removed unnecessary left-over includes for RISC OS. (make_filename): Tidied up RISC OS stuff. (compare_filenames) [__riscos__]: Compare with ascii_strcasecmp(). (make_basename) [__riscos__]: Branch to own RISC OS routine from here. * riscos.c (riscos_make_basename): New. 2002-10-28 Stefan Bellon * fileutil.c (make_basename) [__riscos__]: Cut off RISC OS' filing systems from filepath. * riscos.c (riscos_get_filetype_from_string, riscos_get_filetype): Added. (riscos_set_filetype_by_number): Made public. 2002-10-19 David Shaw * Makefile.am, regcomp.c, regex.c, regex_internal.c, regex_internal.h, regexec.c: Add new regex files from glibc 2.3.1. 2002-10-17 David Shaw * http.c (connect_server): Try all A records for names with multiple addresses until one answers for both MINGW32 and not MINGW32. 2002-10-10 David Shaw * http.c (connect_server): Properly handle a single A record that fails connect(). 2002-10-03 David Shaw * logger.c (g10_log_warning, log_set_strict): Add new log_warning logger command which can be switched between log_info and log_error via log_set_strict. 2002-09-24 David Shaw * http.c (connect_server): Try all A records for names with multiple addresses until one answers (not MINGW32). 2002-09-16 Werner Koch * w32reg.c (read_w32_registry_string): Fallback to HLM. 2002-09-12 Stefan Bellon * fileutil.c (make_filename): Removed variable for RISC OS to avoid compiler warning. * secmem.c: Removed static variable for RISC OS to avoid compiler warning. 2002-09-11 Werner Koch * simple-gettext.c: Disable charset mappings. We do it now when installing the files. 2002-09-09 Werner Koch * w32reg.c (read_w32_registry_string): Handle REG_EXPAND_SZ. Suggested by Ryan Malayter. * strgutil.c (ascii_strcasecmp): Replaced by code from gnulib. (ascii_strncasecmp): New. 2002-09-02 Werner Koch * simple-gettext.c (set_gettext_file): Make sure that we only use backslashes. * strgutil.c (set_native_charset): Allow NULL as argument to use nl_langinfo for selection. Mapped latin-15 to latin-1. 2002-08-30 Werner Koch * iobuf.c (block_filter): Removed the assert, so that one can pass the first character of a message and use the block filter for non partial length encoded packets. 2002-08-06 Stefan Bellon * ttyio.c [__riscos__]: Moved low-level RISC OS stuff to riscos.c. * riscos.c: Use new SWI calling mechanism of UnixLib. 2002-08-03 Stefan Bellon * secmem.c (init_pool, secmem_term): Changed #if to #ifdef in order to avoid warning with RISC OS' Norcroft C. 2002-07-25 David Shaw * secmem.c: "Warning" -> "WARNING" 2002-07-05 Werner Koch * argparse.c (initialize): We better exit after a read error so that we don't run into an endless loop when reading a directory. Noted by Andrew Suffield. 2002-07-01 David Shaw * argparse.c (optfile_parse): Fix variable typo - 'p2' should be 'p' :) 2002-06-29 Werner Koch * argparse.c (optfile_parse): Renamed an auto I to P2 to avoid shadowing warning. 2002-06-21 Stefan Bellon * riscos.c (riscos_global_defaults): New. 2002-06-20 Stefan Bellon * riscos.c (riscos_set_filetype_by_number, riscos_set_filetype): New. Set RISC OS filetype according to MIME type. 2002-06-14 David Shaw * strgutil.c (pop_strlist): New function to pop the head off of a strlist. 2002-06-05 Timo Schulz * fileutil.c (is_file_compressed): Corrected the magic values for bzip2 and gzip. Noted by David. 2002-05-22 Werner Koch * fileutil.c (compare_filenames): Replaced stricmp by strcasecmp. * miscutil.c (answer_is_yes_no_quit,answer_is_yes_no_default): Ditto. * strgutil.c (strncasecmp): New. (memicmp): Removed. 2002-05-10 Stefan Bellon * memory.c (add_entry) [M_DEBUG]: Added some missing EXTRA_ALIGN. (free_entry) [M_DEBUG]: Free secure memory via secmem_free. (alloc_secure): Malloc at least 1 byte. (realloc) [M_GUARD]: Added missing FNAMEARG to function call. * logger.c (g10_log_bug0) [__riscos__]: Make use of first g10_log_bug0 function for later Norcroft compiler. * riscos.c: Added stdlib.h include. 2002-05-04 Werner Koch * http.c (write_server) [__MINGW32__]: Replaced WriteFile by send because sockets don't work with WriteFile under NT anymore. 2002-05-03 David Shaw * argparse.c (optfile_parse): Remove quotes only if they totally enclose the string, and do not occur within the string. This makes specifying a program under Win32 easier when you need quotes around part of a string, but not around the whole string. 2002-05-02 Werner Koch * memory.c (alloc): Malloc at least 1 byte. Noted by Winona Brown. 2002-04-23 David Shaw * miscutil.c: New function answer_is_yes_no_default() to give a default answer. 2002-04-22 Stefan Bellon * riscos.c (riscos_open, riscos_fopen, riscos_fstat, set_filetype): Removed as they're not needed anymore. * iobuf.c (direct_open) [__riscos__]: Don't allow opening of directories. 2002-04-08 Werner Koch Fixed filename of last entry. 2002-03-29 David Shaw * miscutil.c (print_string, utf8_to_native): If a delimiter is used, then quote the backslash character as well. Problem noted by Rainer Perske. 2002-03-15 Werner Koch * argparse.c (optfile_parse): Fixed missing argument handling. 2002-02-28 Timo Schulz * http.c (write_server): Convert integer to a HANDLE for W32. 2002-01-27 David Shaw * iobuf.c (iobuf_fdopen, iobuf_sockopen): Do not cache fdopened fds on close. 2002-01-08 Werner Koch * secmem.c (print_warn): Print a pointer to the FAQ. 2002-01-05 Werner Koch * argparse.c (default_strusage): Set default copyright date to 2002. 2002-01-02 Stefan Bellon * iobuf.c [__riscos__]: Updated include file name. * fileutil.c [__riscos__]: Ditto. * ttyio.d [__riscos__]: Ditto. * riscos.c [__riscos__]: Ditto. Added debugging code and unified error messages. 2001-12-27 David Shaw * errors.c (g10_errstr): Added G10ERR_KEYSERVER 2001-12-27 Werner Koch * simple-gettext.c [MINGW32]: Fixed last changed. 2001-12-22 Stefan Bellon * memory.c (realloc): Fixed realloc not working when M_GUARD is defined and first parameter is NULL. 2001-12-22 Timo Schulz * fileutil.c (is_file_compressed): New. 2001-12-19 Werner Koch * simple-gettext.c, w32reg.c [CYGWIN32]: Allow to use this file 2001-10-11 Werner Koch * http.c (do_parse_uri): Changed initialization of the port number so that it does also work with x-hkp. By David Shaw. 2001-09-19 Werner Koch * w32reg.c (get_root_key): New. (read_w32_registry_string): Use it here. (write_w32_registry_string): New. Contributed by Timo. * iobuf.c (iobuf_ioctl): New command to disable fd caching. Implemented no_cache flag where needed. (iobuf_sockopen): Always set no_cache flag. * strgutil.c (utf8_to_native): Add a delim arg and changed all callers. Make sure that quoting is done when translation is disabled. * miscutil.c (print_utf8_string2): New. 2001-09-17 Werner Koch * miscutil.c (print_string): Use explicit ranges and not iscntrl(). (make_printable_string): Ditto. 2001-09-07 Werner Koch * strgutil.c (strsep): New, taken from glibc 2.2.1. 2001-09-03 Werner Koch * miscutil.c (strtimestamp,asctimestamp): Avoid trigraphs. 2001-08-21 Stefan Bellon * riscos.c [__riscos__] (close_fds): Fixed possible endless loop. 2001-08-20 Werner Koch Applied patches from Stefan Bellon to support RISC OS. Nearly all of these patches are identified by the __riscos__ macro. * secmem.c [__riscos__]: Disabled secure memory stuff. * dotlock.c, ttyio.c [__riscos__]: Adapted for RISC OS * fileutil.c, iobuf.c: Adapted for RISC OS; mainly replaced hardcoded path separators with EXTSEP_S like macros. * http.c (send_request): Use macros for the env-var name. * logger.c [__riscos__]: Do an fflush at the end of each log function. * memory.c [__riscos__]: Minor patches * riscos.c (set_filetype): New. * secmem.c (lock_pool): Under HPUX mlock is broken but we might have plock, so we use this to lock the entire process. By Albert Chin. 2001-07-03 Werner Koch * strgutil.c (utf8_to_native): Fixed printing of invalid utf-8 characters. Thomas Roessler reported that the escaping didn't work correct. 2001-06-12 Werner Koch * strgutil.c (ascii_memistr,ascii_isupper,ascii_islower, ascii_toupper,ascii_tolower, ascii_strcasecmp, ascii_memcasecmp): New. (set_native_charset): Use ascii_strcasecmp() * fileutil.c (compare_filenames): Ditto * miscutil.c (answer_is_yes): Ditto. (answer_is_yes_no_quit): Ditto. 2001-06-06 Werner Koch * strgutil.c (vasprintf) [__MINGW32__]: New. Taken from libiberty. * ttyio.c (tty_printf) [__MINGW32__]: Replaced the sprintf with the new vasprintf. 2001-06-05 Werner Koch * dotlock.c (make_dotlock): Typo fixes. 2001-05-25 Werner Koch * ttyio.c (do_get): Fixed a serious format string bug. Thanks to fish stiqz. 2001-05-23 Werner Koch * secmem.c (EPERM): Try to work around a Slackware problem. 2001-05-05 Werner Koch * http.c (http_start_data): Flush before writing. (http_wait_response): No need to flush here. 2001-04-27 Werner Koch * memory.c (out_of_core): Print an explanation on reasons why secret memory can get exhausted. 2001-04-23 Werner Koch * http.c (http_wait_response): Implement new flag to inhibit the TCP shutdown. 2001-04-20 Werner Koch * http.c (http_start_data): Use write_server and not the iobuf stuff. I wonder why we are at all using write_server - shouldn't it be handled by iobuf? * strgutil.c (set_native_charset): Allow utf-8 by introducing the new no_translation variable. (native_to_utf8): Handle no_translation. (utf8_to_native): Ditto. 2001-04-19 Werner Koch * miscutil.c (asctimestamp): Handle negative times. We must do this because Windoze segvs on negative times passed to gmtime(). (strtimestamp): Ditto. 2001-04-14 Werner Koch * strgutil.c (utf8_to_native): Fixed a segv. Thanks to Keith Clayton. 2001-04-13 Werner Koch * iobuf.c (iobuf_fopen): Removed because it is not used and furthermore mode is ignored for an fname of "-". Suggested by Florian Weimer. 2001-04-02 Werner Koch * iobuf.c (translate_file_handle): New. Use this function everywhere in this file. (iobuf_translate_file_handle): Always use the osfhandle stuff here because callers don't know the implementation details of iobuf and they expect that the handles are translated. 2001-03-29 Werner Koch * miscutil.c (answer_is_yes): An empty string does now return no. (answer_is_yes_no_quit): Likewise. * iobuf.c (iobuf_close): Burn the buffers. 2001-03-26 Werner Koch * ttyio.c: Define TERMDEVICE depending on OS. * http.c (http_start_data): send a CRLF and not just a LF. Pointed out by Steven Murdoch. 2001-03-13 Werner Koch * iobuf.c (iobuf_sockopen): New. (sock_filter) [__MINGW32__]: New. (iobuf_ioctl): New. (file_filter): Implemented keep_open mode. * http.c (http_open, http_wait_response): Replaced iobuf_fdopen by iobuf_sockopen and use an iobuf_ioctl to avoid the dup(). (deinit_sockets, init_sockets) [__MINGW32__]: New. (connect_server, write_server): Add code to work with W32 sockets. 2001-03-12 Werner Koch * strgutil.c (check_trailing_chars,check_trailing_ws): New. 2001-03-08 Werner Koch * argparse.c (default_strusage): Changed year of printed copyright to 2001. * iobuf.c (fd_cache_invalidate, fd_cache_close, fd_cache_open): New. (direct_open): Invalidate the fd_cache for read access. (file_filter): Cache the close here. (iobuf_open): Use new my_fopen_ro macro to try the cache first. 2001-03-07 Werner Koch * iobuf.c: Made the old stdio file handling cpp conditional controlled by FILE_FILTER_USES_STDIO and added a new open/read/close based one. We don't need the stdio buffering becuase we are doing our own buffering anyway. And it is a prerequesite to allow the use of ReadFile et al for W32 which in turn is needed to make the http stuff work there. The new W32 stuff has also been implemented. Minor changes to all open functions. (direct_open): New. (file_filter): Core of the new read/write handling. (iobuf_get_filelength): Use W32 API function here. But it is currently limited to 2GB files. (iobuf_seek): Ditto. 2001-03-01 Werner Koch * errors.c (g10_errstr): New codes UNU_SECKEY and UNU_PUBKEY. 2000-12-28 Werner Koch * dotlock.c: Made all_lockfiles volatile. (remove_lockfiles): Made public. 2000-11-30 Werner Koch * iobuf.c (iobuf_translate_file_handle): New. (iobuf_open, iobuf_create): Use it for special filenames 2000-11-11 Paul Eggert * iobuf.c (iobuf_get_filelength): Now returns off_t, not u32. Remove kludges to worry about large files; the callers check for files that are too large, and they should already be doing the right thing in an implementation-independent way. (fopen, fstat): Remove macros. * iobuf.c (iobuf_set_limit, iobuf_tell, iobuf_seek): Use off_t, not ulong, for file offsets. (): Include if needed. (LONG_MAX, LONG_MIN): Define a substitute if needed. (fseeko): Define a substitute if needed. * iobuf.c (iobuf_seek): Do not use %lu to report file 2000-11-09 Werner Koch * iobuf.c (iobuf_enable_special_filenames): New. (check_special_filename): New. (iobuf_open): check for special filenames. (iobuf_create): Ditto. 2000-10-23 Werner Koch * secmem.c (lock_pool): Don't print warning for Windows. 2000-10-16 Werner Koch * secmem.c (lock_pool): Fixed error checking for Linux. By James Troup. Thu Sep 14 14:20:38 CEST 2000 Werner Koch * miscutil.c (answer_is_yes_no_quit): Swapped order of yes/no test so that no is returned for an empty input. By David Champion. Wed Sep 6 17:55:47 CEST 2000 Werner Koch * iobuf.c: Use fopen64 insead of fopen when available. (iobuf_get_filelength): Use fstat64 when available but return 2^32-1 if the file is larger than this value. Wed Sep 6 14:59:09 CEST 2000 Werner Koch * secmem.c (secmem_realloc): check for failed secmem_malloc. By Matt Kraai. * strgutil.c (utf8_to_native): Fixed null ptr problem. By Giampaolo Tomassoni. Thu Jul 27 10:02:38 CEST 2000 Werner Koch * iobuf.c: Use setmode() at several places to set stdin and stdout to binary mode for MSDOS based systems * iobuf.c (underflow): Initialize dummy_len to keep memory checker happy. Fri Jun 9 10:09:52 CEST 2000 Werner Koch * ttyio.c: Simulate termios with termios. By Dave Dykstra. Thu Jun 8 20:22:00 CEST 2000 Werner Koch * secmem.c (lock_pool,secmem_init): Additional check for dropped privs. Tue May 30 16:37:55 CEST 2000 Werner Koch * iobuf.c (iobuf_cancel): Fix for MSDOS. Fri Apr 14 19:37:08 CEST 2000 Werner Koch * dotlock.c (disable_dotlock): New. Implmented this in the module. 2000-03-09 14:04:22 Werner Koch (wk@habibti.openit.de) * argparse.c (default_strusage): Changed year of default copyright. Tue Mar 7 18:45:31 CET 2000 Werner Koch * secmem.c (lock_pool): No more warning for QNX. By Sam Roberts. 2000-03-02 15:51:04 Werner Koch (wk@habibti.gnupg.de) * ttyio.c (tty_print_utf8_string): Oops. Thu Mar 2 15:37:46 CET 2000 Werner Koch * ttyio.c (tty_print_utf8_string2): New to allow a max output size. Wed Feb 23 10:07:57 CET 2000 Werner Koch * miscutil.c (asctimestamp): Fix for possible buffer overflow by large system returned date format string. Fri Dec 31 14:08:15 CET 1999 Werner Koch * logger.c (log_inc_errorcount): New. Sat Dec 4 12:30:28 CET 1999 Werner Koch * iobuf.c (iobuf_cancel): Broadcast the new Cancel mesaage to all filters. Mon Nov 22 11:14:53 CET 1999 Werner Koch * strgutil.c (strcasecmp): New. * secmem.c (pool_is_mmapped): Made volatile. Sat Oct 9 20:34:41 CEST 1999 Werner Koch * Makefile.am: Removed libtool. Fri Oct 8 20:32:01 CEST 1999 Werner Koch * w32reg.c: New. * simple-gettext.c: Use the Registry to locate the mo file. * http.c (send_request): Add support for proxys; suggested by Walter Hofmann. (http_open_document): Pass flags to http_open. Fri Sep 17 12:56:42 CEST 1999 Werner Koch * secmem.c (lock_pool): Check for ENOSYS return my mlock() on old SCOs. * ttyio.c (do_get): Replaced #if __MINGW32__ by #ifdef becuase gcc 2.95.1 assigns a floating point value (0.2) to this macro, which in turn can't be used in an expression. Wed Sep 15 16:22:17 CEST 1999 Werner Koch * simple-gettext.c: New. Wed Sep 1 15:30:44 CEST 1999 Werner Koch * argparse.c (arg_parse): Add standard options to the dump-options output. Tue Aug 31 17:20:44 CEST 1999 Werner Koch * strgutil (utf8_to_native): Implemented. (check_utf8_string): Removed. * miscutil.c (make_printable_string): Fixed possible buffer overflow. (print_utf8_string): New. * ttyio.c (tty_print_utf8_string): New. Mon Aug 30 20:38:33 CEST 1999 Werner Koch * secmem.c (pool_okay): declared volatile. * miscutil.c (answer_is_yes): Always check for plain "yes". (answer_is_yes_no_quit): Likewise. * dotlock.c (create_dotlock): Fixed segv during cleanup. Mon Jul 12 14:55:34 CEST 1999 Werner Koch * argparse.c (initialize): Init ret_xxx. (optfile_parse): Remove quotes from arguments. Wed Jul 7 13:08:40 CEST 1999 Werner Koch * memory.c (membug): Use if either M_DEBUG or M_GUARD is used. * miscutil.c (scan_isodatestr): New. * logger.c (g10_log_mpidump): Moved to ../mpi/mpicoder.c (g10_log_print_prefix): Renamed from print_prefix and made global. * Makefile.am: Support for libtool. Thu Jul 1 12:47:31 CEST 1999 Werner Koch * miscutil.c (make_printable_string): New. * strgutil.c (add_to_strlist2,append_to_strlist2): New. Tue Jun 29 21:44:25 CEST 1999 Werner Koch * secmem.c (USE_CAPABILITIES): Capabilities support (Remi). Sat Jun 26 12:15:59 CEST 1999 Werner Koch * dotlock.c (create_dotlock): s/uts/utsbuf/ cause there an Amdahl system with the name UTS (Dave Dykstra). * secmem.c (DEFAULT_POOLSIZE): Doubled the size. Fri Jun 18 00:18:02 CEST 1999 Michael Roth * iobuf.c: file_filter() Detection of EOF on terminals improved/fixed (see Bug #21). Mon Jun 14 21:18:54 CEST 1999 Michael Roth * ttyio.c: tty_no_terminal() new. Sat Jun 5 15:30:33 CEST 1999 Werner Koch * strgutil.c (set_native_charset): Support Latin-2 Tue Jun 1 16:01:46 CEST 1999 Werner Koch * iobuf.c (iobuf_get_real_fname): Made global and now keep a copy of the name in the iobuf struct. Mon May 31 19:41:10 CEST 1999 Werner Koch * iobuf.c (file_filter,block_filter): Speed patches (Rémi). Thu May 27 09:40:55 CEST 1999 Werner Koch * miscutil.c (answer_is_yes_no_quit): New. Sun May 23 14:20:22 CEST 1999 Werner Koch * dotlock.c: Tweaked to make it compile under mingw32 * http.c: Disabled for mingw32. Sat May 22 22:47:26 CEST 1999 Werner Koch * logger.c (log_set_logfile): New. Thu May 20 14:04:08 CEST 1999 Werner Koch * memory.c (membug): Nanu, there was a const instead of a static. * strgutil.c (trim_trailing_chars): New. Mon May 17 21:54:43 CEST 1999 Werner Koch * logger.c (g10_log_hexdump): Made 2nd arg a const. Wed Apr 28 13:03:03 CEST 1999 Werner Koch * miscutil.c (asctimestamp): Use nl_langinfo (Gaël Quéri). Sun Apr 18 10:11:28 CEST 1999 Werner Koch * argparse.c (store_alias): Disabled becuase it is not used. * ttyio.c (tty_batchmode): New Sat Mar 20 11:44:21 CET 1999 Werner Koch * http.c: Swapped to includes. Tue Mar 2 16:44:57 CET 1999 Werner Koch * strgutil.c (get_native_charset): New. Fri Feb 26 17:55:41 CET 1999 Werner Koch * secmem.c (memblock_struct): Force align (Rémi Guyomarch) Wed Feb 24 11:07:27 CET 1999 Werner Koch * iobuf.c (block_filter): Fixed the oscillating partial packet chunks. Fri Feb 19 15:49:15 CET 1999 Werner Koch * iobuf.c (iobuf_push_filter2): New to allow transer of context ownership to the iobuf. Released the context where needed. Tue Feb 16 14:10:02 CET 1999 Werner Koch * strgutil.c (add_to_strglist): Clear the new flags field (append_to_strglist): Ditto. * dotlock.c (read_lockfile): terminate pidstr (Michael). Wed Feb 10 17:15:39 CET 1999 Werner Koch * dotlock.c (remove_lockfiles): Add cleanup function. (make_dotlock): Add deadlock check. * secmem.c (secmem_malloc): Changed error message. Wed Jan 20 21:40:21 CET 1999 Werner Koch * http.c (http_wait_response): Moved the shutdown behind the dup Wed Jan 20 18:59:49 CET 1999 Werner Koch * http.c (send_request): Removed double LF Tue Jan 19 19:34:58 CET 1999 Werner Koch * * iobuf.c (iobuf_push_filter): Allow filters for temp streams (iobuf_write_temp): Ditto. (iobuf_flush_temp): New. (iobuf_unget_and_close_temp): Removed. * http.c (close_http_document): Renamed to http_close(). (open_http_document): Renamed to http_open_document(). (http_open): New. (http_start_data): New. (http_wait_response): New. Sun Jan 17 11:04:33 CET 1999 Werner Koch * strgutil.c (trim_trailing_ws): New. Sat Jan 16 12:03:27 CET 1999 Werner Koch * http.c (connect_server): Fixed stupid bug. Sat Jan 16 09:27:30 CET 1999 Werner Koch * http.c: New Wed Jan 13 14:10:15 CET 1999 Werner Koch * iobuf.c (iobuf_fdopen): New. Sat Jan 9 16:02:23 CET 1999 Werner Koch * secmem.c (lock_pool): add another check that setuid() worked. (secmem_init): Ditto. Thu Jan 7 18:00:58 CET 1999 Werner Koch * iobuf.c (iobuf_clear_eof): Removed. (underflow): Changed the eof handling. (iobuf_pop_filter): Made static and renamed to pop_filter. * iobuf.c (iobuf_read_line): New. Sun Jan 3 15:28:44 CET 1999 Werner Koch * dotlock.c (make_dotlock): print another informal message. (make_dotlock): Removed the cpp checks. Tue Dec 29 14:41:47 CET 1998 Werner Koch * secmem.c: Moved unistd.h out of the #ifdef * dotlock.c (make_dotlock): Sun has no SYS_NMLN * iobuf.c (iobuf_unget_and_close_temp): Reset .start Sat Dec 12 18:40:32 CET 1998 Werner Koch * argparse.c (arg_pars): fixed opts[i] with negative index. Fri Nov 27 21:37:41 CET 1998 Werner Koch * dotlock.c: Implemented Wed Nov 25 11:30:07 1998 Werner Koch (wk@isil.d.shuttle.de) * iobuf.c (iobuf_pop_filter): Fixed sigsegv after error. Thu Nov 19 07:09:55 1998 Werner Koch * miscutil.c (strtimevalue): New. Tue Nov 10 10:01:53 1998 Werner Koch (wk@isil.d.shuttle.de) * strgutil.c (set_native_charset): New. (native_to_utf8): Now handles koi8-r. Tue Nov 3 16:17:56 1998 Werner Koch (wk@isil.d.shuttle.de) * strgutil.c (native_to_utf8): New. (utf8_to_native): New, but only as a stub. * argparse.c (optfile_parse): Trimmed spaces from args. Wed Oct 28 08:01:49 1998 me,,, (wk@tobold) * argparse.c (find_long_option): New. (arg_parse): option=value is now allowed. Add a new internal option "--dump-options". Thu Oct 22 16:25:49 1998 Michael Roth (mroth@nessie.de) * fileutil.c (make_basename): New. (make_dirname): New. Wed Oct 21 12:20:29 1998 Werner Koch (wk@isil.d.shuttle.de) * util.c (iobuf_flush): autoincreasing of a temp. iobuf (iobuf_temp_with_content): New. Tue Oct 13 12:40:13 1998 Werner Koch (wk@isil.d.shuttle.de) * util.c (.nofast): set this variable Wed Oct 7 19:27:50 1998 Werner Koch (wk@isil.d.shuttle.de) * memory.c (m_print_stats): New. Tue Oct 6 09:53:56 1998 Werner Koch (wk@isil.d.shuttle.de) * strgutil.c (memicmp): Add HAVE_MEMICMP. Mon Sep 21 19:45:01 1998 Werner Koch (wk@(none)) * secmem.c: New flags to allow suspend/resume of warnings. Fri Sep 18 16:25:47 1998 Werner Koch (wk@(none)) * secmem.c (lock_pool): Kludge for broken mlock on HPUX 10.20 Tue Sep 15 17:52:21 1998 Werner Koch (wk@(none)) * miscutil.c (asctimestamp): New. Mon Sep 14 09:38:18 1998 Werner Koch (wk@(none)) * secmem.c (init_pool): Now mmaps /dev/zero if we do not have MAP_ANON. Wed Sep 9 13:52:28 1998 Werner Koch (wk@(none)) * ttyio.c (do_get): Ctrl-D is now a valid but special character Mon Sep 7 13:52:41 1998 Werner Koch (wk@(none)) * iobuf.c (get_real_fname): New and changed file_filter datastructures and their initialization. Tue Aug 11 15:12:35 1998 Werner Koch (wk@(none)) * miscutil.c (answer_is_yes): i18ned Sat Aug 8 18:35:00 1998 Werner Koch (wk@(none)) * ttyio.c (cleanup): New. Mon Aug 3 17:06:00 1998 Werner Koch (wk@(none)) * secmem.c (MAP_ANON): Add a macro test Wed Jul 29 14:53:34 1998 Werner Koch (wk@(none)) * ttyio.c (tty_get_answer_is_yes): New. Tue Jul 21 10:35:48 1998 Werner Koch (wk@(none)) * argparse.c: New option flag to distinguish options and commands. Sat Jul 18 19:49:30 1998 Werner Koch (wk@(none)) * argparse.c (arg_parse): Added -? as alias for -h Thu Jul 9 14:47:20 1998 Werner Koch (wk@isil.d.shuttle.de) * secmem.c (secmem_init): Drops setuid if called with 0. Tue Jul 7 11:49:25 1998 Werner Koch (wk@isil.d.shuttle.de) * logger.c (log_set_filename): New. Mon Jul 6 09:03:49 1998 Werner Koch (wk@isil.d.shuttle.de) * strgutil.c (append_to_strlist): New. Thu Jul 2 15:55:44 1998 Werner Koch (wk@isil.d.shuttle.de) * iobuf.c (block_filter): Add writing of OP partial length headers. Fri Jun 26 10:38:35 1998 Werner Koch (wk@isil.d.shuttle.de) * ttyio.c (do_get): all iso8859-1 characters are now allowed. Thu Jun 25 15:57:21 1998 Werner Koch (wk@isil.d.shuttle.de) * secmem.c (lock_pool): Removed left over test code. Wed Jun 10 07:39:41 1998 Werner Koch,mobil,,, (wk@tobold) * fileutil.c (compare_filenames): New. * argparse.c (arg_parse): New flag bit 6 to ignore --version Thu May 14 16:45:13 1998 Werner Koch (wk@isil.d.shuttle.de) * argparse.c (show_help): Add some formatting stuff Fri May 8 17:06:49 1998 Werner Koch (wk@isil.d.shuttle.de) * errors.c (strerror): New if !HAVE_STRERROR Mon May 4 19:48:03 1998 Werner Koch (wk@isil.d.shuttle.de) * iobuf.c (iobuf_read): Code is now faster. * (iobuf_write): ditto. Mon Apr 27 11:01:32 1998 Werner Koch (wk@isil.d.shuttle.de) * strgutil.c (memicmp): New. Thu Mar 19 11:29:03 1998 Werner Koch (wk@isil.d.shuttle.de) * strgutil.c (memistr): Add const to return and first arg. Sat Mar 7 11:54:35 1998 Werner Koch (wk@isil.d.shuttle.de) * miscutil.c (print_string): New arg delim; changed all callers. Thu Mar 5 12:19:30 1998 Werner Koch (wk@isil.d.shuttle.de) * errors.c: New strings. Thu Mar 5 12:06:31 1998 Werner Koch (wk@isil.d.shuttle.de) * iobuf.c (iobuf_open): A name of "-" now opens stdin. * fileutil.c (print_fname_stdout, print_fname_stdin): New. Fri Feb 27 10:20:03 1998 Werner Koch (wk@isil.d.shuttle.de) * memory.c (m_is_secure): Removed. * secmem.c (m_is_secure): Moved to here. * secmem.c (secmem_realloc): New. * memory.c (M_GUARD,EXTRA_ALIGN): New (all functions). Thu Feb 26 14:36:51 1998 Werner Koch (wk@isil.d.shuttle.de) * secmem.c (lock_pool): No error if EAGAIN is returned instead of EPERM. Fri Feb 20 17:43:05 1998 Werner Koch (wk@isil.d.shuttle.de) * ttyio.c [MINGW32]: Add support for mingw32. Tue Feb 17 19:43:44 1998 Werner Koch (wk@isil.d.shuttle.de) * memory.c (dump_table_at_exit): New. Mon Feb 16 10:07:28 1998 Werner Koch (wk@isil.d.shuttle.de) * argparse.c (show_version, show_help, default_strusage): Changed according to GNU standards. Mon Feb 16 08:58:25 1998 Werner Koch (wk@isil.d.shuttle.de) * iobuf.c (iobuf_peek): New Fri Feb 13 19:34:59 1998 Werner Koch (wk@isil.d.shuttle.de) * iobuf.c (iobuf_seek): Set counters to new offset. Fri Feb 13 17:13:04 1998 Werner Koch (wk@isil.d.shuttle.de) * logger.c (log_set_name, log_get_name): New. (print_prefix, pgm_name): New, changed all function to make use it. (log_mpidump): Removed the "DBG" prefix. (log_hexdump): Ditto. * logger.c (printstr): Removed. Fri Feb 13 15:14:13 1998 Werner Koch (wk@isil.d.shuttle.de) * argparse.c (show_help): New '\v' kludge. Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is free software; as a special exception the author gives unlimited permission to copy and/or distribute it, with or without modifications, as long as this notice is preserved. This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY, to the extent permitted by law; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.