1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00
cde/src/cmd/ksh93/data/msg.c
Martijn Dekker a1f5c99204 INIT: remove proto, ratz (re: 46593a89, 6137b99a); major cleanup
This takes another step towards cleaning up the build system. We
now do not even pretend to be theoretically compatible with
pre-1989 K&R C compilers or with C++ compilers. In practice, this
had already been broken for many years due to bit rot.

Commit 46593a89 already removed the license handling enormity that
depended on proto, so now we can cleanly remove it altogether. But
we do need to leave some backwards compatibility stubs to keep the
build system compatible with older AST code; it should remain
possible to build older ksh versions with the current build system
(the bin/ and src/cmd/INIT/ directories) for testing purposes.

So as of now there is no more __MANGLE__d rubbish in your generated
header files. This is only about a quarter of a century overdue...

This commit also includes a huge amount of code cleanup to remove
thousands of unused K&R C fallbacks and other cruft, particularly
in libast. This code base should now be a little easier to
understand for people who are familiar with a modern(ish) C
standard.

ratz is now also removed; this was a standalone and simplified 2005
version of gunzip. As of 6137b99a, none of our code uses it, even
theoretically. And the real g(un)zip is now everywhere.

src/cmd/INIT/proto.c, src/cmd/INIT/ratz.c:
- Removed.

COPYRIGHT:
- Remove zlib license; this only applied to ratz.

bin/package, src/cmd/INIT/package.sh:
- Related cleanups.
- Unset LC_ALL before invoking a new shell, respecting the user's
  locale again and avoiding multibyte character corruption on the
  command line.

src/cmd/INIT/proto.sh:
- Add stub for backwards compatibility with Mamfiles that depend on
  proto. It does nothing but pass input without modification and is
  now installed as the new arch/*/bin/proto by src/cmd/INIT/Mamfile.

src/cmd/INIT/iffe.sh:
- Ignore the proto-related -e (--package) and -p (--prototyped)
  options; keep parsing them for backwards compatibility.
- Trim the macros passed to every test to their standard C
  versions, removing K&R C and C++ versions. These are now
  considered to be for backwards compatibility only.

src/cmd/INIT/iffe.tst:
- Remove proto(1) mangling code.
  By the way, iffe can be regression-tested as follows:
        $ bin/package use   # set up environment in a child shell
        $ regress src/cmd/INIT/iffe.tst
        $ exit              # leave package environment

src/cmd/INIT/make.probe, src/cmd/INIT/probe.win32:
- Remove code to handle C++.

src/lib/libast/features/common:
- As in iffe.sh above, trim macros designed for compatibility with
  C++ and ancient C compilers to their standard C versions and
  comment that they are for backwards compatibility with AST code.
  This is needed to keep all the old ast and ksh code compiling.

src/cmd/ksh93/sh/init.c,
src/cmd/ksh93/sh/name.c:
- Clarify libshell ABI compatibility function versions of macros.
  A "proto workaround" comment in the original code mislead me into
  thinking this had something to do with the removed proto(1), but
  it's unrelated. Call the workaround macro BYPASS_MACRO instead.

src/cmd/ksh93/include/defs.h:
- sh_sigcheck() macro: allow &sh as an argument: parenthesise shp.

src/cmd/ksh93/sh/nvtype.c:
- Remove unused nv_mkstruct() function. (re: d0a5cab1)

**/features/*:
- Remove obsolete iffe 'set prototyped' option.

**/Mamfile:
- Remove all references to the ast/prototyped.h header.
- Remove all use of the proto command. Simply copy instead.

*** 850-ish source files: ***
- Remove all '#pragma prototyped' directives.
- Remove all C++ compat code conditional upon defined(__cplusplus).
- Remove all use of the _ARG_ macro, which on standard C expands to
  its argument:
        #define _ARG_(x)        x
  (on K&R C, it expanded to nothing)
- Remove all use of _BEGIN_EXTERNS_ and _END_EXTERNS_ macros (empty
  on standard C; this was for C++ compatibility)
- Reduce all #if __STD_C (standard code) #else (K&R code) #endif
  blocks to the standard code only, without use of the macro.
- Same for _STD_ macro which seems to have had the same function.
- Change all instances of 'Void_t' to standard 'void'.
2021-12-24 07:05:22 +00:00

209 lines
9.4 KiB
C

/***********************************************************************
* *
* This software is part of the ast package *
* Copyright (c) 1982-2012 AT&T Intellectual Property *
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
* and is licensed under the *
* Eclipse Public License, Version 1.0 *
* by AT&T Intellectual Property *
* *
* A copy of the License is available at *
* http://www.eclipse.org/org/documents/epl-v10.html *
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
* *
* Information and Software Systems Research *
* AT&T Research *
* Florham Park NJ *
* *
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
/*
* UNIX shell
* S. R. Bourne
* Rewritten by David Korn
*
* AT&T Labs
*
*/
#include <ast.h>
#include <errno.h>
#include "defs.h"
#include "path.h"
#include "io.h"
#include "shlex.h"
#include "timeout.h"
#include "history.h"
#include "builtins.h"
#include "jobs.h"
#include "edit.h"
#include "FEATURE/cmds"
/* error messages */
const char e_timewarn[] = "\r\n\ashell will timeout in 60 seconds due to inactivity";
const char e_runvi[] = "\\hist -e \"${VISUAL:-${EDITOR:-vi}}\" ";
const char e_timeout[] = "timed out waiting for input";
const char e_mailmsg[] = "you have mail in $_";
const char e_query[] = "no query process";
const char e_history[] = "no history file";
const char e_histopen[] = "cannot open history file";
const char e_option[] = "%s: bad option(s)";
const char e_optincompat1[] = "%s cannot be used with other options";
const char e_optincompat2[] = "%s cannot be used with %s";
const char e_toomany[] = "open file limit exceeded";
const char e_argtype[] = "invalid argument of type %c";
const char e_oneoperand[] = "one operand expected";
const char e_toomanyops[] = "too many operands";
const char e_formspec[] = "%c: unknown format specifier";
const char e_badregexp[] = "%s: invalid regular expression";
const char e_number[] = "%s: bad number";
const char e_badlocale[] = "%s: unknown locale";
const char e_nullset[] = "%s: parameter null";
const char e_notset[] = "%s: parameter not set";
const char e_noparent[] = "%s: no parent";
const char e_subst[] = "%s: bad substitution";
const char e_create[] = "%s: cannot create";
const char e_tmpcreate[] = "cannot create temporary file";
const char e_restricted[] = "%s: restricted";
#if SHOPT_PFSH
const char e_pfsh[] = "%s: disabled in profile shell";
#endif
const char e_pexists[] = "process already exists";
const char e_exists[] = "%s: file already exists";
const char e_pipe[] = "cannot create pipe";
const char e_alarm[] = "cannot set alarm";
const char e_open[] = "%s: cannot open";
const char e_notseek[] = "%s: not seekable";
const char e_badseek[] = "%s: invalid seek offset";
const char e_badpattern[] = "%s: invalid shell pattern";
const char e_noread[] = "%s: pattern seek requires read access";
const char e_logout[] = "Use 'exit' to terminate this shell";
const char e_exec[] = "%s: cannot execute";
const char e_pwd[] = "cannot access parent directories";
const char e_found[] = "%s: not found";
#ifdef ENAMETOOLONG
const char e_toolong[] = "%s: file name too long";
#endif
const char e_defined[] = "%s: function not defined";
const char e_nointerp[] = "%s: interpreter not found";
const char e_subscript[] = "%s: subscript out of range";
const char e_toodeep[] = "%s: recursion too deep";
const char e_access[] = "permission denied";
#ifdef _cmd_universe
const char e_nouniverse[] = "universe not accessible";
#endif /* _cmd_universe */
const char e_direct[] = "bad directory";
const char e_file[] = "%s: bad file unit number";
const char e_redirect[] = "redirection failed";
const char e_trap[] = "%s: bad trap";
const char e_readonly[] = "%s: is read only";
const char e_badfield[] = "%d: negative field size";
const char e_ident[] = "%s: is not an identifier";
const char e_badname[] = "%s: invalid name";
const char e_varname[] = "%s: invalid variable name";
const char e_badfun[] = "%s: invalid function name";
const char e_aliname[] = "%s: invalid alias name";
const char e_badexport[] = "%s: only simple variables can be exported";
const char e_badref[] = "%s: reference variable cannot be an array";
const char e_badsubscript[] = "%c: invalid subscript in assignment";
const char e_noarray[] = "%s: cannot be an array";
const char e_badappend[] = "%s: invalid append to associative array";
const char e_noref[] = "%s: no reference name";
const char e_nounattr[] = "cannot unset attribute C or A or a";
const char e_selfref[] = "%s: invalid self reference";
const char e_globalref[] = "%s: global reference cannot refer to local variable";
const char e_noalias[] = "%s: alias not found\n";
const char e_format[] = "%s: bad format";
const char e_redef[] = "%s: type cannot be redefined";
const char e_required[] = "%s: is a required element of %s";
const char e_badtformat[] = "%c: bad format character in time format";
const char e_nolabels[] = "%s: label not implemented";
const char e_notimp[] = "%s: not implemented";
const char e_notelem[] = "%.*s: is not an element of %s";
const char e_notenum[] = "%s: not an enumeration type";
const char e_unknowntype[] = "%.*s: unknown type";
const char e_unknownmap[] = "%s: unknown mapping name";
const char e_mapchararg[] = "-M requires argument when operands are specified";
const char e_subcomvar[] = "%s: compound assignment requires sub-variable name";
const char e_badtypedef[] = "%s: type definition requires compound assignment";
const char e_typecompat[] = "%s: array instance incompatible with type assignment";
const char e_nosupport[] = "not supported";
const char e_badrange[] = "%d-%d: invalid range";
const char e_eneedsarg[] = "-e - requires single argument";
const char e_badbase[] = "%s unknown base";
const char e_loop[] = "%s: would cause loop";
const char e_overlimit[] = "%s: limit exceeded";
const char e_badsyntax[] = "incorrect syntax";
const char e_badwrite[] = "write to %d failed";
const char e_staticfun[] = "%s: defined as a static function in type %s and cannot be redefined";
const char is_reserved[] = " is a keyword";
const char is_builtin[] = " is a shell builtin";
const char is_spcbuiltin[] = " is a special shell builtin";
const char is_builtver[] = "is a shell builtin version of";
const char is_alias[] = "%s is an alias for ";
const char is_talias[] = "is a tracked alias for";
const char is_function[] = " is a function";
const char is_ufunction[] = " is an undefined function";
const char e_autoloadfrom[] = " (autoload from %s)";
#ifdef JOBS
# ifdef SIGTSTP
const char e_newtty[] = "Switching to new tty driver...";
const char e_oldtty[] = "Reverting to old tty driver...";
const char e_no_start[] = "Cannot start job control";
# endif /*SIGTSTP */
const char e_no_jctl[] = "No job control";
const char e_terminate[] = "You have stopped jobs";
const char e_done[] = " Done";
const char e_nlspace[] = "\n ";
const char e_running[] = " Running";
const char e_ambiguous[] = "%s: Ambiguous";
const char e_jobsrunning[] = "You have running jobs";
const char e_no_job[] = "no such job";
const char e_no_proc[] = "no such process";
const char e_badpid[] = "%s: invalid process id";
const char e_jobusage[] = "%s: Arguments must be %%job or process ids";
#endif /* JOBS */
const char e_coredump[] = "(coredump)";
const char e_alphanum[] = "[_[:alpha:]]*([_[:alnum:]])";
const char e_devfdNN[] = "/dev/fd/+([0-9])";
const char e_devfdstd[] = "/dev/@(fd/+([0-9])|std@(in|out|err))";
const char e_signo[] = "Signal %d";
/* string constants */
const char e_heading[] = "Current option settings";
const char e_sptbnl[] = " \t\n";
const char e_tolower[] = "tolower";
const char e_toupper[] = "toupper";
const char e_defedit[] = _pth_ed;
const char e_unknown [] = "<command unknown>";
const char e_devnull[] = "/dev/null";
const char e_traceprompt[] = "+ ";
const char e_supprompt[] = "# ";
const char e_stdprompt[] = "$ ";
const char e_profile[] = "$HOME/.profile";
#ifdef BUILD_DTKSH
const char e_sysprofile[] = PROFILEPATH;
const char e_suidprofile[] = SUIDPROFILEPATH;
#else
const char e_sysprofile[] = "/etc/profile";
const char e_suidprofile[] = "/etc/suid_profile";
#endif
#if SHOPT_SYSRC
const char e_sysrc[] = "/etc/ksh.kshrc";
#endif
const char e_prohibited[] = "login setuid/setgid shells prohibited";
#ifdef BUILD_DTKSH
const char e_suidexec[] = SUIDEXECPATH;
#else
#if SHOPT_SUID_EXEC
const char e_suidexec[] = "/etc/suid_exec";
#endif /* SHOPT_SUID_EXEC */
#endif
const char hist_fname[] = "/.sh_history";
const char e_dot[] = ".";
const char e_envmarker[] = "A__z";
const char e_timeformat[] = "\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS";
const char e_dict[] = "libshell";
const char e_funload[] = "function, built-in or type definition for %s not found in %s";