1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
  23  * Use is subject to license terms.
  24  */
  25 
  26 
  27 /*
  28  *      globals.cc
  29  *
  30  *      This declares all global variables
  31  */
  32 
  33 /*
  34  * Included files
  35  */
  36 #include <mksh/globals.h>
  37 
  38 /*
  39  * Defined macros
  40  */
  41 
  42 /*
  43  * typedefs & structs
  44  */
  45 
  46 /*
  47  * Global variables
  48  */
  49 char            char_semantics[CHAR_SEMANTICS_ENTRIES];
  50 wchar_t         char_semantics_char[] = {
  51         ampersand_char,
  52         asterisk_char,
  53         at_char,
  54         backquote_char,
  55         backslash_char,
  56         bar_char,
  57         bracketleft_char,
  58         bracketright_char,
  59         colon_char,
  60         dollar_char,
  61         doublequote_char,
  62         equal_char,
  63         exclam_char,
  64         greater_char,
  65         hat_char,
  66         hyphen_char,
  67         less_char,
  68         newline_char,
  69         numbersign_char,
  70         parenleft_char,
  71         parenright_char,
  72         percent_char,
  73         plus_char,
  74         question_char,
  75         quote_char,
  76         semicolon_char,
  77         nul_char
  78 };
  79 Macro_list      cond_macro_list;
  80 Boolean         conditional_macro_used;
  81 Boolean         do_not_exec_rule;               /* `-n' */
  82 Boolean         dollarget_seen;
  83 Boolean         dollarless_flag;
  84 Name            dollarless_value;
  85 Envvar          envvar;
  86 #ifdef lint
  87 char            **environ;
  88 #endif
  89 int             exit_status;
  90 wchar_t         *file_being_read;
  91 /* Variable gnu_style=true if env. var. SUN_MAKE_COMPAT_MODE=GNU (RFE 4866328) */
  92 Boolean         gnu_style = false;
  93 Name_set        hashtab;
  94 Name            host_arch;
  95 Name            host_mach;
  96 int             line_number;
  97 char            *make_state_lockfile;
  98 Boolean         make_word_mentioned;
  99 Makefile_type   makefile_type = reading_nothing;
 100 char            mbs_buffer[(MAXPATHLEN * MB_LEN_MAX)];
 101 Name            path_name;
 102 Boolean         posix = true;
 103 Name            hat;
 104 Name            query;
 105 Boolean         query_mentioned;
 106 Boolean         reading_environment;
 107 Name            shell_name;
 108 Boolean         svr4 = false;
 109 Name            target_arch;
 110 Name            target_mach;
 111 Boolean         tilde_rule;
 112 Name            virtual_root;
 113 Boolean         vpath_defined;
 114 Name            vpath_name;
 115 wchar_t         wcs_buffer[MAXPATHLEN];
 116 Boolean         working_on_targets;
 117 #if defined (TEAMWARE_MAKE_CMN)
 118 Boolean         out_err_same;
 119 #endif
 120 pid_t           childPid = -1;  // This variable is used for killing child's process
 121                                 // Such as qrsh, running command, etc.
 122 
 123 /*
 124  * timestamps defined in defs.h
 125  */
 126 const timestruc_t file_no_time          = { -1, 0 };
 127 const timestruc_t file_doesnt_exist     = { 0, 0 };
 128 const timestruc_t file_is_dir           = { 1, 0 };
 129 const timestruc_t file_min_time         = { 2, 0 };
 130 const timestruc_t file_max_time         = { INT_MAX, 0 };