74689cbcc0cebbd857a50b155293b82d7403df78al_xipe/*
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe Licensed to the Apache Software Foundation (ASF) under one or more
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe contributor license agreements. See the NOTICE file distributed with
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe this work for additional information regarding copyright ownership.
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe The ASF licenses this file to You under the Apache License, Version 2.0
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe (the "License"); you may not use this file except in compliance with
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe the License. You may obtain a copy of the License at
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe http://www.apache.org/licenses/LICENSE-2.0
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe Unless required by applicable law or agreed to in writing, software
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe distributed under the License is distributed on an "AS IS" BASIS,
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe See the License for the specific language governing permissions and
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe limitations under the License.
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeSET environment variables
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeFirst optional parameter:
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe ; parameters are considered parts of a path variable, semicolons are
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe appended to each element if not already present
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe -D parameters are properties for Java or Makefile etc., -D will be
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe prepended and the parameters will be separated by a space
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe =D the same as above but equal sign is not required
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe , parameters should be comma separated in the environment variable
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe - parameters should be separated by the next parameter
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe Other values mean that the first parameter is missing and the environment
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe variable will be set to the space separated parameters
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeSecond parameter: name of the environment variable
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeNext parameters: values
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe; implies that the equal sign is considered a part of the parameter and is
74689cbcc0cebbd857a50b155293b82d7403df78al_xipenot interpreted
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe-D requires parameters in the form name=value. If the equal sign is not found,
74689cbcc0cebbd857a50b155293b82d7403df78al_xipethe parameters are changed to name=expanded_name
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeOther options have optional equal sign. If it is found, only the part after
74689cbcc0cebbd857a50b155293b82d7403df78al_xipethe equal sign will be oprionally expanded.
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeIf the parameter is the minus sign, the next parameter will not be expanded.
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeIf the parameter is a single dot, it will be replaced with the value of the
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeenvironment variable as it existed before envset was invoked.
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeFor other parameters the batch looks for the environment variable with the
74689cbcc0cebbd857a50b155293b82d7403df78al_xipesame name (in uppercase). If it is found, it forms the expanded_name. If
74689cbcc0cebbd857a50b155293b82d7403df78al_xipethe environment variable with such a name does not exist, the expanded_name
74689cbcc0cebbd857a50b155293b82d7403df78al_xipewill hold the parameter name without case conversion.
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe*/
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeparse arg mode envar args
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeequal = 0
74689cbcc0cebbd857a50b155293b82d7403df78al_xipesep = ' '
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe/* Parse command line parameters */
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeselect
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe when mode='-' then do
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe sep = envar
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe parse var args envar args
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe end
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe when mode=';' then do
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe sep = ''
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe equal = -1
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe end
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe when mode='-D' then equal = 1
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe when mode='=D' then mode = '-D'
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe when mode=',' then sep = ','
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeotherwise
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe args = envar args
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe envar = mode
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe mode = ''
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeend
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeenv = 'OS2ENVIRONMENT'
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeenvar = translate(envar)
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeorig = value(envar,,env)
74689cbcc0cebbd857a50b155293b82d7403df78al_xipenewval = ''
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeexpand = 1
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe/* for each parameter... */
74689cbcc0cebbd857a50b155293b82d7403df78al_xipedo i = 1 to words(args)
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if expand > 0 & word(args, i) = '-' then expand = 0
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe else call addval word(args, i)
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeend
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe/* Optionally enclose path variable by quotes */
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeif mode = ';' & pos(' ', newval) > 0 then newval = '"' || newval || '"'
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe/* Set the new value, 'SET' cannot be used since it does not allow '=' */
74689cbcc0cebbd857a50b155293b82d7403df78al_xipex = value(envar, newval, env)
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeexit 0
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeaddval: procedure expose sep equal orig expand newval mode env
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeparse arg var
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeif var = '.' then expvar = orig
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeelse do
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if equal >= 0 then do
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe parse var var name '=' val
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if val = '' then var = name
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe else var = val
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe end
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if expand = 0 then expvar = var
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe else expvar = value(translate(var),,env)
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if expvar = '' then expvar = var
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if equal >= 0 then do
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if val = '' then do
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe parse var expvar key '=' val
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if val <> '' then name = key
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe else do
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if equal > 0 then val = key
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe else name = key
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe end
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe end
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe else val = expvar
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if pos(' ', val) > 0 | pos('=', val) > 0 then val = '"' || val || '"'
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if val = '' then expvar = name
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe else expvar = name || '=' || val
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe end
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if mode = '-D' then expvar = '-D' || expvar
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if mode = ';' then do
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe if right(expvar, 1) <> ';' then expvar = expvar || ';'
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe end
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeend
74689cbcc0cebbd857a50b155293b82d7403df78al_xipe
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeif newval = '' then newval = expvar
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeelse newval = newval || sep || expvar
74689cbcc0cebbd857a50b155293b82d7403df78al_xipeexpand = 1
74689cbcc0cebbd857a50b155293b82d7403df78al_xipereturn