# BEGIN block(s) BEGIN { _addlib("_BASE") } BEGIN { BINMODE = "rw" SUBSEP = "\000" _NULARR[""] delete _NULARR[""] _INITBASE() } BEGIN { _addlib("_sYS") } BEGIN { _addlib("_rEG") } BEGIN { _addlib("_INSTRUC") } BEGIN { _delay_perfmsdelay = 11500 } BEGIN { _addlib("_ARR") } BEGIN { } BEGIN { _addlib("_EXTFN") } BEGIN { delete _XCHR delete _ASC delete _CHR t = "" for (i = 0; i < 256; i++) { _ASC[a = _CHR[i] = sprintf("%c", i)] = i _QASC[a] = sprintf("%.3o", i) _XCHR[_CHR[i]] = sprintf("%c", (i < 128 ? i + 128 : i - 128)) } for (i = 0; i < 256; i++) { _QSTRQ[_CHR[i]] = "\\" sprintf("%.3o", i) } for (i = 0; i < 32; i++) { _QSTR[_CHR[i]] = _QSTRQ[_CHR[i]] } for (; i < 128; i++) { _QSTR[_CHR[i]] = _CHR[i] } for (; i < 256; i++) { _QSTR[_CHR[i]] = _QSTRQ[_CHR[i]] } _QSTR["\\"] = "\\\\" _CHR["CR"] = "\r" _CHR["EOL"] = "\r\n" _CHR["EOF"] = "\032" _QSTR[_CHR["EOL"]] = "\\015\\012" _CHR["MONTH"][_CHR["MONTH"]["Jan"] = "01"] = "Jan" _CHR["MONTH"][_CHR["MONTH"]["Feb"] = "02"] = "Feb" _CHR["MONTH"][_CHR["MONTH"]["Mar"] = "03"] = "Mar" _CHR["MONTH"][_CHR["MONTH"]["Apr"] = "04"] = "Apr" _CHR["MONTH"][_CHR["MONTH"]["May"] = "05"] = "May" _CHR["MONTH"][_CHR["MONTH"]["Jun"] = "06"] = "Jun" _CHR["MONTH"][_CHR["MONTH"]["Jul"] = "07"] = "Jul" _CHR["MONTH"][_CHR["MONTH"]["Aug"] = "08"] = "Aug" _CHR["MONTH"][_CHR["MONTH"]["Sep"] = "09"] = "Sep" _CHR["MONTH"][_CHR["MONTH"]["Oct"] = "10"] = "Oct" _CHR["MONTH"][_CHR["MONTH"]["Nov"] = "11"] = "Nov" _CHR["MONTH"][_CHR["MONTH"]["Dec"] = "12"] = "Dec" _TAB_STEP_DEFAULT = 8 for (i = 0; i < 32; i++) { _REXPSTR[_CHR[i]] = _QSTRQ[_CHR[i]] } for (; i < 256; i++) { _REXPSTR[_CHR[i]] = _CHR[i] } _gensubfn("\\^$.()|{,}[-]?+*", ".", "_rexpstr_i0") } BEGIN { _addlib("_SYSIO") } BEGIN { _SYS_STDCON = "CON" _CON_WIDTH = (match(_cmd("MODE " _SYS_STDCON " 2>NUL"), /Columns:[ \t]*([0-9]+)/, A) ? strtonum(A[1]) : 80) } BEGIN { _addlib("_FILEIO") } BEGIN { if (_SYS_STDOUT == "") { _SYS_STDOUT = "/dev/stdout" } if (_SYS_STDERR == "") { _SYS_STDERR = "/dev/stderr" } _CHR["SUBDIR"] = "\\" if (_gawk_scriptlevel < 1) { match(b = _cmd("echo %CD% 2>NUL"), /[^\x00-\x1F]*/) ENVIRON["CD"] = _FILEIO_RD = _filerd(substr(b, RSTART, RLENGTH) _CHR["SUBDIR"]) _FILEIO_R = _filer(_FILEIO_RD) _FILEIO_D = _filed(_FILEIO_RD) _setmpath(_filerd(_FILEIO_RD "_tmp" _CHR["SUBDIR"])) } } BEGIN { _addlib("_tOBJ") } BEGIN { _tInBy = "\212._tInBy" _tgenuid_init() _UIDS[""] delete _UIDS[""] _UIDSDEL[""] delete _UIDSDEL[""] _tPREV[""] _tPARENT[""] _tNEXT[""] _tFCHLD[""] _tQCHLD[""] _tLCHLD[""] _tLINK[""] _tCLASS[""] _tSTR[""] _tDLINK[""] _[""] delete _[""] _ptr[""] delete _ptr[""] _TMP0[""] delete _TMP0[""] _TMP1[""] delete _TMP1[""] } BEGIN { _addlib("_ERRLOG") } BEGIN { if (_gawk_scriptlevel < 1) { _ERRLOG_TF = 1 _ERRLOG_VF = 1 _ERRLOG_IF = 1 _ERRLOG_WF = 1 _ERRLOG_EF = 1 _ERRLOG_FF = 1 _wrfile(_errlog_file = _getmpfile("OUTPUT.LOG"), "") } } BEGIN { _addlib("_SHORTCUT") } BEGIN { _shortcut_init() } BEGIN { _addlib("_eXTFN") } BEGIN { _extfn_init() } BEGIN { _addlib("_sHARE") } BEGIN { _addlib("_FILEVER") } BEGIN { _addlib("_DS") _PRODUCT_NAME = "Deployment Solution Control" _PRODUCT_VERSION = "1.0" _PRODUCT_COPYRIGHT = "Copyright (C) 2013 by CosumoGEN" _PRODUCT_FILENAME = "_main.ewk" } BEGIN { _inituidefault() } BEGIN { _initfilever() } BEGIN { _initshare() } BEGIN { _inspass(_IMPORT, "_import_data") } BEGIN { _TEND[_ARRLEN] = 0 _TYPEWORD = "_TYPE" } BEGIN { _ARRLEN = "\032LEN" _ARRPTR = "\032PTR" _ARRSTR = "" } BEGIN { _getperf_fn = "_nop" } BEGIN { _datablock_length = 262144 } BEGIN { _initrdreg() } BEGIN { _initregpath0() } BEGIN { _initsys() } BEGIN { a = ENVIRON["EGAWK_CMDLINE"] gsub(/^[ \t]*/, "", a) a = _lib_CMDLN(a) if (a != "" && ! _LIBAPI["F"]["!"]) { _out(_lib_HELP()) _fatal("Bad comandline argument `" a "'") } gsub(/^[ \t]*/, "", a) ENVIRON["EGAWK_CMDLINE"] = a _lib_APPLY() if (_basexit_fl) { exit } _INIT() _START() _END() } # END block(s) END { _EXIT() } END { if (_gawk_scriptlevel < 1) { close(_errlog_file) p = _Zimport(_rdfile(_errlog_file), _N()) if ((t = _get_errout(p)) != "") { _expout(t, "/dev/stderr") } } } END { if (_gawk_scriptlevel < 1) { if (! _fileio_notdeltmpflag) { _FILEIO_TMPATHS[_FILEIO_TMPRD] _Foreach(_FILEIO_TMPATHS, "_uninit_del") } } } END { if (_constatstrln > 0) { _constat() } } # Functions, listed alphabetically function W(p, p0, p1) { if (isarray(p0)) { delete p0[p] if (isarray(p1)) { for (i in p1) { if (isarray(p1[i])) { p0[p][i][""] delete p0[p][i][""] _N_i0(p0[p][i], p1[i]) } else { p0[p][i] = p1[i] } } return p } return (p0[p] = p1) } delete _[p][p0] if (isarray(p1)) { for (i in p1) { if (isarray(p1[i])) { _[p][p0][i][""] delete _[p][p0][i][""] _N_i0(_[p][p0][i], p1[i]) } else { _[p][p0][i] = p1[i] } } return p } return (_[p][p0] = p1) } function _ARR(c, t, P) { switch (c) { case "_lib_CMDLN": return t case "_lib_APPLY": return case "_lib_HELP": return case "_lib_NAMEVER": return _ln("_ARR 1.0") case "_lib_BEGIN": return case "_lib_END": return } } function _BASE(c, t, P, A) { switch (c) { case "_lib_CMDLN": if (match(t, /^((--([Vv])ersion)|(-([Vv])))[ \t]*/, A)) { t = substr(t, RLENGTH + 1) _cmdln_version = A[3] A[5] } else { if (match(t, /^((-?\?)|(--help))[ \t]*/)) { t = substr(t, RLENGTH + 1) _cmdln_help = 1 } else { if (match(t, /^--[ \t]*/)) { return _endpass(substr(t, RLENGTH + 1)) } } } return t case "_lib_APPLY": if (_cmdln_help) { match(_fbaccr(_LIBAPI, "_lib_HELP"), /^([^\x00]*)\x00([^\x01]*)\x01(.*)/, A) _out(A[2] A[1] A[3]) return _endpass(_basexit_fl = 1) } if (_cmdln_version) { _out(_ln(_PRODUCT_NAME " v" _PRODUCT_VERSION) _ln(_PRODUCT_COPYRIGHT) _ln() ((_cmdln_version == "v" ? "" : _lib_NAMEVER()))) return _endpass(_basexit_fl = 1) } return case "_lib_HELP": return ("\000" _ln(_PRODUCT_NAME " v" _PRODUCT_VERSION) _ln(_PRODUCT_COPYRIGHT) _ln() _ln(" Usage:") _ln() _ln(" " _PRODUCT_FILENAME " [/key1 /key2...] [-- cmdline]") _ln() _ln(" keys:") _ln() "\001" _ln(" -v -V --version - output product version and (if /V) all modules") _ln(" ? -? --help - output this help page") _ln(" -- - command line string edge")) case "_lib_NAMEVER": return _ln("_BASE 3.0") case "_lib_BEGIN": return case "_lib_END": return } } function _DS(c, t, P, a, A) { switch (c) { case "_lib_CMDLN": return t case "_lib_APPLY": return case "_lib_HELP": return (_ln() _ln(" Usage: " _PRODUCT_NAME " [/key1 /key2...] sourcefile [cmdline]") _ln()) case "_lib_NAMEVER": return case "_lib_BEGIN": return case "_lib_END": return } } function _END() { } function _ERRLOG(c, t, P, a, b, A) { switch (c) { case "_lib_CMDLN": if (match(t, /^[ \t]*-L:([TtVvIiWwEeFf]*)[ \t]*/, A)) { t = substr(t, RLENGTH + 1) _errlog_errflkey = _errlog_errflkey A[1] } return t case "_lib_APPLY": if (_errlog_errflkey) { split(_errlog_errflkey, A, "") for (a = 1; a in A; a++) { if (A[a] == toupper(A[a])) { b = 1 } else { b = "" } switch (toupper(A[a])) { case "T": _ERRLOG_TF = b break case "V": _ERRLOG_VF = b break case "I": _ERRLOG_IF = b break case "W": _ERRLOG_WF = b break case "E": _ERRLOG_EF = b break case "F": _ERRLOG_FF = b break } } if (_ERRLOG_IF) { _info("Log-message types inherited acc/deny: " "TRACE " ((_ERRLOG_TF ? "ON" : "OFF")) "/" "VERBOSE " ((_ERRLOG_VF ? "ON" : "OFF")) "/" "INFO " ((_ERRLOG_IF ? "ON" : "OFF")) "/" "WARNING " ((_ERRLOG_WF ? "ON" : "OFF")) "/" "ERROR " ((_ERRLOG_EF ? "ON" : "OFF")) "/" "FATAL " ((_ERRLOG_FF ? "ON" : "OFF"))) } } return case "_lib_HELP": return (_ln(" -L:TtVvIiWwEeFf - enable(upcase: TVIWEF) or disable(lowcase: tviwef) allowable type of") _ln(" log messages. Trace/Verbose/Informational/Warning/Error/Fatal.") _ln()) case "_lib_NAMEVER": return _ln("_ERRLOG 1.0") case "_lib_BEGIN": P["_ERRLOG_TF"] = _ERRLOG_TF P["_ERRLOG_VF"] = _ERRLOG_VF P["_ERRLOG_IF"] = _ERRLOG_IF P["_ERRLOG_WF"] = _ERRLOG_WF P["_ERRLOG_EF"] = _ERRLOG_EF P["_ERRLOG_FF"] = _ERRLOG_FF P["_errlog_file"] = "/dev/stderr" return } } function _EXIT() { } function _EXTFN(c, t, P) { switch (c) { case "_lib_CMDLN": return t case "_lib_APPLY": return case "_lib_HELP": return case "_lib_NAMEVER": return _ln("_EXTFN 1.0") case "_lib_BEGIN": return case "_lib_END": return } } function _FILEIO(c, t, P, A) { switch (c) { case "_lib_CMDLN": if (match(t, /^[ \t]*-[Tt]([\+-])[ \t]*/, A)) { t = substr(t, RLENGTH + 1) if (A[1] == "+") { _fileio_notdeltmpflag = 1 } else { _fileio_notdeltmpflag = "" } } return t case "_lib_APPLY": if (_fileio_notdeltmpflag) { _info("Temporary objects deletion DISABLED (inherited)") } return case "_lib_HELP": return (_ln(" -[Tt][+-] - inherited: +enable\\-disable temporary files\\dirs deletion") _ln()) case "_lib_NAMEVER": return _ln("_FILEIO 2.1") case "_lib_BEGIN": P["ENVIRON"]["CD"] = ENVIRON["CD"] P["_FILEIO_RD"] = _FILEIO_RD P["_FILEIO_R"] = _FILEIO_R P["_FILEIO_D"] = _FILEIO_D if (! ("_FILEIO_TMPRD" in P)) { P["_FILEIO_TMPRD"] = _getmpdir(_filen(P["SOURCE"]) "." ++_egawk_subcntr _CHR["SUBDIR"]) } return case "_lib_END": return } } function _FILEVER(c, t, P, a, A) { switch (c) { case "_lib_CMDLN": return t case "_lib_APPLY": return case "_lib_HELP": return case "_lib_NAMEVER": return case "_lib_BEGIN": return case "_lib_END": return } } function _Foreach(A, f, p0, i) { for (i in A) { @f(A, i, p0) } } function _INIT(f) { } function _INITBASE() { _egawk_utilpath = ENVIRON["EGAWK_PATH"] "BIN\\UTIL\\" } function _INSTRUC(c, t, P) { switch (c) { case "_lib_CMDLN": return t case "_lib_APPLY": return case "_lib_HELP": return case "_lib_NAMEVER": return _ln("_INSTRUC 1.0") case "_lib_BEGIN": return case "_lib_END": return } } function _N(F, v, p) { for (p in _UIDS) { delete _UIDS[p] return _nN_i0(p, F, v) } return _nN_i0(_tgenuid(), F, v) } function _SHORTCUT(c, t, P) { switch (c) { case "_lib_CMDLN": return t case "_lib_APPLY": return case "_lib_HELP": return case "_lib_NAMEVER": return _ln("_shortcut 1.0") case "_lib_BEGIN": return case "_lib_END": return } } function _START(t, i, A) { _torexp_init() test_uid() return _conl(patsplit("a,b,c", A, /[^,]/, B)) test_splitstr() return A[""] _CLASSPTR["ptr"] ALTARR["ptra"] _conl(_dumparr(SYMTAB)) BB[1] = _NOP zorr(1, 2, 3, 4, 5, 6) zorr(BB, 1) _rtn() _rtn("") _rtn(0) _rtn("0") _rtn(1) _rtn("1") _rtn(-1) _rtn("-1") _rtn("huj") _rtn("ptr") _rtn("ptra", ALTARR) _rtn(ALTARR) _rtn(ALTARR, ALTARR) return _tstini() return _splitpath_test() return hh = "CPU" _conl("go1!") _conl(_var(_sharepath(hh, "gdfsgdsgsd sdgsdighjui teretiewrotrewut 345345345 rtjtireutireu huj"))) _conl("go2!") _conl(_var(_sharelist(AAA, hh), _dumparr(AAA))) _conline() A[1] = "h" A[3] = "j" t = "pizda" if (match(t, /^pi(Z)da/, A)) { _conl("match") } else { _conl("not match") } _conl(_dumparr(A)) return _pathSMA = "C:\\Program Files\\Altiris\\Altiris Agent\\" DSPlugInPath = _pathSMA "Agents\\Deployment\\Agent\\" DSAutoPath = _pathSMA if (! _sysinfo(_SYS, _hostname)) { _fatal("_sysinfo: unknown error") } _REG[""] delete _REG[""] _servoutput = _CHR["EOL"] _cmd("sc query state= all") _dsbasepath = "\\\\CPU\\CPU\\DEV\\PROJECT\\_DS\\" _rdreg(_REG, "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris") _wrfile("rego.txt", _dumparr(_REG)) _conl("fF") c = _getreg_i1(DDD, "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\Altiris Agent\\Plugin Objects\\\204~.*\224Install path", _REG) pp = _n("NAME", "NS") p = _defsolution(pp, "DS Plug-in", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\Altiris Agent\\Plugin Objects\\Agents\\") ClientConfiguration = _defdll(p, "Client Configuration", "ClientConfiguration") ClientImagingPrep = _defdll(p, "Client Inaging Preparation", "ClientImagingPrep") ClientImaging = _defdll(p, "Client Imaging", "ClientImaging") ClientPCT = _defdll(p, "Client PCT", "ClientPCT") ClientRebootTo = _defdll(p, "Client Reboot To", "ClientRebootTo") DeploymentAgent = _defdll(p, "Deployment Agent", "Deployment Agent") DeploymentSolutionBaseAgent = _defdll(p, "Deployment Solution Base Agent", "Deployment Solution Base Agent") ClientBCDEdit = _defile(p, "Client BCD Edit", "ClientBCDEdit.dll") ClientCopyFile = _defile(p, "Client Copy File", "ClientCopyFile.dll") ClientPreImage = _defile(p, "Client Pre Image", "ClientPreImage.dll") ClientRebootTo = _defile(p, "Client Reboot To", "ClientRebootTo.dll") _defile(p, "ConfigService.exe", "ConfigService.exe", "") _defile(p, "config.dll", "config.dll", "") _defsrv(p, "DS Plug-in Service", "Altiris Deployment Solution - System Configuration") _defreg(p, "Deployment Agent Path", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\Deployment\\AgentInstallPath.STR") _defile(p, "Altiris_DeploymentSolutionAgent_7_1_x86.msi", (_SYS["OSArchitecture"] == "64-bit" ? "C:\\Program Files\\Altiris\\Altiris Agent\\Agents\\SoftwareManagement\\Software Delivery\\{9D76E4CA-377A-472D-A82E-EDAD77E7E4ED}\\cache\\Altiris_DeploymentSolutionAgent_7_1_x64.msi" : "C:\\Program Files\\Altiris\\Altiris Agent\\Agents\\SoftwareManagement\\Software Delivery\\{4B747D25-612F-48FC-B6B5-9916D1BB755C}\\cache\\Altiris_DeploymentSolutionAgent_7_1_x86.msi"), "") _defdir(p, "Deployment Folder", a = gensub(/[^\\]*$/, "", 1, _rdsafe(_REG, "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\Deployment\\AgentInstallPath.STR", "C:\\Program Files\\Altiris\\Altiris Agent\\Agents\\Deployment\\Agent\\"))) p = _defsolution(pp, "DS Auto", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\Altiris Agent\\Plugin Objects\\Agents\\") _defdir(p, "C:\\Boot\\Altiris\\iso\\boot\\fonts\\", "C:\\Boot\\Altiris\\iso\\boot\\fonts\\") _defdir(p, "C:\\Boot\\Altiris\\iso\\sources\\", "C:\\Boot\\Altiris\\iso\\sources\\") _defile(p, "C:\\Boot\\Altiris\\iso\\autoinst.exe", "C:\\Boot\\Altiris\\iso\\autoinst.exe", "") _defile(p, "C:\\Boot\\Altiris\\iso\\autoinst.ini", "C:\\Boot\\Altiris\\iso\\autoinst.ini", "") _defile(p, "C:\\Boot\\Altiris\\iso\\autoutil.exe", "C:\\Boot\\Altiris\\iso\\autoutil.exe", "") _defile(p, "C:\\Boot\\Altiris\\iso\\autoutil.ini", "C:\\Boot\\Altiris\\iso\\autoutil.ini", "") _defile(p, "C:\\Boot\\Altiris\\iso\\bcdedit.exe", "C:\\Boot\\Altiris\\iso\\bcdedit.exe", "") _defile(p, "C:\\Boot\\Altiris\\iso\\bootmgr", "C:\\Boot\\Altiris\\iso\\bootmgr", "") _defile(p, "C:\\Boot\\Altiris\\iso\\bootsect.exe", "C:\\Boot\\Altiris\\iso\\bootsect.exe", "") _defreg(p, "Deployment Automation reg.File", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\AutoUtil\\File.XSZ", "autoutil.exe") _defreg(p, "Deployment Automation reg.Path", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\AutoUtil\\Path.XSZ", "%systemdrive%\\boot\\altiris\\iso") _check(pp) _conl(_report(pp)) _wrfile("report.txt", _report(pp)) } function _SYSIO(c, t, P) { switch (c) { case "_lib_CMDLN": return t case "_lib_APPLY": return case "_lib_HELP": return case "_lib_NAMEVER": return _ln("_SYSIO 1.0") case "_lib_BEGIN": return case "_lib_END": return } } function _W(p, A, v) { if (isarray(v)) { if (p) { delete A[p] A[p][""] delete A[p][""] _movarr(A[p], v) } return p } if (p) { delete A[p] return (A[p] = v) } return v } function _Zexparr(S, s, t, i) { t = "" if (isarray(S)) { for (i in S) { t = t ((isarray(S[i]) ? _Zexparr_i1(i) "\020" _Zexparr_i0(S[i]) "\021\021\020" : _Zexparr_i2(_Zexparr_i3(i) "\021" _Zexparr_i3(S[i])) "\020")) } } if (s != "") { gsub(/\x1B/, "\033;", s) gsub(/\x10/, "\0330", s) t = t "\021\021\020" s } gsub(/\x0A/, "\033:", t) return t } function _Zexparr_i0(S, t, i) { for (i in S) { t = t ((isarray(S[i]) ? _Zexparr_i1(i) "\020" _Zexparr_i0(S[i]) "\021\021\020" : _Zexparr_i2(_Zexparr_i3(i) "\021" _Zexparr_i3(S[i])) "\020")) } return t } function _Zexparr_i1(t) { gsub(/\x1B/, "\033;", t) gsub(/\x11/, "\0331", t) gsub(/\x10/, "\0330", t) return t } function _Zexparr_i2(t) { gsub(/\x10/, "\0330", t) return t } function _Zexparr_i3(t) { gsub(/\x1B/, "\033;", t) gsub(/\x11/, "\0331", t) return t } function _Zimparr(D, t, A, B) { if (isarray(D)) { split(t, A, /\x10/, B) t = _Zimparr_i0(A, B, _Zimparr_i1(D, A, B, 1)) gsub(/\x1B\x30/, "\020", t) gsub(/\x1B\x3B/, "\033", t) return t } } function _Zimparr_i0(A, B, i) { return ((i in A ? A[i] B[i] _Zimparr_i0(A, B, i + 1) : "")) } function _Zimparr_i1(D, A, B, i, t, a, n) { while (i in B) { if ((t = A[i++]) == "\021\021") { return i } gsub(/\x1B\x30/, "\020", t) if ((a = index(t, "\021")) > 0) { if (isarray(D[n = _Zimparr_i2(substr(t, 1, a - 1))])) { delete D[n] } D[n] = _Zimparr_i2(substr(t, a + 1)) } else { if (! isarray(D[t = _Zimparr_i2(t)])) { delete D[t] D[t][""] delete D[t][""] } i = _Zimparr_i1(D[t], A, B, i) } } } function _Zimparr_i2(t) { gsub(/\x1B\x31/, "\021", t) gsub(/\x1B\x3B/, "\033", t) return t } function _Zimport(t, p, A, c, i, n, B) { if (p) { c = split(t, B, /\x0A/) for (i = 1; i <= c; i++) { if ((t = B[i]) == "") { continue } gsub(/\x1B\x3A/, "\n", t) if (match(t, /^_ERRLOG: /)) { _tLOG[n = _wLCHLD(p, _N())][""] delete _tLOG[n][""] _Zimparr(_tLOG[n], substr(t, 10)) } else { if ((t = _pass(_IMPORT, t, p, A)) != "") { gsub(/\x1B\x3B/, "\033", t) _wLCHLD(p, _N(_tSTR, t)) } } } return p } else { _expout(t) } } function _acc(A, a, t) { if (t) { if (_VLDMAXSTRING < length(t) + length(a)) { if (a) { if (_VLDMAXSTRING < length(t)) { A[--A[_ARRPTR]] = a A[--A[_ARRPTR]] = t } else { A[--A[_ARRPTR]] = a t } } else { A[++A[_ARRLEN]] = t } return "" } return (a t) } return a } function _accmpu(A, a, n) { if (n) { return (_mpufn0 = n) } if (_mpuacc) { if (_VLDMAXSTRING < length(_mpuacc) + length(a)) { if (a) { if (_VLDMAXSTRING < length(_mpuacc)) { A[--A[_ARRLEN]] = a A[--A[_ARRLEN]] = _mpuacc } else { A[--A[_ARRLEN]] = a _mpuacc } } else { A[--A[_ARRLEN]] = _mpuacc } _mpuacc = "" } else { _mpuacc = a _mpuacc } } else { _mpuacc = a } } function _add(S, sf, D, df) { if (sf in S) { if (isarray(S[sf])) { if (df in D) { if (isarray(D[df])) { return _extarr(D[df], S[sf]) } delete D[df] } D[df][""] delete D[df][""] return _extarr(D[df], S[sf]) } else { if (isarray(D[df])) { delete D[df] } D[df] = D[df] S[sf] } } } function _addarr(D, S) { if (isarray(S)) { _addarr_i0(D, S) } } function _addarr_i0(D, S, i) { for (i in S) { if (isarray(S[i])) { delete D[i] D[i][""] delete D[i][""] _addarr_i0(D[i], S[i]) } else { delete D[i] D[i] = S[i] } } } function _addarrmask(D, S, M) { for (_addarrmaski0 in M) { if (_addarrmaski0 in S) { if (isarray(S[_addarrmaski0])) { if (! isarray(D[_addarrmaski0])) { delete D[_addarrmaski0] D[_addarrmaski0][""] delete D[_addarrmaski0][""] } if (isarray(M[_addarrmaski0])) { _addarrmask(D[_addarrmaski0], S[_addarrmaski0], M[_addarrmaski0]) } else { _extarr_i0(D[_addarrmaski0], S[_addarrmaski0]) } } else { if (isarray(D[_addarrmaski0])) { delete D[_addarrmaski0] } D[_addarrmaski0] = S[_addarrmaski0] } } else { delete D[_addarrmaski0] } } } function _addf(A, f) { A["B"][""] = A["F"][A["B"][f] = A["B"][""]] = f } function _addfile(f, d, a, b) { if ((f = _wfilerdnehnd(f)) == "" || _filene(f) == "") { ERRNO = "Filename error" return } a = BINMODE BINMODE = "rw" b = ORS ORS = "" ERRNO = "" print(d) >> f if (ERRNO) { return "" } close(f) BINMODE = a ORS = b if (ERRNO) { return "" } return d } function _addlib(f) { _addf(_LIBAPI, f) } function _addlist(A, v) { A[++A[0]] = v } function _bearray(A) { if (isarray(A) || A == 0 && A == "") { return 1 } } function _bframe(A, t, p) { return _bframe_i0(A, t, p, A[""]) } function _bframe_i0(A, t, p, f) { return ((f ? _bframe_i0(A, t, p, A[f]) (@f(t, p)) : "")) } function _cfguid(p, optr, pfx, sfx, hstrcnt, lstrchr) { delete _UIDOBL[p] if (_isptr(optr)) { if (optr == p) { delete _UIDOBLV[p] delete _UIDOBLV[_UIDOBLV[_UIDOBL[p] = p][""] = p][""] } else { if (optr in _UIDOBL) { _UIDOBL[p] = _UIDOBL[optr] } } } _UIDPFX[p] = (_istr(pfx) ? pfx : "") _UIDSFX[p] = (_istr(sfx) ? sfx : "") if (_isptr(hstrcnt)) { if (hstrcnt != p) { _UIDCHR[p] = _UIDCHR[_UIDCNT[p] = _UIDCNT[hstrcnt]] return p } hstrcnt = _NOP } _UIDCNTL[_UIDCNT[p] = p] = _cfguidchr(p, hstrcnt, lstrchr) return p } function _cfguidchr(p, h, l, H, L) { if (_isptr(l)) { if (l != p) { return (_UIDCHR[p] = _UIDCHR[l]) } _UIDCHR[p] = p l = _NOP } _UIDCHR[p] = p _splitstr(H, h, _UIDCHRH[_classys]) _splitstr(L, l, H) delete _UIDCHRH[_UIDCHRH[p][""] = p][""] delete _UIDCHRL[_UIDCHRL[p][""] = p][""] _cfguidh(p, H, L) return _cfguidl(p, L, L) } function _cfguidh(p, H, L, hi, h, li) { for (hi = 1; hi in H; hi++) { h = H[hi] for (li = 1; li in L; li++) { _UIDCHRH[p][h L[li]] } } } function _cfguidl(p, H, L, hi, h, hl, li) { for (hi = 1; hi in H; hi++) { h = H[hi] for (li = 1; li in L; li++) { hl = _UIDCHRL[p][hl] = h L[li] } } return hl } function _check(p) { _dll_check(p) _file_check(p) _serv_check(p) _reg_check(p) } function _chrline(t, ts, w, s) { return ((t = " " _tabtospc(t, ts) ((t ? (t ~ /[ \t]$/ ? "" : " ") : ""))) _getchrln((s ? s : "_"), ((w ? w : _CON_WIDTH - 1)) - length(t)) _CHR["EOL"]) } function _cmd(c, i, A) { _fio_cmda = RS RS = ".{1,}" _fio_cmdb = BINMODE BINMODE = "rw" ERRNO = RT = _NUL c | getline RS BINMODE = _fio_cmdb RS = _fio_cmda if (ERRNO || 0 > (_exitcode = close(c))) { return (RT = _NOP) } return RT } function _cmparr(A0, A1, R, a, i) { a = 0 delete R for (i in A0) { if (! (i in A1)) { a++ R[i] = 0 } else { if (A0[i] != A1[i]) { a++ R[i] = 2 } } } for (i in A1) { if (! (i in A0)) { a++ R[i] = 1 } } return a } function _con(t, ts, a, b, c, d, i, r, A, B) { d = RLENGTH if ((c = split(r = t, A, /\x0D?\x0A/, B)) > 0) { a = BINMODE b = ORS BINMODE = "rw" ORS = "" if (c > 1) { if ((i = length(t = _tabtospc(A[1], ts, _conlastrln))) < _constatstrln) { t = t _getchrln(" ", _constatstrln - i) } print(t B[1]) > _SYS_STDCON for (i = 2; i < c; i++) { print(_tabtospc(A[i], ts) B[i]) > _SYS_STDCON } print(_conlastr = _tabtospc(A[c], ts)) > _SYS_STDCON fflush(_SYS_STDCON) } else { print(t = _tabtospc(t, ts, _conlastrln)) > _SYS_STDCON fflush(_SYS_STDCON) _conlastr = _conlastr t } if ((i = length(_conlastr)) >= _CON_WIDTH) { _conlastr = substr(_conlastr, 1 + int(i / _CON_WIDTH) * _CON_WIDTH) } _conlastrln = length(_conlastr) if (_constatstr) { print((t = _constatgtstr(_constatstr, _CON_WIDTH - 1 - _conlastrln)) _CHR["CR"] _conlastr) > _SYS_STDCON fflush(_SYS_STDCON) _constatstrln = length(t) } BINMODE = a ORS = b RLENGTH = d return r } RLENGTH = d } function _conin(t, a, b) { _constatpush() _constat() a = BINMODE b = RS BINMODE = "rw" RS = "\n" _con(t) getline t < "CON" close("CON") _conlastrln = 0 _conlastr = "" gsub(/[\x0D\x0A]+/, "", t) BINMODE = a RS = b _constatpop() return t } function _conl(t, ts) { return _con(t ((t ~ /\x0A$/ ? "" : _CHR["EOL"])), ts) } function _conline(t, ts) { return _con(_chrline(t, ts)) } function _conlq(t, ts) { return _conl("`" t "'", ts) } function _constat(t, ts, ln, a) { if (_constatstrln > (ln = length(t = _constatgtstr(_constatstr = _tabtospc(t, ts), _CON_WIDTH - 1 - _conlastrln)))) { t = t _getchrln(" ", _constatstrln - ln) } _constatstrln = ln ln = ORS a = BINMODE BINMODE = "rw" ORS = "" print(t _CHR["CR"] _conlastr) > _SYS_STDCON fflush(_SYS_STDCON) ORS = ln BINMODE = a return _constatstr } function _constatgtstr(t, ln, a, b) { if (ln < 1) { return "" } if ((a = length(t)) <= ln) { return t } if (ln < 11) { return substr(t, a - ln + 1) } if (ln < 19) { return ("..." substr(t, a - ln + 4)) } return (substr(t, 1, b = int((ln - 3) / 2)) "..." substr(t, a - ln + b + 4)) } function _constatpop() { if (_CONSTATPUSH[0] > 0) { return _constat(_CONSTATPUSH[_CONSTATPUSH[0]--]) } return _constat("") } function _constatpush(t, ts) { _CONSTATPUSH[++_CONSTATPUSH[0]] = _constatstr if (t) { _constat(t, ts) } return _constatstr } function _creport(p, t, f, z) { _[p]["REPORT"] = _[p]["REPORT"] _ln(t ((f == "" ? "" : ": " f))) } function _defdir(pp, n, f, v, p) { _[p = _wLCHLD(pp, _n("TYPE", "defdir"))]["NAME"] = n _[p]["DIR"] = f return p } function _defdll(pp, n, rn, p) { _[p = _wLCHLD(pp, _n("TYPE", "defdll"))]["NAME"] = n _[p]["REGPATH"] = _[pp]["REGPATH"] rn _[p]["ERRHOST"] = pp return p } function _defescarr(D, r, S, i, c, t) { if (isarray(S)) { for (i = 0; i < 256; i++) { if ((c = _CHR[i]) ~ r) { D[c] = "\\" S[c] t = t c } else { if (D[c] == "") { D[c] = c } } } } else { for (i = 0; i < 256; i++) { if ((c = _CHR[i]) ~ r) { D[c] = S c if (S != "") { t = t c } } else { if (D[c] == "") { D[c] = c } } } } return t } function _defile(pp, n, f, v, p) { _[p = _wLCHLD(pp, _n("TYPE", "defile"))]["NAME"] = n _[p]["FILE"] = f if (! (v == 0 && v == "")) { _[p]["RQVERSION"] = v } return p } function _defn(f, c, v) { FUNCTAB[c f] = v } function _defreg(pp, n, f, v, p) { _[p = _wLCHLD(pp, _n("TYPE", "defreg"))]["NAME"] = n _[p]["REGPATH"] = f if (! (v == 0 && v == "")) { _[p]["VALUE"] = v } } function _defsolution(pp, n, rn, p) { _[p = _wLCHLD(pp, _n("TYPE", "solution"))]["NAME"] = n _[p]["REGPATH"] = rn _[p]["ERRHOST"] = pp return p } function _defsrv(pp, n, f, v, p) { _[p = _wLCHLD(pp, _n("TYPE", "defsrv"))]["NAME"] = n _[p]["SERVNAME"] = f return p } function _del(f, c, a, A) { if (match(f, /\\[ \t]*$/)) { if ((c = toupper(_filerd(f))) && length(f) == FLENGTH) { _cmd("rd " c " /S /Q 2>NUL") _deletepfx(_WFILEROOTDIR, c) _deletepfx(_FILEIO_RDTMP, c) _deletepfx(_FILEIO_RDNETMP, c) } else { _conl("HUJ TEBE!") return "" } } else { a = _dir(A, f) _cmd("del " f " /Q 2>NUL") for (c in A) { if (c ~ /\\$/) { _cmd("rd " c " /S /Q 2>NUL") _deletepfx(_WFILEROOTDIR, c) _deletepfx(_FILEIO_RDTMP, c) } _deletepfx(_FILEIO_RDNETMP, c) } } return a } function _delay(t, a) { for (a = 1; a <= t; a++) { _delayms() } } function _delayms(a) { for (a = 1; a <= _delay_perfmsdelay; a++) { } } function _deletepfx(A, f, B, le, i) { le = length(f) for (i in A) { if (substr(toupper(i), 1, le) == f) { B[i] = A[i] delete A[i] } } } function _delf(A, f) { A["B"][A["F"][A["B"][f]] = A["F"][f]] = A["B"][f] delete A["F"][f] delete A["B"][f] } function _deluid(p) { if (p in _CLASSPTR) { _deluida0 = _CLASSPTR[p] if (_deluida0 in _UIDOBL) { _UIDOBLV[_UIDOBL[_deluida0]][p] } } delete _CLASSPTR[p] return _deluida0 } function _dir(A, rd, i, r, f, ds, pf, B, C) { delete A gsub(/(^[ \t]*)|([ \t]*$)/, "", rd) if (rd == "") { return "" } i = split(_cmd("dir \"" rd "\" 2>NUL"), B, /\x0D?\x0A/) - 3 pf = (match(B[4], /Directory of ([^\x00-\x1F]+)/, C) ? C[1] ((C[1] ~ /\\$/ ? "" : "\\")) : "") for (r = 0; i > 5; i--) { if (match(B[i], /^([^ \t]*)[ \t]+([^ \t]*)[ \t]+(()|([0-9\,]+))[ \t]+([^\x00-\x1F]+)$/, C)) { if (C[6] !~ /^\.\.?$/) { if (C[4]) { ds = "D " } else { ds = C[5] " " gsub(/\,/, "", ds) } if ((f = _filepath(pf C[6] ((C[4] ? "\\" : "")))) != "") { A[f] = ds C[1] " " C[2] r++ } } } } return r } function _dirtree(A, f, B) { gsub(/(^[ \t]*)|([ \t]*$)/, "", f) delete A A[""] delete A[""] _dirtree_i0(B, 8, split(_cmd("dir \"" f "\" /-C /S 2>NUL"), B, /\x0D?\x0A/), A, f = _filerd(f)) return f } function _dirtree_i0(B, i, c, A, f, lf, a, C) { delete A[f] A[f][0] delete A[f][0] lf = length(f) for (; i <= c; ) { if (match(B[i], /^[ \t]*Directory of (.+)/, C)) { if (substr(a = _filerd(C[1] "\\"), 1, lf) == f) { i = _dirtree_i0(B, i + 4, c, A[f], a) } else { return i } } else { if (match(B[i++], /^([^ \t\-]+)\-([^ \t\-]+)\-([^ \t]+)[ \t]+([^ \t]+)[ \t]+([0-9]+)[ \t]+(.+)$/, C)) { A[f][f C[6]] = C[5] " " C[1] "/" _CHR["MONTH"][C[2]] "/" C[3] " " C[4] } } } return i } function _dll_check(pp) { _dllchktv = "" _missfl = 1 _tframe("_dll_check_i0", pp, _REG, pp) if (1 || "AGENT" in _[pp]) { if (_dllchktv != _[pp][".Product Version"]) { _dllerr(_[pp]["AGENT"], "agent version (" _[pp][".Product Version"] ") do not match all lib versions: " _dllchktv "'") } } else { if (! _missfl) { _creport(pp, "agent not detected in registry") } else { _dllerr(pp, "agent not detected in registry but some registry entries exist:") _tframe("_dll_check_i1", pp, pp) } } } function _dll_check_i0(p, R, pp, p2, i, i2, r, f, v, rs, d, tv, tf) { if (_[p]["TYPE"] == "defdll") { r = toupper(_[p]["REGPATH"]) rs = 0 tf = 0 tv = "" for (i in R) { if (toupper(substr(i, 1, length(r))) == r) { if ((_chka0 = substr(i, 1 + length(r), 1)) == "" || _chka0 == "\\") { rs = 1 _missfl = 1 _[p]["." substr(gensub(/\....$/, "", 1, i), i2 = 2 + length(r), length(i) - i2 + 1)] = R[i] if (chka0 != "") { rs = 1 } } } } if (rs) { if ((i = ".Install Path") in _[p] && (i = ".Product Version") in _[p]) { _[p]["STATUS"] = "PRESENT" f = _[p][".Install Path"] v = _[p][".Product Version"] if (! (".Module" in _[p])) { _[pp][".Product Version"] = v _VAR["HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\Deployment\\AgentInstallPath.STR"] = f _[pp]["AGENT"] = p _creport("OK: DLL DETECTED(" v "): " substr(_[p]["NAME"], 1, 112)) } else { if (_dllchktv == "") { _dllchktv = v } else { if (v != _dllchktv) { return _dllerr(p, "different versions detected: " _dllchktv "!=" v "'") } } ERRNO = "" if (_th1(_[p]["DATA"] = _rdfile(f), ERRNO)) { delete _[p]["DATA"] return _dllerr(p, "read lib: " ERRNO, f) } if (v != (_[p]["VERSION"] = _getfilever(f))) { return _dllerr(p, "library file version mismatch: ==`" _[p]["VERSION"] "'; !=`" v "'", f) } _creport(p, "OK: LIBRARY DETECTED(" v "): " substr(f, 1, 100)) } } else { tf = 1 _dllerr(p, "registry corrupt: `" i "' not present") } } else { _[p]["STATUS"] = "MISSED" } } } function _dll_check_i1(p, pp, p1, p2, p3, i) { if (_[p]["TYPE"] == "defdll") { for (i in _[p]) { if (i ~ /^\./) { _dllerr(pp, " " _[p]["REGPATH"] "\\" substr(i, 2)) } } } } function _dllerr(p, t, f) { if (t !~ /\x00/) { t = "ERROR: \000" t } _errfl = 1 _[p]["ERROR"] = _[p]["ERROR"] _ln(t ((f == "" ? "" : ": " f))) } function _drawuid(p, cn, ch, o) { _conl("uid: " p) _conl("\toblptr: " ((p in _UIDOBL ? _UIDOBL[p] "'" : "-"))) if (p in _UIDOBL) { if (! _isptr(o = _UIDOBL[p])) { _conl(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> oblptr not pointer") } if (! isarray(_UIDOBLV[o])) { _conl(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> no OBLV array at ptr") } } _conl("\tprefix: " ((p in _UIDPFX ? _UIDPFX[p] "'" : "-"))) _conl("\tsuffix: " ((p in _UIDSFX ? _UIDSFX[p] "'" : "-"))) _conl("\tcounters: " (cn = (p in _UIDCNT ? _UIDCNT[p] "'" : "-"))) if (cn != "-") { _conl("\t\tcntrL: " _UIDCNTL[_UIDCNT[p]] "'") _conl("\t\tcntrH: " _UIDCNTH[_UIDCNT[p]] "'") } _conl("\tcharset: " (ch = (p in _UIDCHR ? _UIDCHR[p] "'" : "-"))) if (ch != "-") { _conl("chrH: ") _conl(_dumparr(_UIDCHRH[_UIDCHR[p]])) _conl() _conl("chrL: ") _conl(_dumparr(_UIDCHRL[_UIDCHR[p]])) _conl() } } function _dumparr(A, t, lv, a) { b = PROCINFO["sorted_in"] PROCINFO["sorted_in"] = "_lengthsort" if (isarray(A)) { delete _DUMPARR _dumparrc = _dumparrd = "" _dumparr_i1(A, lv = ((lv == "" ? 16 : (lv == 0 || lv + 0 != 0 ? lv : (lv == "-*" ? -3 : (lv ~ /^\+?\*$/ ? 3 : 16))))) + 0, (lv < 0 ? -1 : 1), 0, _tabtospc(t)) PROCINFO["sorted_in"] = a return _retarrd(_DUMPARR, _dumparrd, _dumparrd = "") } } function _dumparr_i1(A, lv, ls, ln, t, t2, i, a, f) { t2 = _getchrln(" ", length(t)) if (ln == lv) { if (ls > 0) { for (i in A) { ++a } } else { for (i in A) { (isarray(A[i]) ? ++a : "") } } if (length(_dumparrd = _dumparrd t ((a > 0 ? " ... (x" a ")" : "")) _CHR["EOL"]) > 262144) { _DUMPARR[++_dumparrc] = _dumparrd _dumparrd = "" } return } if (ls >= 0) { for (i in A) { if (! isarray(A[i])) { if (length(_dumparrd = _dumparrd ((f ? t2 : t _nop(f = 1))) "[" i "]=" A[i] "'" _CHR["EOL"]) > 262144) { _DUMPARR[++_dumparrc] = _dumparrd _dumparrd = "" } } } } for (i in A) { if (isarray(A[i])) { _dumparr_i1(A[i], lv, ls, ln + ls, _th0((f ? t2 : t), f = 1) "[" i "]") } } if (! f) { if (length(_dumparrd = _dumparrd t _CHR["EOL"]) > 262144) { _DUMPARR[++_dumparrc] = _dumparrd _dumparrd = "" } } } function _dumpobj(p, f, t, s) { s = _dumpobj_i0(p, f, t = t "." p "{") if (p = _rFCHLD(p)) { return (s = s _dumpobjm(p, f, (s ? _getchrln(" ", length(t) - 1) : t " "))) } return s } function _dumpobj_i0(p, f, t) { if (f == "") { return _dumpobj_i2(p, t) } if (f == 0) { return _dumpobj_i1(p, t " ") } return (_dumpobj_i1(p, t " ") _dumpobj_i2(p, _getchrln(" ", length(t)))) } function _dumpobj_i1(p, t) { return _ln(t substr(((p in _tPREV ? "\253" _tPREV[p] : "")) " ", 1, 7) " " substr(((p in _tPARENT ? "\210" _tPARENT[p] : "")) " ", 1, 7) " " substr(((p in _tFCHLD ? _tFCHLD[p] : "")) "\205" ((p in _tQCHLD ? " (" _tQCHLD[p] ") " : "\205")) "\205" ((p in _tLCHLD ? _tLCHLD[p] : "")) " ", 1, 22) substr(((p in _tNEXT ? "\273" _tNEXT[p] : "")) " ", 1, 8)) } function _dumpobj_i2(p, t) { return (_dumpobj_i3(_[p], t " ") _dumpobj_i3(_ptr[p], _getchrln(" ", length(t)) "`", "`")) } function _dumpobj_i3(A, t, p, e, s, i, t2) { if (isarray(A)) { for (i in A) { t2 = _getchrln(" ", length(t)) for (i in A) { if (isarray(A[i])) { s = s _dumpobj_i3(A[i], t "[" _dumpobj_i4(i) "]", p, _ln()) } else { s = s _ln(t "[" _dumpobj_i4(i) "]=" p _dumpobj_i4(A[i]) "'") } t = t2 } return s } return ((e == "" ? "" : t e)) } if (A == 0 && A == "") { return } return _ln(t "=" _dumpobj_i4(p A) "'") } function _dumpobj_i4(t) { if (length(t) > 64) { return (substr(t, 1, 28) " ... " substr(t, length(t) - 28)) } return t } function _dumpobj_nc(p, f, t) { return _dumpobj_i0(p, f, t "." p "{ ") } function _dumpobjm(p, f, t, s, t2) { t2 = _getchrln(" ", length(t)) do { s = s _dumpobj(p, f, t) t = t2 } while (p = _rNEXT(p)) return s } function _dumpobjm_nc(p, f, t, s, t2) { t2 = _getchrln(" ", length(t)) do { s = s _dumpobj_nc(p, f, t) t = t2 } while (p = _rNEXT(p)) return s } function _dumpuidgen(p, pd, pc, ps) { _conline("#" ++cntdm ": " p "'") _conl() if (p in _tuidel) { _conl("DEL: " _var(pd = _tuidel[p])) _conl(_dumparr(_tUIDEL[pd]) _ln()) } _conl("PFX: " _tUIDPFX[p] "'") _conl("SFX: " _tUIDSFX[p] "'") _conl("COUNT: " ((p in _tuidcnt ? (pc = _tuidcnt[p]) "'" : _th0("-", pc = -2)))) _con("CHARS: ") if (p in _tuidchr) { _conl((ps = _tuidchr[p]) "'") _conl("HCHR: " ((pc == -2 ? "-" : _tUIDCNTH[pc] "'"))) _conl(_dumparr(_tUIDCHRH[ps]) _ln()) _conl("LCHR: " ((pc == -2 ? "-" : _tUIDCNTL[pc] "'"))) _conl(_dumparr(_tUIDCHRL[ps]) _ln()) } else { _conl("-") } } function _dumpval(v, n) { _dumpstr = _dumpstr (v = _ln(((n == 0 && n == "" ? "RET" : n)) ": " ((v == 0 && v == "" ? "-" : v "'")))) return v } function _eXTFN(c, t, P) { switch (c) { case "_lib_CMDLN": return t case "_lib_APPLY": return case "_lib_HELP": return case "_lib_NAMEVER": return _ln("_extfn 1.0") case "_lib_BEGIN": return case "_lib_END": return } } function _endpass(t) { _endpass_v0 = t } function _err(t, a, b) { a = BINMODE b = ORS BINMODE = "rw" ORS = "" print(t) > _SYS_STDERR fflush(_SYS_STDERR) BINMODE = a ORS = b return t } function _errnl(t) { return _err(t ((t ~ /\x0A$/ ? "" : _CHR["EOL"]))) } function _error(t, d, A) { if (_ERRLOG_EF) { A["TYPE"] = "ERROR" A["TEXT"] = t _log(A, d) } } function _exit(c) { exit c } function _export_data(t, i, A) { A["DATA"] = t A["ID"] = i _expout("_DATA: " _Zexparr(A) "\n") } function _expout(t, d, a, b) { a = BINMODE b = ORS BINMODE = "rw" ORS = "" print(t) > ((d ? d : d = _errlog_file)) fflush(d) BINMODE = a ORS = b } function _extfn_init() { _formatstrs_init() _formatstrd_init() _formatrexp_init() _unformatstr_init() _mac_init() } function _faccl_i0(A, t, p, P, f, r) { f = r = "" if (isarray(A)) { while (f = A[f]) { r = (@f(t, p, P)) r } } return r } function _faccr_i0(A, t, p, P, f, r) { f = r = "" if (isarray(A)) { while (f = A[f]) { r = r @f(t, p, P) } } return r } function _fatal(t, d, A) { if (_ERRLOG_FF) { A["TYPE"] = "FATAL" A["TEXT"] = t _log(A, d) } if (! d) { exit } } function _fbaccl(A, t, p, P) { return _faccl_i0(A["B"], t, p, P) } function _fbaccr(A, t, p, P) { return _faccr_i0(A["B"], t, p, P) } function _ffaccl(A, t, p, P) { return _faccl_i0(A["F"], t, p, P) } function _ffaccr(A, t, p, P) { return _faccr_i0(A["F"], t, p, P) } function _fframe(A, t, p) { return _fframe_i0(A, t, p, A[""]) } function _fframe_i0(A, t, p, f) { return ((f ? (@f(t, p)) _fframe_i0(A, t, p, A[f]) : "")) } function _file(f) { if ((f = _filerdnehnd(f)) == "") { return "" } return ((f in _FILEXT ? _FILEXT[f] : "")) } function _file_check(p) { if (1 || "AGENT" in _[p]) { _tframe("_file_check_i0", p, p) } } function _file_check_i0(p, pp, p1, p2, f, v) { if (_[p]["TYPE"] == "defile") { f = _[p]["FILE"] f = ((match(f, /^.:/) ? "" : _[_[pp]["AGENT"]][".Install Path"] "\\")) _[p]["FILE"] if ("RQVERSION" in _[p]) { v = _[p]["RQVERSION"] } else { v = _[pp][".Product Version"] } ERRNO = "" if (_th1(_[p]["DATA"] = _rdfile(f), ERRNO)) { delete _[p]["DATA"] return _dllerr(p, "read file: " ERRNO, f) } if (v != "" && v != (_[p]["VERSION"] = _getfilever(f))) { return _dllerr(p, " file version mismatch: ==`" _[p]["VERSION"] "'; !=`" v "'", f) } _creport(p, substr("OK: FILE DETECTED" ((v == "" ? "" : "(" v ")")) ": " f, 1, 122)) } else { if (_[p]["TYPE"] == "defdir") { if (_filexist(f = _[p]["DIR"])) { _creport(p, substr("OK: DIR DETECTED: " f, 1, 112)) } else { _dllerr(p, "directory " f " is not detected") } } } } function _filed(f, dd, d) { if ((f = _filerdnehnd(f)) == "") { return "" } if (f in _FILEDIRFL) { return _FILEDIR[f] } if (f in _FILEROOT) { if (d = filegetdrvdir(_FILEROOT[f])) { _FILEDIRFL[f] } return (_FILEDIR[f] = d _FILEDIR[f]) } if ((dd = (dd ? dd : _FILEIO_RD), f) in _FILEDIR) { return _FILEDIR[dd, f] } if ((d = filedi(dd) _FILEDIR[f]) ~ /^\\/) { return (_FILEDIR[dd, f] = d) } return d } function _filen(f) { if ((f = _filerdnehnd(f)) == "") { return "" } return ((f in _FILENAM ? _FILENAM[f] : "")) } function _filene(f) { if ((f = _filerdnehnd(f)) == "") { return "" } return (((f in _FILENAM ? _FILENAM[f] : "")) ((f in _FILEXT ? _FILEXT[f] : ""))) } function _filenotexist(f, a) { if (f == "") { return "" } if ((a = _filepath(f)) == "") { ERRNO = "Filepath error `" f "'" return "" } _cmd("if exist \"" a "\" exit 1 2>NUL") if (_exitcode == 1) { return (ERRNO = _NOP) } return a } function _filepath(f, dd) { if ((f = _filerdnehnd(f)) == "") { return "" } return (filegetrootdir(f, dd) ((f in _FILENAM ? _FILENAM[f] : "")) ((f in _FILEXT ? _FILEXT[f] : ""))) } function _filer(f, dd) { if ((f = _filerdnehnd(f)) == "") { return "" } if (f in _FILEROOT) { return _FILEROOT[f] } if ((dd = (dd ? dd : _FILEIO_RD), f) in _FILEROOT) { return _FILEROOT[dd, f] } return (_FILEROOT[dd, f] = fileri(dd)) } function _filerd(f, dd) { if ((f = _filerdnehnd(f)) == "") { return "" } return filegetrootdir(f, dd) } function _filerdn(f, dd) { if ((f = _filerdnehnd(f)) == "") { return "" } return ((f in _FILENAM ? filegetrootdir(f, dd) _FILENAM[f] : "")) } function _filerdne(f, dd) { if ((f = _filerdnehnd(f)) == "") { return "" } if (f in _FILENAM) { return (filegetrootdir(f, dd) _FILENAM[f] ((f in _FILEXT ? _FILEXT[f] : ""))) } if (f in _FILEXT) { return (filegetrootdir(f, dd) _FILEXT[f]) } return "" } function _filerdnehnd(st, c, r, d, n, A) { if (st) { if ((c = toupper(st)) in _FILECACHE) { FLENGTH = length(st) return _FILECACHE[c] } if (match(st, /^[ \t]*\\[ \t]*\\/)) { if (match(substr(st, (FLENGTH = RLENGTH) + 1), /^[ \t]*([0-9A-Za-z\-]+)[ \t]*(\\[ \t]*([A-Za-z])[ \t]*\$[ \t]*)?(\\[ \t]*([0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+( +[0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+)*[ \t]*\\)+[ \t]*)?(([0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+( +[0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+)*)[ \t]*)?/, A)) { FLENGTH = FLENGTH + RLENGTH d = ((A[3] ? "\\" A[3] "$" : "")) A[4] gsub(/[ \t]*\\[ \t]*/, "\\", d) if ((st = toupper((r = "\\\\" A[1]) d (n = A[8]))) in _FILECACHE) { return (_FILECACHE[substr(c, 1, FLENGTH)] = _FILECACHE[st]) } _FILEDIR[c = _FILECACHE[substr(c, 1, FLENGTH)] = _FILECACHE[st] = ++_file_rootcntr] = d _FILEDIRFL[c] _FILEROOT[c] = r } else { FLENGTH = 0 _filepath_err = "UNC" return "" } } else { match(st, /^(([ \t]*\.[ \t]*\\[ \t]*)|(([ \t]*([A-Za-z])[ \t]*(\:)[ \t]*)?([ \t]*(\\)[ \t]*)?))([ \t]*(([ \t]*[0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+( +[0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+)*[ \t]*\\)+)[ \t]*)?([ \t]*([0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+( +[0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+)*)[ \t]*)?/, A) if (! (FLENGTH = RLENGTH)) { return "" } d = A[8] A[10] gsub(/[ \t]*\\[ \t]*/, "\\", d) if ((st = toupper((r = A[5] A[6]) d (n = A[14]))) in _FILECACHE) { return (_FILECACHE[substr(c, 1, FLENGTH)] = _FILECACHE[st]) } _FILEDIR[c = _FILECACHE[substr(c, 1, FLENGTH)] = _FILECACHE[st] = ++_file_rootcntr] = d if (A[8]) { _FILEDIRFL[c] } if (r) { _FILEROOT[c] = r } } if (n) { if (match(n, /\.[^\.]*$/)) { _FILEXT[c] = substr(n, RSTART) _FILENAM[c] = substr(n, 1, RSTART - 1) } else { _FILENAM[c] = n } } return c } return "" } function _filexist(f, a) { if (f == "") { return "" } if ((a = _filepath(f)) == "") { ERRNO = "Filepath error `" f "'" return "" } _cmd("if exist \"" a "\" exit 1 2>NUL") if (_exitcode == 1) { return a } ERRNO = "File not found `" f "'" return _NOP } function _fn(f, p0, p1, p2) { if (f in FUNCTAB) { return @f(p0, p1, p2) } } function _foreach(A, f, r, p0, p1, p2, i, p) { if (isarray(A)) { _TMP0[p = _n()]["."] = 1 _foreach_i0(A, f, _TMP0[p], p0, p1, p2) return _th0(_retarr(_TMP0[p]), _tdel(p)) } if (_isptr(A)) { _TMP0[p = _n()][_ARRLEN] = 1 _tframe4("_foreach_i1" ((r ? "~" r : "")), A, f, _TMP0[p], p0, p1) return _th0(_retarr(_TMP0[p]), _tdel(p)) } } function _foreach_i0(A, f, D, p0, p1, p2) { for (i in A) { if (isarray(A[i])) { _foreach_i0(A[i], f, D, p0, p1, p2) } else { _gen(D, @f(A[i], p0, p1, p2)) } } } function _foreach_i1(p, f, D, p0, p1, p2) { _gen(D, @f(p, p0, p1, p2)) } function _formatrexp(t) { _formatstrq0 = split(t, _FORMATSTRA, /[\/\x00-\x1F\x80-\xFF]/, _FORMATSTRB) _formatstrs0 = "" for (t = 1; t < _formatstrq0; t++) { _formatstrs0 = _formatstrs0 _FORMATSTRA[t] _FORMATREXPESC[_FORMATSTRB[t]] } return (_formatstrs0 _FORMATSTRA[t]) } function _formatrexp_init() { _defescarr(_FORMATREXPESC, "[\\x00-\\x1F\\x80-\\xFF]", _QASC) _defescarr(_FORMATREXPESC, "\\/", "\\") _FORMATREXPESC["\t"] = "\\t" } function _formatstrd(t) { _formatstrq0 = split(t, _FORMATSTRA, /["\x00-\x1F\x80-\xFF]/, _FORMATSTRB) _formatstrs0 = "" for (t = 1; t < _formatstrq0; t++) { _formatstrs0 = _formatstrs0 _FORMATSTRA[t] _FORMATSTRDESC[_FORMATSTRB[t]] } return (_formatstrs0 _FORMATSTRA[t]) } function _formatstrd_init() { _defescarr(_FORMATSTRDESC, "[\\x00-\\x1F\\x80-\\xFF]", _QASC) _defescarr(_FORMATSTRDESC, "[\\\\\"]", "\\") _FORMATSTRDESC["\t"] = "\\t" } function _formatstrs(t) { _formatstrq0 = split(t, _FORMATSTRA, /['\x00-\x1F\x80-\xFF]/, _FORMATSTRB) _formatstrs0 = "" for (t = 1; t < _formatstrq0; t++) { _formatstrs0 = _formatstrs0 _FORMATSTRA[t] _FORMATSTRSESC[_FORMATSTRB[t]] } return (_formatstrs0 _FORMATSTRA[t]) } function _formatstrs_init() { _defescarr(_FORMATSTRSESC, "[\\x00-\\x1F\\x80-\\xFF]", _QASC) _defescarr(_FORMATSTRSESC, "[\\\\']", "\\") _FORMATSTRSESC["\t"] = "\\t" } function _fpp(q, D, S) { _conl() _conline(q) _conl() q = _patharr0(S, q) _conl(_dumparr(S)) _conl() return q } function _fthru(A, c, p, B) { return _fthru_i0(A, c, p, B, A[""]) } function _fthru_i0(A, c, p, B, f) { return ((f ? @f(c, _fthru_i0(A, c, p, B, A[f]), B) : "")) } function _gen(D, t) { if (length(D[D[_ARRLEN]] = D[D["."]] t) > _datablock_length) { D[++D[_ARRLEN]] = "" } } function _gensubfn(t, r, f, p0, A) { if (match(t, r, A)) { return (substr(t, 1, RSTART - 1) (@f(_th0(substr(t, RSTART, RLENGTH), t = substr(t, RSTART + RLENGTH)), A, p0)) _gensubfn(t, r, f, p0)) } return t } function _get_errout(p) { return _tframe("_get_errout_i0", p) } function _get_errout_i0(p, t, n, a) { return ((p in _tLOG ? _get_errout_i1(p) _get_errout_i3(p) : "")) } function _get_errout_i1(p, t, n, a) { if (p in _tLOG) { n = "" if (_tLOG[p]["TYPE"]) { n = _tLOG[p]["TYPE"] ": " _get_errout_i2(p) if (match(_tLOG[p]["TEXT"], /\x1F/)) { t = n gsub(/[^\t]/, " ", t) return (_ln(n substr(_tLOG[p]["TEXT"], 1, RSTART - 1)) _ln(t substr(_tLOG[p]["TEXT"], RSTART + 1))) } } return _ln(n _tLOG[p]["TEXT"]) } } function _get_errout_i2(p) { return (("FILE" in _tLOG[p] ? _tLOG[p]["FILE"] (("LINE" in _tLOG[p] ? "(" _tLOG[p]["LINE"] ")" : "")) ": " : "")) } function _get_errout_i3(p, t, ts, cl, cp, cr, a, b) { if ("LSTR" in _tLOG[p]) { t = _tLOG[p]["FULLSTR"] ts = _tLOG[p]["TS"] cp = "^" if ("CSTR" in _tLOG[p]) { cr = _tLOG[p]["CSTR"] cl = _tLOG[p]["CLSTR"] if ("CPSTR" in _tLOG[p]) { cp = _tLOG[p]["CPSTR"] } } cr = substr(cr, length(cl) + length(cp) + 1) return (_ln(_tabtospc(t, ts)) _ln(_getchrln(" ", a = length(_tabtospc(_tLOG[p]["LSTR"], ts))) _getchrln("-", b = length(_tabtospc(cl, ts, a))) _getchrln("^", b = length(_tabtospc(cp, ts, a = a + b))) _getchrln("-", length(_tabtospc(cr, ts, a + b))))) } } function _get_logout(p) { return _tframe("_get_logout_i0", p) } function _get_logout_i0(p, t, n, a) { if (p in _tLOG) { n = (("DATE" in _tLOG[p] ? _tLOG[p]["DATE"] " " : "")) (("TIME" in _tLOG[p] ? _tLOG[p]["TIME"] " " : "")) if (_tLOG[p]["TYPE"]) { n = n _tLOG[p]["TYPE"] ": " (("FILE" in _tLOG[p] ? _tLOG[p]["FILE"] (("LINE" in _tLOG[p] ? "(" _tLOG[p]["LINE"] ")" : "")) ": " : "")) if (match(_tLOG[p]["TEXT"], /\x1F/)) { t = n gsub(/[^\t]/, " ", t) return (_ln(n substr(_tLOG[p]["TEXT"], 1, RSTART - 1)) _ln(t substr(_tLOG[p]["TEXT"], RSTART + 1))) } } return _ln(n _tLOG[p]["TEXT"]) } } function _getchrln(s, w) { if (s == "") { return } if (length(s) < w) { if (s in _GETCHRLN) { if (length(_getchrlnt0 = _GETCHRLN[s]) >= w) { return substr(_getchrlnt0, 1, w) } } else { _getchrlnt0 = s s } while (length(_getchrlnt0) < w) { _getchrlnt0 = _getchrlnt0 _getchrlnt0 } _GETCHRLN[s] = _getchrlnt0 return substr(_getchrlnt0, 1, w) } else { return substr(s, 1, w) } } function _getdate() { return strftime("%F") } function _getfilepath(t, f, al, b, A) { ERRNO = "" if (match(t, /^[ \t]*(("([^"]*)"[ \t]*)|([`']([^']*)'[ \t]*)|(([^ \t]+)[ \t]*))/, A)) { al = RLENGTH f = A[3] A[5] A[7] _conl("_getfilepath(" f ") (" al ")") if (b = _filepath(f)) { if (length(f) <= FLENGTH) { FLENGTH = al return b } ERRNO = "Filepath `" f "' error" } } FLENGTH = 0 } function _getfilever(f) { split(_cmd(_fileverpath " \"" f "\""), _GETFILEVERA0, /[ \t]+/) if (_GETFILEVERA0[5]) { return _GETFILEVERA0[5] } } function _getime() { return strftime("%H:%M:%S") } function _getmpdir(f, dd) { if (! dd || ! (dd = _filerd(dd))) { dd = _FILEIO_TMPRD } if (f = (f ? _filerd(f, dd) : _filerd("_" ++_FILEIO_TMPCNTR "\\", dd))) { _FILEIO_RDTMP[toupper(f)] } return f } function _getmpfile(f, dd) { if (! dd || ! (dd = _filerd(dd))) { dd = _FILEIO_TMPRD } if (f = _filerdne((_filene(f) ? f : f "_" ++_FILEIO_TMPCNTR), dd)) { _FILEIO_RDNETMP[toupper(f)] } return f } function _getperf(o, t, a) { (o == "" ? ++_getperf_opcurr : _getperf_opcurr = o) if ((a = _getsecond()) != _getperf_last) { _getperf_opsec = (_getperf_opcurr - _getperf_opstart) / ((_getperf_last = a) - _getperf_start) return @_getperf_fn(o, t, a) } return 1 } function _getperf_(o, t, a) { if (a >= _getperf_end) { return 0 } if (_getperf_opsecp != _getperf_opsec) { _constat(((_constatstr == _getperf_stat ? _getperf_statstr : _getperf_statstr = _constatstr)) t " [TIME=" (a - _getperf_start) " sec(" (_getperf_opsecp = _getperf_opsec) " ops/sec)]") _getperf_stat = _constatstr } return 1 } function _getperf_noe(o, t, a) { if (_getperf_opsecp != _getperf_opsec) { _constat(((_constatstr == _getperf_stat ? _getperf_statstr : _getperf_statstr = _constatstr)) t " [TIME=" (a - _getperf_start) " sec(" (_getperf_opsecp = _getperf_opsec) " ops/sec)]") _getperf_stat = _constatstr } return 1 } function _getperf_noenot(o, t, a) { return 1 } function _getperf_not(o, t, a) { if (a < _getperf_end) { return 1 } } function _getreg_i1(D, r, R, a, i, il, ir, rc, B) { a = IGNORECASE IGNORECASE = 1 r = "^" _torexp(r) rc = 0 zs = "" for (i in R) { if (match(i, r, B)) { il = B[_torexp_pfxcntr] ir = gensub(/....$/, "", 1, substr(i, 1 + B[_torexp_pfxcntr, "length"])) if (! gsub(/^\\/, "", ir) && match(il, /[^\\]+$/)) { ir = substr(il, RSTART) ir } D[ir] = R[i] rc++ } } IGNORECASE = a if (rc > 0) { return rc } } function _getsecond() { return systime() } function _getsecondsync(a, c, b, c2) { a = systime() while (a == systime()) { ++c } return (a + 1) } function _getuid(p) { if (p in _UIDOBL) { for (_tptr in _UIDOBLV[_getuida0 = _UIDOBL[p]]) { delete _UIDOBLV[_getuida0][_tptr] _CLASSPTR[_tptr] = p return _tptr } } _CLASSPTR[_tptr = _UIDPFX[p] _getuid_i0(_UIDCNT[p], _UIDCHRL[_tptr = _UIDCHR[p]], _UIDCHRH[_tptr]) _UIDSFX[p]] = p return _tptr } function _getuid_i0(p, UL, UH) { if ("" == (_tptr = UL[_UIDCNTL[p]])) { for (_tptr in UH) { delete UH[_tptr] return ((_UIDCNTH[p] = _tptr) (_UIDCNTL[p] = UL[""])) } _fatal("out of UID") } return (_UIDCNTH[p] (_UIDCNTL[p] = _tptr)) } function _handle8494(t) { return gensub(/(.)/, ".\\1", "G", t) } function _hexnum(n, l) { if (l + 0 < 1) { l = 2 } return sprintf("%." ((l + 0 < 1 ? 2 : l)) "X", n) } function _igetperf(t, s, o) { if (t == 0 && t == "" && s == 0 && s == "" && o == 0 && o == "") { if (_getperf_fn !~ /not$/ && _constatstr == _getperf_stat) { _constat(_getperf_statstr) } _getperf_fn = "_nop" return ("[TIME=" (_getperf_last - _getperf_start) " sec(" _getperf_opsec " ops/sec)]") } _conl("initiate _getperf") _getperf_opstart = _getperf_opcurr = o + 0 _getperf_opsec = _getperf_opsecp = _getperf_stat = _getperf_statstr = "" _getperf_end = t + (_getperf_start = _getperf_last = _getsecondsync()) _getperf_fn = ((t + 0 > 0 ? "_getperf_" : "_getperf_noe")) ((s ? "" : "not")) return _getperf_start } function _import_data(t, p, p2, a) { if (match(t, /^_DATA: /)) { _tDATA[a = _wLCHLD(p, _N())][""] delete _tDATA[a][""] _Zimparr(_tDATA[a], substr(t, 8)) _conl("DATA: `" _tDATA[a]["ID"] "':`" _tDATA[a]["DATA"] "'") return "" } return t } function _info(t, d, A) { if (_ERRLOG_IF) { A["TYPE"] = "INFO" A["TEXT"] = t _log(A, d) } } function _ini(p, cs, dptr, pfx, sfx, hstr, lstr) { return _inituid(p, cs, dptr, pfx, sfx, hstr, lstr, A) } function _initfilever() { _fileverpath = "\\\\CPU\\eGAWK\\LIB\\_filever\\_filever.exe" } function _initrdreg() { _RDREGTYPE["SZ"] = "STR" _RDREGTYPE["DWORD"] = "W32" _RDREGTYPE["QWORD"] = "W64" _RDREGTYPE["BINARY"] = "BIN" _RDREGTYPE["EXPAND_SZ"] = "XSZ" _RDREGTYPE["MULTI_SZ"] = "MSZ" _RDrdregfld = _rdregkey = 0 } function _initregpath0() { _REGPATH0REGDIR[""] = "HKEY_LOCAL_MACHINE" _REGPATH0REGDIR["HKLM"] = "HKEY_LOCAL_MACHINE" _REGPATH0REGDIR["HKEY_LOCAL_MACHINE"] = "HKEY_LOCAL_MACHINE" _REGPATH0REGDIR["HKCR"] = "HKEY_CLASSES_ROOT" _REGPATH0REGDIR["HKEY_CLASSES_ROOT"] = "HKEY_CLASSES_ROOT" _REGPATH0REGDIR["HKCU"] = "HKEY_CURRENT_USER" _REGPATH0REGDIR["HKEY_CURRENT_USER"] = "HKEY_CURRENT_USER" _REGPATH0REGDIR["HKU"] = "HKEY_USERS" _REGPATH0REGDIR["HKEY_USERS"] = "HKEY_USERS" _REGPATH0REGDIR["HKCC"] = "HKEY_CURRENT_CONFIG" _REGPATH0REGDIR["HKEY_CURRENT_CONFIG"] = "HKEY_CURRENT_CONFIG" _REGPATH0REGDIR["HKPD"] = "HKEY_PERFORMANCE_DATA" _REGPATH0REGDIR["HKEY_PERFORMANCE_DATA"] = "HKEY_PERFORMANCE_DATA" } function _initshare() { _sharextool = "\\\\CPU\\eGAWK\\LIB\\_share\\_share.exe" } function _initspecialuid() { _NOINDEX = _getuid() _LEN = _getuid() _PTR = _getuid() _NAME = _getuid() _TYPE = _getuid() _FORMAT = _getuid() } function _initsys() { } function _inituid(p, cs, dptr, pfx, sfx, hstr, lstr, A) { if (cs == 0 && cs == "") { cs = p p = _getuid() } _conl() _conl() _conl(cs) if (match(cs, /^(([^:]*):)?(([^'\xB4]*\xB4.)*[^'\xB4]*)[']/, A)) { pfx = A[3] dptr = A[2] } if (match(cs = substr(cs, 1 + RLENGTH), /'(([^'\xB4]*\xB4.)*[^'\xB4]*)$/, A)) { sfx = A[1] cs = substr(cs, 1, RSTART - 1) } if (match(cs, /^(([`\^])(.*))/, A)) { if (A[2] == "`") { hstr = A[3] "~" lstr = "" } else { lstr = A[3] "+" hstr = "" } } else { if (match(cs, /^(([^'\xB4\|]*\xB4.)*[^'\xB4\|]*)(\|(.*))?/, A)) { hstr = A[1] lstr = A[4] } else { ERRNO = "_inituid(): bad parameters" return } } _conl(dptr ":" pfx "'" hstr "|" lstr "'" sfx) return _cfguid(p, dptr, pfx, sfx, hstr, lstr) } function _inituidefault(h, l, H, L) { _classys = "" delete _UIDOBLV[_UIDOBLV[_UIDOBL[_classys] = _classys][""] = _classys][""] _UIDPFX[_classys] _UIDSFX[_classys] _UIDCNT[_classys] = _UIDCHR[_classys] = _CLASSPTR[_classys] = _classys h = "AB" l = h "01" _splitstr(H, h) _splitstr(L, l) delete _UIDCHRH[_UIDCHRH[_classys][""] = _classys][""] delete _UIDCHRL[_UIDCHRL[_classys][""] = _classys][""] _UIDCNTH[_classys] _cfguidh(_classys, H, L) _UIDCNTL[_classys] = _cfguidl(_classys, L, L) _CLASSFN[_classys]["del"] = "_tobjDEL" _CLASSFN[_classys]["new"] = "_tobjNEW" _drawuid(_classys) _initspecialuid() } function _ins(S, sf, D, df) { if (sf in S) { if (isarray(S[sf])) { if (df in D) { if (isarray(D[df])) { return _extarr(D[df], S[sf]) } delete D[df] } D[df][""] delete D[df][""] return _extarr(D[df], S[sf]) } else { if (isarray(D[df])) { delete D[df] } D[df] = S[sf] D[df] } } } function _insf(A, f) { A["F"][""] = A["B"][A["F"][f] = A["F"][""]] = f } function _insframe(A, f) { A[f] = A[""] A[""] = f } function _inspass(A, f) { A[f] = A[""] A[""] = f } function _isptr(p) { if (isarray(p)) { is = _NOP it = "A" return 0 } is = p if (p == 0 && p == "") { it = "-" return 0 } if (p in _CLASSPTR) { return (it = "P") } it = "S" return 0 } function _istr(p) { if (isarray(p)) { is = _NOP it = "A" return 0 } is = p if (p == 0 && p == "") { it = "-" return 0 } return (it = (p == "" ? "s" : "S")) } function _lengthsort(i1, v1, i2, v2) { return ((length(i1) < length(i2) ? -1 : (length(i1) > length(i2) ? 1 : (i1 < i2 ? -1 : 1)))) } function _lib_APPLY() { return _ffaccr(_LIBAPI, "_lib_APPLY") } function _lib_BEGIN(A) { return _ffaccr(_LIBAPI, "_lib_BEGIN", "", A) } function _lib_CMDLN(t) { return _pass(_LIBAPI["F"], "_lib_CMDLN", t) } function _lib_END(A) { return _ffaccr(_LIBAPI, "_lib_END", "", A) } function _lib_HELP() { return _fbaccr(_LIBAPI, "_lib_HELP") } function _lib_NAMEVER() { return _fbaccr(_LIBAPI, "_lib_NAMEVER") } function _ln(t) { return ((t ~ /\x0A$/ ? t : t _CHR["EOL"])) } function _log(A, p, a, B) { if (isarray(A)) { A["TIME"] = _getime() A["DATE"] = _getdate() if (p) { _tLOG[p = _wLCHLD(p, _N())][""] delete _tLOG[p][""] _movarr(_tLOG[p], A) return p } _expout("_ERRLOG: " _Zexparr(A) "\n") } else { B["TEXT"] = A B["TYPE"] = "" return _log(B, p) } } function _lspctab(t, ts, l, l1, l2, A) { while (match(t, /^(\t*)( *)((\t*)(.*))$/, A)) { if (A[1, "length"] >= l) { return substr(t, l + 1) } if (A[2]) { if ((l1 = int(A[2, "length"] / ts)) >= (l2 = l - A[1, "length"])) { return (substr(A[2], l2 * ts + 1) A[3]) } if (! A[4]) { return A[5] } t = A[1] _getchrln("\t", l1) A[3] } else { return t } } } function _mac_init() { _MACPFX["\204"] = "_macpfx84" _MACPFX[""] = "_mpupfxsubret" _MACPFX84SFX["\204"] = "_macpfx84" _MACPFX84SFX["\224"] = "_macsfx94" _MACPFX84SFX[""] = "_mpusfxsubret" _VLDMAXSTRING = 1e+06 } function _macpfx84(F, D, C, p1, p2, p3) { return _mpusub(_MACPFX84SFX, D, C, D[_mpuptr++], p1, p2, p3) } function _macsfx94(F, D, C, p1, p2, p3) { return _mpuretsub(D, _handle8494(_mpuacc)) } function _movarr(D, S) { delete D D[""] delete D[""] _addarr(D, S) } function _mpu(t, F, p1, p2, p3, D, C) { if (patsplit(t, C, /[\x84\x93\x94]/, D) > 0) { _conline("CODE") _conl() _conl(_dumparr(C)) _conline("DATA") _conl() _conl(_dumparr(D)) _mpuptr = 0 _mpucc0 = "" _mpusub(F, D, C, D[_mpuptr++], p1, p2, p3) return _mpuacc } return t } function _mpudefaulthnd(F, D, C, p1, p2, p3) { _mpuretsub(D, _mpucc0) } function _mpupfxsubret(F, D, C, p1, p2, p3) { return 1 } function _mpuretsub(D, t) { _mpuacc = D[_mpuptr++] _accmpu(D, t) return 1 } function _mpusfxsubret(F, D, C, p1, p2, p3) { return -1 } function _mpusub(F, D, C, d, p1, p2, p3, q) { q = D[_ARRLEN] if (_VLDMAXSTRING < length(d)) { D[--D[_ARRLEN]] = d _mpuacc = "" } else { _mpuacc = d } d = _mpucc0 _conl("_mpusub enter: in `" _mpuacc "' / _mpuptr=" _mpuptr "'") do { if ((_mpucc0 = C[_mpuptr]) in F) { if (isarray(F[_mpucc0])) { _mpufn0 = F[_mpucc0] } _conl("FN: `" _mpucc0 "' > CALL: `" _mpufn0 "' : _mpuacc=" _mpuacc "'") } else { _mpufn0 = "_mpudefaulthnd" } } while (! _accmpu(D, _mpuacc, @_mpufn0(F, D, C, p1, p2, p3))) if (_mpufn0 == -1) { _conl("WARNING: unclosed expression: `" d _mpuacc "'") _mpuacc = d _mpuacc } _retarrm(D, q, "", (_mpufn0 == -1 ? _th0(d, _mpusubwrng("WARNING: unclosed expression", d _mpuacc)) : "")) _conl("mpusub exit: _mpuacc: `" _mpuacc "'") } function _n(F, v, p) { for (p in _UIDSDEL) { delete _UIDSDEL[p] delete _ptr[p] delete _tPREV[p] delete _tPARENT[p] delete _tNEXT[p] delete _tFCHLD[p] delete _tQCHLD[p] delete _tLCHLD[p] delete _TMP0[p] delete _TMP1[p] delete _tLINK[p] delete _tCLASS[p] return _nN_i0(p, F, v) } for (p in _UIDS) { delete _UIDS[p] return _nN_i0(p, F, v) } return _nN_i0(_tgenuid(), F, v) } function _nN_i0(p, F, v) { _[p][""] delete _[p][""] _ptr[p][""] delete _ptr[p][""] _TMP0[p][_ARRLEN] = _TMP1[p][_ARRLEN] = 0 if (isarray(F)) { delete F[p] if (isarray(v)) { F[p][""] delete F[p][""] _copyarr(F[p], v) } else { if (! (v == 0 && v == "")) { F[p] = v } } } else { if (! (F == 0 && F == "")) { if (isarray(v)) { _[p][F][""] delete _[p][F][""] _copyarr(_[p][F], v) } else { if (v == 0 && v == "") { _mpu(F, p) } else { _[p][F] = v } } } } return p } function _newclrdir(f) { if ((f = _filerd(f)) == "") { return } _cmd("rd " f " /S /Q 2>NUL") _cmd("md " f " 2>NUL") _WFILEROOTDIR[f] return f } function _newdir(f) { if ((f = _filerd(f)) == "") { return } if (! (f in _WFILEROOTDIR)) { _cmd("md " f " 2>NUL") _WFILEROOTDIR[f] } return f } function _nop(p0, p1, p2, p3) { } function _nretarr(A, i, v, r, q) { if ((i = (i == "" ? 1 : i + 0)) <= (q = A[_ARRLEN])) { if (i <= (r = q - 16)) { _ARRSTR = A[i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] while (i < r) { _ARRSTR = _ARRSTR A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] } _ARRSTR = _ARRSTR A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] v _retarr_i0(A, q, i) return } _ARRSTR = A[i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] v _retarr_i0(A, q, i) return } _ARRSTR = v return } function _nretarrd(A, i, v, r, q) { if ((i = (i == "" ? 1 : i + 0)) <= (q = A[_ARRLEN])) { if (i <= (r = q - 16)) { _ARRSTR = A[i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] while (i < r) { _ARRSTR = _ARRSTR A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] } _ARRSTR = _ARRSTR A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] v _retarr_i0(A, q, i) } else { _ARRSTR = A[i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] v _retarr_i0(A, q, i) } } else { _ARRSTR = v } delete A A[""] delete A[""] } function _out(t, a, b) { a = BINMODE b = ORS BINMODE = "rw" ORS = "" print(t) > _SYS_STDOUT fflush(_SYS_STDOUT) BINMODE = a ORS = b return t } function _outnl(t) { return _out(t ((t ~ /\x0A$/ ? "" : _CHR["EOL"]))) } function _p1(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { _qparamf0 = "_p" _QMAP[_qparamc1--] return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s1, p1, p2, p3, p4, p5, p6, p7) } function _p2(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { _qparamf0 = "_p" _QMAP[_qparamc1--] return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s2, p1, p2, p3, p4, p5, p6, p7) } function _p3(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { _qparamf0 = "_p" _QMAP[_qparamc1--] return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s3, p1, p2, p3, p4, p5, p6, p7) } function _p4(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { _qparamf0 = "_p" _QMAP[_qparamc1--] return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s4, p1, p2, p3, p4, p5, p6, p7) } function _p5(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { _qparamf0 = "_p" _QMAP[_qparamc1--] return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s5, p1, p2, p3, p4, p5, p6, p7) } function _p6(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { _qparamf0 = "_p" _QMAP[_qparamc1--] return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s6, p1, p2, p3, p4, p5, p6, p7) } function _p7(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { _qparamf0 = "_p" _QMAP[_qparamc1--] return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s7, p1, p2, p3, p4, p5, p6, p7) } function _p8(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { _qparamf0 = "_p" _QMAP[_qparamc1--] return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s8, p1, p2, p3, p4, p5, p6, p7) } function _pass(A, f, t, p2, i, a) { a = _endpass_v0 _endpass_v0 = "" i = 1 while (t && i) { i = "" while ((i = A[i]) && t == (t = @i(f, t, p2))) { } } if (i && _endpass_v0) { A["!"] = 1 t = _endpass_v0 } else { delete A["!"] } _endpass_v0 = a return t } function _patharr0(D, q, i, h, A, B) { delete D if (0 < (q = split(gensub(/\\/, "/", "G", gensub(/ *([:$\\\/]) */, "\\1", "G", gensub(/(^[ \t]+)|([ \t]+$)/, "", "G", q))), A, /\/+/, B))) { if (2 > (h = length(B[1]))) { D["type"] = "FILE" A[1] = _patharr0_i0(A[1], D, "drive") return _patharr0_i1(D, A, 1, q) } i = gensub(/ *([\.\?]) */, "\\1", "G", A[2]) IGNORECASE = 1 match(A[1], /^((https?)|(ftp)):$/) IGNORECASE = 0 if (RLENGTH > 0) { D["type"] = toupper(substr(A[1], 1, RLENGTH - 1)) _patharr0_i0(i, D, "site", "port") } else { if (A[1] == "") { D["type"] = "UNC" if (h > 2) { D["host"] A[2] = _patharr0_i0(A[2], D, "drive", "", "FILE") return _patharr0_i1(D, A, 2, q) } if (i == "") { return 1 } D["host"] = i A[3] = _patharr0_i0(A[3], D, "drive", "", "FILE") } else { D["type"] = "FILE" A[1] = _patharr0_i0(A[1], D, "drive") return _patharr0_i1(D, A, 1, q) } } return _patharr0_i1(D, A, 3, q) } } function _patharr0_i0(t, D, l, r, d, i) { if (i = index(t, ":")) { if (d) { D["type"] = d } if (i > 1) { D[l] = substr(t, 1, i - 1) } if ((t = substr(t, i + 1)) && r) { D[r] = t } return t } else { if (t && r) { D[l] = t } } return t } function _patharr0_i1(D, A, i, q, t, c) { if (D["type"] == "UNC") { if (t = A[i++]) { D[0] = (D["share"] = D[++c] = t) "/" } else { return 1 } } while (i < q) { D[0] = D[0] (D[++c] = A[i++]) "/" } if (i == q) { if (match(t = A[i], /\.[^\.]*$/)) { if (RSTART > 1) { D["name"] = substr(t, 1, RSTART - 1) } D["ext"] = substr(t, RSTART, RLENGTH) } else { if (t != "") { D["name"] = t } } } return 1 } function _pmap(m, s1, s2, s3, s4, s5, s6, s7, s8) { if (match(m, /^([^\(]+)\(([^\)]*)\)$/, _QMAP)) { _qparamf1 = _QMAP[1] _QMAP[0] = "r" (_qparamc1 = split(_QMAP[2], _QMAP, "")) _qparamf0 = "_p" _QMAP[_qparamc1--] return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8) } } function _pr0(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { return @_qparamf1() } function _pr1(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { return @_qparamf1(p1) } function _pr2(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { return @_qparamf1(p1, p2) } function _pr3(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { return @_qparamf1(p1, p2, p3) } function _pr4(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { return @_qparamf1(p1, p2, p3, p4) } function _pr5(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { return @_qparamf1(p1, p2, p3, p4, p5) } function _pr6(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { return @_qparamf1(p1, p2, p3, p4, p5, p6) } function _pr7(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { return @_qparamf1(p1, p2, p3, p4, p5, p6, p7) } function _pr8(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8) { return @_qparamf1(p1, p2, p3, p4, p5, p6, p7, p8) } function _printarr(A, t, lv, r, a) { a = PROCINFO["sorted_in"] PROCINFO["sorted_in"] = "_lengthsort" _printarrexp = (r ? r : "") if (isarray(A)) { delete _DUMPARR _dumparrc = _dumparrd = "" _printarr_i1(A, lv = ((lv == "" ? 16 : (lv == 0 || lv + 0 != 0 ? lv : (lv == "-*" ? -3 : (lv ~ /^\+?\*$/ ? 3 : 16))))) + 0, (lv < 0 ? -1 : 1), 0, _tabtospc(t)) PROCINFO["sorted_in"] = a return _retarrd(_DUMPARR, _dumparrd, _dumparrd = "") } } function _printarr_i1(A, lv, ls, ln, t, t2, i, a, f) { t2 = _getchrln(" ", length(t)) if (ln == lv) { if (ls > 0) { for (i in A) { ++a } } else { for (i in A) { (isarray(A[i]) ? ++a : "") } } if (length(_dumparrd = _dumparrd t ((a > 0 ? " ... (x" a ")" : "")) _CHR["EOL"]) > 262144) { _conl(_dumparrd) _dumparrd = "" } return } if (ls >= 0) { for (i in A) { if (! _printarrexp || i ~ _printarrexp) { if (! isarray(A[i])) { if (length(_dumparrd = _dumparrd ((f ? t2 : t _nop(f = 1))) "[" i "]=" A[i] "'" _CHR["EOL"]) > 262144) { _conl(_dumparrd) _dumparrd = "" } } } } } for (i in A) { if (isarray(A[i])) { if (! _printarrexp || i ~ _printarrexp) { _printarr_i1(A[i], lv, ls, ln + ls, _th0((f ? t2 : t), f = 1) "[" i "]") } } } if (! f) { if (length(_dumparrd = _dumparrd t _CHR["EOL"]) > 262144) { _conl(_dumparrd) _dumparrd = "" } } } function _qparam(qm, p0, p1, p2, p3, p4, p5, p6, p7) { if (qm == qm + 0 && qm > 0) { _qparamim = substr(" ", 1, qm) } else { if (qm != "") { _qparamim = qm } else { _qparamim = " " } } _qparamask = "" return _qparam_i0(p0, p1, p2, p3, p4, p5, p6, p7) } function _qparam_i0(p0, p1, p2, p3, p4, p5, p6, p7) { _qparama0 = substr(_qparamim, 1, 1) _qparamim = substr(_qparamim, 2) switch (_qparama0) { case "": gsub(/ +$/, "", _qparamask) return length(_qparamask) default: if (isarray(p0)) { _qparama0 = "A" } else { if (p0 == "" && p0 == 0) { _qparama0 = " " } else { if (_isptr(p0)) { _qparama0 = "P" } else { _qparama0 = "S" } } } case ".": _qparamask = _qparamask _qparama0 return _qparam_i0(p1, p2, p3, p4, p5, p6, p7) } } function _qstr(t, c, A, B) { c = "" for (t = split(t, A, /[\x00-\x1F\\"]/, B); t >= 0; t--) { c = _QSTR[B[t]] A[t + 1] c } return c } function _qstrq(t) { gsub(/\\/, "\\\\", t) gsub(/"/, "\\\"", t) return t } function _rEG(c, t, P, a, A) { switch (c) { case "_lib_CMDLN": return t case "_lib_APPLY": return case "_lib_HELP": return case "_lib_NAMEVER": return _ln("_reg 0.001") case "_lib_BEGIN": return case "_lib_END": return } } function _rFBRO(p) { if (p) { if (p in _tPARENT) { return _tFCHLD[_tPARENT[p]] } while (p in _tPREV) { p = _tPREV[p] } return p } return p } function _rFCHLD(p) { if (p && p in _tFCHLD) { return _tFCHLD[p] } return "" } function _rLBRO(p) { if (p) { if (p in _tPARENT) { return _tLCHLD[_tPARENT[p]] } while (p in _tNEXT) { p = _tNEXT[p] } return p } return p } function _rLCHLD(p) { if (p && p in _tLCHLD) { return _tLCHLD[p] } return "" } function _rLINK(p) { return ((p in _tLINK ? _tLINK[p] : "")) } function _rNEXT(p) { if (p && p in _tNEXT) { return _tNEXT[p] } return "" } function _rPARENT(p) { if (p && p in _tPARENT) { return _tPARENT[p] } return "" } function _rPREV(p) { if (p && p in _tPREV) { return _tPREV[p] } return "" } function _rQBRO(p, c, p1) { if (p) { if (p in _tPARENT) { return _tQCHLD[_tPARENT[p]] } c = 1 p1 = p while (p1 in _tPREV) { c++ p1 = _tPREV[p1] } while (p in _tNEXT) { c++ p = _tNEXT[p] } return c } return p } function _rQCHLD(p) { if (p && p in _tQCHLD) { return _tQCHLD[p] } return "" } function _rSQFIRST(g, p, A) { if (isarray(A)) { return _rSQFIRSTA(g, p, A) } _SQTOPTR[g] = p _SQSTACK[g][0] = 0 return _rsqgetptr(g, p) } function _rSQFIRSTA(g, p, A) { _SQTOPTR[g] = p _SQSTACK[g][0] = 0 if ((p = _rsqgetptr(g, p)) in A) { return p } return _rSQNEXTA(g, p, A) } function _rSQNEXT(g, p, A) { if (isarray(A)) { return _rSQNEXTA(g, p, A) } return _rsqnext_i0(g, p) } function _rSQNEXTA(g, p, A) { if (p == _SQTOPTR[g]) { if (_SQSTACK[g][0] > 0) { _SQTOPTR[g] = _SQSTACK[g][_SQSTACK[g][0]--] return _rSQNEXTA(g, _SQSTACK[g][_SQSTACK[g][0]--], A) } return } while (p in _tNEXT) { if ((p = _rsqgetptr(g, _tNEXT[p])) in A) { return p } } return ((p in _tPARENT ? _rSQNEXTA(g, _tPARENT[p], A) : "")) } function _rconl(t) { _rprt = _rprt _ln(t) } function _rconline(t) { _rprt = _rprt _ln((t = " " t " ") _getchrln("_", _CON_WIDTH - length(t) - 1)) } function _rd_shortcut(D, f) { if ((_shrtcutf0 = _filepath(f)) && _shortcut_nerr(_shrtcuta0 = _cmd(_shortcut_fpath " /A:Q /F:\"" _shrtcutf0 "\" 2>&1"), _shrtcutf0)) { ERRNO = "" split(_shrtcuta0, _SHRTCUTA0, /\x0D?\x0A/) for (_shrtcuta0 in _SHRTCUTA0) { for (f in _SHORTCUTRSTRUC) { if (match(_SHRTCUTA0[_shrtcuta0], "^" f)) { D[_SHORTCUTRSTRUC[f]] = substr(_SHRTCUTA0[_shrtcuta0], 1 + RLENGTH) } } } } return ((ERRNO ? ERRNO = "read shortcut: " ERRNO : _NOP)) } function _rdfile(f, i, A) { if ((f = _filerdne(f)) == "" || _filene(f) == "") { ERRNO = "Filename error" return } _fio_cmda = RS RS = ".{1,}" _fio_cmdb = BINMODE BINMODE = "rw" ERRNO = RT = _NUL getline RS < f BINMODE = _fio_cmdb RS = _fio_cmda if (ERRNO == "") { close(f) } if (ERRNO == "") { return RT } return (RT = _NOP) } function _rdreg(D, p) { _rdregp0 = "reg query \"" p "\" /S /reg:64 2>NUL" _rdregfld = _rdregkey = 0 _rdregq0 = split(gensub(/[\x0D?\x0A]{2,}/, _CHR["EOL"], "G", _cmd(_rdregp0)), _RDREGA0, /\x0D?\x0A/) while (_rdregq0 > 0) { _rdreg_i0(D) } return (_rdregfld + _rdregkey) } function _rdreg_i0(D, A) { while (_rdregq0 > 0) { if (match(_rdregp0 = _RDREGA0[_rdregq0--], / (.*) REG_((SZ)|(DWORD)|(QWORD)|(BINARY)|(EXPAND_SZ)|(MULTI_SZ)) (.*)$/, A)) { if (! _rdreg_i0(D)) { ++_rdregfld D[_rdregp0 A[1] "." _RDREGTYPE[A[2]]] = A[9] return } else { break } } else { if (_rdregp0 ~ /^HK/) { ++_rdregkey return D[_rdregp0 = _rdregp0 "\\"] } } } return 1 } function _rdsafe(A, i, d) { if (i in A) { return A[i] } return d } function _reg_check(p) { _tframe("_reg_check_i0", p, p) } function _reg_check_i0(p, pp, p1, p2) { if (_[p]["TYPE"] == "defreg") { if (_[p]["REGPATH"] in _REG) { if ("VALUE" in _[p]) { if (_[p]["VALUE"] == _REG[_[p]["REGPATH"]]) { _creport(p, substr("OK: REGENTRY MATCH(==" _[p]["VALUE"] "): " _[p]["REGPATH"], 1, 126)) } else { _dllerr(p, substr("REGENTRY NOT MATCH(!=" _[p]["VALUE"] "): " _[p]["REGPATH"], 1, 126)) } } else { if (_VAR[_[p]["REGPATH"]] == _REG[_[p]["REGPATH"]]) { _creport(p, substr("OK: REGPATH MATCH(==" _VAR[_[p]["REGPATH"]] "): " _[p]["REGPATH"], 1, 126)) } else { _dllerr(p, substr("REGPATH NOT MATCH(!=" _VAR[_[p]["REGPATH"]] "): " _[p]["REGPATH"], 1, 126)) } } } else { _dllerr(p, substr("REGPATH NOT FOUND: " _[p]["REGPATH"], 1, 126)) } } } function _registryinit() { _registrytmpfile = _getmpfile() } function _regpath0(D, i, s, q, S) { if (i = _patharr0(S, i)) { if ("name" in S) { D["name"] = S["name"] } if ("ext" in S) { D["ext"] = S["ext"] } s = ((toupper(s = (i in S ? S[i] : "")) in _REGPATH0REGDIR ? D[++q] = _REGPATH0REGDIR[toupper(s)] : (D[++q] = _REGPATH0REGDIR[""]) "\\" (D[++q] = s))) "\\" while (++i in S) { s = s (D[++q] = S[i]) "\\" } if (s != "") { D[0] = s } IGNORECASE = 1 D["hostdir"] = "\\\\" (D["host"] = ("host" in S && ("" == (i = S["host"]) || "." == i || "?" == i || "localhost" == i) ? ENVIRON["COMPUTERNAME"] : i)) "\\" s IGNORECASE = 0 } } function _report(p) { _report_t0 = _reportparnt = "" _report_i0(p) _tframe("_report_i0", p) return _report_t0 } function _report_i0(p, p0, p1, p2) { if (p in _tPARENT) { if (_reportparnt != (_reportparnt = _tPARENT[p])) { _report_t0 = _report_t0 _ln() _ln((z = "_ " _[_tPARENT[p]]["NAME"] " ") _getchrln("_", _CON_WIDTH - length(z) - 2)) _ln(_getchrln("#", _CON_WIDTH - 2)) _ln() } } if ("ERROR" in _[p]) { _report_t0 = _report_t0 _reporterr(p, _[p]["ERROR"]) } if ("REPORT" in _[p]) { _report_t0 = _report_t0 _ln(_[p]["REPORT"]) } } function _reporterr(p, t3, pp, t, t2) { t = "" pp = p do { ("NAME" in _[pp] ? t = _[pp]["NAME"] ": " t : "") } while (pp = _rPARENT(pp)) if (match(t3, /\x00/)) { return (substr(t3, 1, RSTART - 1) t substr(t3, RSTART + 1)) } return (t t3) } function _retarr(A, i, p, a, q) { if (isarray(A)) { i = (i == "" ? 0 : i + 0) q = A[_ARRLEN] + 0 if (i < q) { return (p A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] _retarr_i0(A, q, i, a)) } } } function _retarr_i0(A, q, i, a) { if (i < q) { return (A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] _retarr_i0(A, q, i, a)) } while (q < i) { delete A[++q] } return a } function _retarrd(A, v, i) { if (1 in A) { return (A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10] A[11] A[12] A[13] A[14] A[15] A[16] (((i = 17) in A ? _retarrd_i0(A, i) v : v))) } delete A return v } function _retarrd_i0(A, i) { if (i in A) { return (A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] ((i in A ? _retarrd_i0(A, i) : ""))) } delete A } function _rexpfn(R, t, p) { _REXPFN[""] = "" while (t) { t = _rxpfn(R, t, p) } return _REXPFN[""] } function _rexpfnend(t) { _REXPFN[""] = t } function _rexpstr(r, i, c, A) { c = split(r, A, "") r = "" for (i = 1; i <= c; i++) { r = r _REXPSTR[A[i]] } return r } function _rexpstr_i0(t, A, p0) { return (_REXPSTR[t] = "\\" t) } function _rmtsharerr(h, t) { gsub(/[\x0D\x0A]+/, "", t) if (t ~ /^The command failed: 53/) { ERRNO = "host not found: \\\\" h } else { ERRNO = t ": \\\\" h } } function _rpp(q, D, S) { _conl() _conline(q) _conl() _regpath0(D, q) _conl(_ln("DEST:") _dumparr(D)) _conl() return q } function _rrdreg(DD, p, k, t, v, c, i, q, tT, A, B, C, D) { if (! _registrytmpfile) { _registryinit() } _cmd("regedit /E \"" _registrytmpfile "\" \"" p "\" 2>&1") q = patsplit(gensub(/[\x00\xFF\xFE]+/, "", "G", _rdfile(_registrytmpfile)), A, /\x0D?\x0A\[[^\]]+\]\x0D?\x0A/, B) for (i = 1; i <= q; i++) { p = gensub(/(^[ \t\x0D\x0A]*\[)|((\\)\\+)|(\][ \t\x0D\x0A]*$)/, "\\3", "G", A[i]) DD[p "\\"] delete C[split(B[i], C, /[\x0D\x0A]+/)] for (c = 1; c in C; c++) { tt = tt C[c] if (gsub(/\\$/, "", tt)) { continue } if (tt == "") { continue } if (match(_th0(tt, tt = ""), /((^"(([^\\"]|\\.)*)")|(@))=(("(([^\\"]|\\.)*)")|(dword:([[:xdigit:]]{8}))|(hex(\(([27b])\))?:(.*)))$/, D)) { if (D[7]) { t = "STR" v = _unstr(D[8]) } else { if (D[10]) { t = "W32" v = D[11] } else { v = D[15] if (D[13]) { switch (D[14]) { case "2": t = "XSZ" break case "7": t = "MSZ" break default: t = "W64" } } else { t = "BIN" } } } DD[gensub(/(\\)\\+/, "\\1", "G", p "\\" _unstr(D[3] ((D[5] ? "(Default)" : ""))) "." t)] = v } else { _fatal("regedit: unknown output format(" c "): `" C[c] "'") } } } } function _rsqgetptr(g, p, A) { if (p in _tLINK) { _SQSTACK[g][++_SQSTACK[g][0]] = p _SQSTACK[g][++_SQSTACK[g][0]] = _SQTOPTR[g] while ((p = _tLINK[p]) in _tLINK) { _con(".") } _SQTOPTR[g] = p } if (p in _tFCHLD) { return _rsqgetptr(g, _tFCHLD[p]) } return p } function _rsqnext_i0(g, p) { if (p == _SQTOPTR[g]) { if (_SQSTACK[g][0] > 0) { _SQTOPTR[g] = _SQSTACK[g][_SQSTACK[g][0]--] return _rsqnext_i0(g, _SQSTACK[g][_SQSTACK[g][0]--]) } return } if (p in _tNEXT) { return _rsqgetptr(g, _tNEXT[p]) } return _rsqnext_i0(g, _tPARENT[p]) } function _rtn(v, A) { _conl() _conline(_val(v) " : " _val(A)) _conl() _rtn2(v, A) _conl() } function _rtn2(v, A, r, t) { r = (isarray(A) ? _typa(v, A) : _typ(v)) if ("`" > _t0 && _t0) { _conl("ggggg") } t = ((r ? "TRUE" : "FALSE")) " / " ((r > 0 ? r ">0" : r "!>0")) " / " ((r + 0 > 0 ? r "+0>0" : r "+0!>0")) " / " ((r + 0 != r ? r "+0!=" r : r "+0==" r)) " / " ((r && "`" > r ? "'`'>" r " && " r : "!('`'>" r " && " r ")")) _conl("`" r "' : " t) return r } function _rxpfn(R, t, p, i, f, A) { for (i in R) { if (match(t, i, A)) { f = R[i] if (t != (t = @f(A, substr(t, RLENGTH + 1), p))) { return t } } } return _rexpfnend(t) } function _sHARE(c, t, P, a, A) { switch (c) { case "_lib_CMDLN": return t case "_lib_APPLY": return case "_lib_HELP": return case "_lib_NAMEVER": return _ln("_share 1.000") case "_lib_BEGIN": return case "_lib_END": return } } function _sYS(c, t, P, a, A) { switch (c) { case "_lib_CMDLN": return t case "_lib_APPLY": return case "_lib_HELP": return case "_lib_NAMEVER": return case "_lib_BEGIN": return case "_lib_END": return } } function _serv_check(p) { _tframe("_serv_check_i0", p, p) } function _serv_check_i0(p, p0, p1, p2, p3, i, q, c) { if (_[p]["TYPE"] == "defsrv") { i = IGNORECASE IGNORECASE = 1 if (match(_servoutput, roi = "\\012DISPLAY_NAME: " _torexp(_[p]["SERVNAME"]))) { _creport(p, "OK: SERVICE DETECTED: " substr(_[p]["SERVNAME"], 1, 112)) } else { _dllerr(p, "service " _[p]["SERVNAME"] " not detected") } } IGNORECASE = i } function _setarrsort(f, a) { a = PROCINFO["sorted_in"] if (! f) { delete PROCINFO["sorted_in"] } else { PROCINFO["sorted_in"] = f } return a } function _setmpath(p, a) { ERRNO = "" if (p && (a = _filerd(p))) { if (_FILEIO_TMPRD) { _FILEIO_TMPATHS[_FILEIO_TMPRD] } return (_FILEIO_TMPRD = a) } else { return _warning("`" p "': cannot set temporary folder" ((ERRNO ? ": " ERRNO : ""))) } } function _sharelist(D, h, q, c, l, A, B) { delete D c = _sharextool " \\\\" ((h == "" ? h = ENVIRON["COMPUTERNAME"] : h)) " 2>&1" if (match(c = _cmd(c), /\x0AShare[^\x0A]*Remark/)) { gsub(/(^[^-]*\x0D?\x0A-+\x0D?\x0A[ \t]*)|(\x0D?\x0AThe command completed successfully.*$)/, "", c) l = RLENGTH - 7 split(c, A, /([ \t]*\x0D?\x0A)+[ \t]*/) for (c in A) { if (match(A[c], /((([^ \t:]+[ \t]+)*[^ \t:]+)[ \t]+)([A-Za-z])[ \t]*:/, B) && ++q) { D[B[2]] = (A[c] ~ /\.\.\.$/ ? _sharepath(h, B[2]) : gensub(/[ \t\\\/]*$/, "\\\\", 1, substr(A[c], 1 + B[1, "length"], l - B[1, "length"]))) } } return q } return _rmtsharerr(h, c) } function _sharepath(h, s, A) { s = _sharextool " \\\\" ((h == "" ? h = ENVIRON["COMPUTERNAME"] : h)) "\\\"" s "\" 2>&1" if (match(s = _cmd(s), /\x0APath[ \t]+([^\x0D\x0A]+)/, _SHAREPATHA0)) { return gensub(/[ \t\\\/]*$/, "\\\\", 1, _SHAREPATHA0[1]) } return _rmtsharerr(h, s) } function _shortcut(D, S) { if (isarray(D)) { if (isarray(S)) { _addarrmask(D, S, _SHORTCUTWSTRUC) } else { if (S == 0 && S == "") { _addarrmask(D, _SHORTCUTDEFAULT, _SHORTCUTWSTRUC) } else { if (_isnotfileptr(S)) { _addarrmask(D, _[S], _SHORTCUTWSTRUC) } else { if (_rd_shortcut(D, S)) { return } } } } } else { if (D == 0 && D == "") { return _NOP } else { if (_isnotfileptr(D)) { if (isarray(S)) { _addarrmask(_[D], S, _SHORTCUTWSTRUC) } else { if (S == 0 && S == "") { _addarrmask(_[D], _SHORTCUTDEFAULT, _SHORTCUTWSTRUC) } else { if (_isnotfileptr(S)) { _addarrmask(_[D], _[S], _SHORTCUTWSTRUC) } else { if (_rd_shortcut(_[D], S)) { return } } } } } else { if (isarray(S) && _wr_shortcut(D, S)) { return } else { if (S == 0 && S == "" && _wr_shortcut(D, _SHORTCUTDEFAULT)) { return } else { if (_isnotfileptr(S) && _wr_shortcut(D, _[S])) { return } else { if (_rd_shortcut(_SHRTCUTA1, S) || _wr_shortcut(D, _SHRTCUTA1)) { return } } } } } } } return 1 } function _shortcut_init(A, B, q) { _SHORTCUTERR[2] = "file not found" _SHORTCUTERR[3] = "no such filepath" _SHORTCUTERR["The system cannot find the file specified."] = "no such filepath" _SHORTCUTERR[5] = "file is folder" _SHORTCUTERR["Access is denied."] = "file is folder" _SHORTCUTERR[123] = "filepath syntax error" _SHORTCUTERR["The filename, directory name, or volume label syntax is incorrect."] = "filepath syntax error" q = "target\t\t\t/T:\t\t\t\tTargetPath=\t\t\t\t\ttarget?\t\t\t;\t\t\t_target\t\t\t\t\t\t\tTargetPathExpanded=\t\t\t\t\t\t\t;\t\t\tparameters\t\t\t/P:\t\t\t\tArguments=\t\t\t\t\tparaneters?\t\t\t;\t\t\t_parameters\t\t\t\t\t\t\tArgumentsExpanded=\t\t\t\t\t\t\t;\t\t\tstartdir\t\t\t/W:\t\t\t\tWorkingDirectory=\t\t\t\tstartdir?\t\t\t;\t\t\t_startdir\t\t\t\t\t\t\tWorkingDirectoryExpanded=\t\t\t\t\t\t;\t\t\trunstyle\t\t\t/R:\t\t\t\tRunStyle=\t\t\t\t\t1\t\t\t\t;\t\t\ticon,index\t\t\t/I:\t\t\t\tIconLocation=\t\t\t\ticon,index?\t\t\t;\t\t\txicon,index\t\t\t\t\t\t\tIconLocationExpanded=\t\t\t\t\t\t\t;\t\t\tshortcut key\t\t/H:\t\t\t\tHotKey=\t\t\t\t\t0\t\t\t\t;\t\t\tdescription\t\t\t/D:\t\t\t\tDescription=\t\t\t\t_env4: default shortcut\t" split(q, _SHRTCUTA0, /[ \t]*;[ \t]*/) for (q in _SHRTCUTA0) { if (match(_SHRTCUTA0[q], /^([^\t]+)\t+([^\t]+)(\t+([^\t]+)(\t+([^\t]+))?)?/, B)) { if (B[3] == "") { _SHORTCUTRSTRUC[B[2]] = B[1] } else { if (B[5] == "") { _SHORTCUTWSTRUC[_SHORTCUTRSTRUC[B[4]] = B[1]] = B[2] delete _SHORTCUTDEFAULT[B[1]] } else { _SHORTCUTWSTRUC[_SHORTCUTRSTRUC[B[4]] = B[1]] = B[2] _SHORTCUTDEFAULT[B[1]] = B[6] } } } else { _fatal("_shortcut.init: _shortcut_struc: syntax error: `" _SHRTCUTA0[q] "'") } } _SHRTCUTA1[""] delete _SHRTCUTA1[""] _shortcut_fpath = "\\\\localhost\\eGAWK\\LIB\\_shortcut\\_shortcut.exe" } function _shortcut_nerr(t, s, A) { if (match(t, /\x0ASystem error (-?[0-9]+)[^\x0D\x0A]*[\x0D\x0A]+([^\x0D\x0A]+)/, A)) { ERRNO = ((A[1] in _SHORTCUTERR ? _SHORTCUTERR[A[1]] : (A[2] in _SHORTCUTERR ? _SHORTCUTERR[A[2]] : tolower(gensub(/^(The )?(((.*)\.$)|(.*[^\.]$))/, "\\4\\5", "G", A[2])) "(" A[1] ")"))) ((s ? ": `" s "'" : "")) } else { return 1 } } function _split_regpath() { _rpp(" / / / / ") _rpp(" / / / / huj ") _rpp(" / / / / huj / ") _rpp(" / / / / huj / pizda.TSR ") _rpp(" / / / / hklm ") _rpp(" / / / / hklm / ") _rpp(" / / / / hklm / huj ") _rpp(" / / / / hklm / huj / ") _rpp(" / / / / hklm / huj / \tpizda.TSR ") _conl() _conl("########################################################################################") _conl() _rpp(" / / / / hklm / software / altiris / fi le . ex t ") _rpp(" / / . / / hkcr / software / altiris / fi le . ex t ") _rpp(" / / ? / / hKcU / software / altiris / fi le . ex t ") _rpp(" / / lOcAlHoSt / / hKu / software / altiris / fi le . ex t ") _rpp(" / / ho st / / hKcc / software / altiris / fi le . ex t ") _rpp(" / / ho st / / hKPd / software / altiris / fi le . ex t ") _conl() _conl("########################################################################################") _conl() } function _splitpath_test() { _conl() _conl("########################################################################################") _conl() _fpp(" ") _fpp(" fi le . ex t ") _fpp(" di r0 / / ") _fpp(" di r0 / / fi le . ex t ") _fpp(" / ") _fpp(" / fi le . ex t ") _fpp(" / di r0 / / ") _fpp(" / di r0 / / fi le . ex t ") _conl() _conl("########################################################################################") _conl() _fpp(" c : ") _fpp(" c : fi le . ex t ") _fpp(" c : di r0 / / ") _fpp(" c : di r0 / / fi le . ex t ") _fpp(" c : / / ") _fpp(" c : / / fi le . ex t ") _fpp(" c : / / di r0 / / ") _fpp(" c : / / di r0 / / fi le . ex t ") _conl() _conl("########################################################################################") _conl() _fpp(" / / ") _fpp(" / / ho st . hs t ") _fpp(" / / ho st / / ") _fpp(" / / ho st / / fi le . ex t ") _fpp(" / / ho st / / di r0 / / ") _fpp(" / / ho st / / di r0 / / fi le . ex t ") _conl() _conl("########################################################################################") _conl() _fpp(" / / ho st / / c : ") _fpp(" / / ho st / / c : fi le . ex t ") _fpp(" / / ho st / / c : di r0 / / ") _fpp(" / / ho st / / c : di r0 / / fi le . ex t ") _fpp(" / / ho st / / c : / / ") _fpp(" / / ho st / / c : / / fi le . ex t ") _fpp(" / / ho st / / c : / / di r0 / / ") _fpp(" / / ho st / / c : / / di r0 / / fi le . ex t ") _conl() _conl("########################################################################################") _conl() _fpp(" http : / / / ") _fpp(" http : / / / si te . ex t ") _fpp(" http : / / / si te / / ") _fpp(" http : / / / si te / / fi le . ex t ") _fpp(" http : / / / si te / / di r0 / / ") _fpp(" http : / / / si te / / di r0 / / fi le . ex t ") _conl() _conl("########################################################################################") _conl() _fpp(" ftp : / / / : po rt ") _fpp(" ftp : / / / si te . ex t : po rt ") _fpp(" ftp : / / / si te : po rt / / ") _fpp(" ftp : / / / si te : po rt / / fi le . ex t ") _fpp(" ftp : / / / si te : po rt / / di r0 / / ") _fpp(" ftp : / / / si te : po rt / / di r0 / / fi le . ex t ") _conl() _conl("## //. ######################################################################################") _conl() _fpp(" / / . ") _fpp(" / / . / / ") _fpp(" / / . / / com 56 ") _fpp(" / / . / / com 56 / / ") _fpp(" / / . / / c : ") _fpp(" / / . / / c : / / ") _fpp(" / / . / / c : com 56 ") _fpp(" / / . / / c : com 56 / / ") _fpp(" / / . / / c : / / com 56 ") _fpp(" / / . / / c : / / com 56 / / ") _conl() _conl("## //? ######################################################################################") _conl() _fpp(" / / ? ") _fpp(" / / ? / / ") _fpp(" / / ? / / com 56 ") _fpp(" / / ? / / com 56 / / ") _fpp(" / / ? / / c : ") _fpp(" / / ? / / c : / / ") _fpp(" / / ? / / c : com 56 ") _fpp(" / / ? / / c : com 56 / / ") _fpp(" / / ? / / c : / / com 56 ") _fpp(" / / ? / / c : / / com 56 / / ") _conl() _conl("########################################################################################") _conl() _fpp(" / / / ") _fpp(" / / / . hs t ") _fpp(" / / / / fi le . ex t ") _fpp(" / / / / di r0 / / ") _fpp(" / / / / di r0 / / di r1 / fi le . ex t ") _fpp(" / / / / c : ") _fpp(" / / / / c : fi le . ex t ") _fpp(" / / / / c : di r0 / / ") _fpp(" / / / / c : di r0 / / fi le . ex t ") _fpp(" / / / / c : / / ") _fpp(" / / / / c : / / fi le . ex t ") _fpp(" / / / / c : / / di r0 / / ") _fpp(" / / / / c : / / di r0 / / fi le . ex t ") _conl() _conl("########################################################################################") _conl() return } function _splitstr(A, t, r) { if (_istr(t)) { if (_splitstr_i0(A, t) > 0) { return _splitstrp0 } if (_istr(r)) { return _splitstr_i0(A, r) } } else { if (it == "A") { if (length(t) > 0) { _movarr(A, t) return (0 - length(A)) } } _istr(r) } if (it == "A") { if (length(r) > 0) { _movarr(A, r) return (0 - length(A)) } } } function _splitstr_i0(A, t, C) { if (2 > (_splitstrq0 = patsplit(t, _SPLITSTRA0, /([^,\xB4]*\xB4.)*[^,\xB4]*/))) { _splitstrq0 = split(gensub(/\xB4(.)/, "\\1", "G", t), _SPLITSTRA0, "") } delete A _splitstri0 = _splitstrp0 = 0 while (_splitstri0++ < _splitstrq0) { if ((t = gensub(/\xB4(.)/, "\\1", "G", _SPLITSTRA0[_splitstri0])) in C || t == "") { continue } C[A[++_splitstrp0] = t] } return _splitstrp0 } function _strtorexp(t) { gsub(/[\\\.\?\*\+\-\(\)\{\}\[\]\^\$\/\|]/, "\\\\&", t) t = split(t, _TOREXP_STRA, /[\x00-\x1F]/, _TOREXP_STRB) _torexp_strt0 = "" for (_torexp_stri0 = 1; _torexp_stri0 < t; _torexp_stri0++) { _torexp_strt0 = _torexp_strt0 _TOREXP_STRA[_torexp_stri0] "\\" _QASC[_TOREXP_STRB[_torexp_stri0]] } return (_torexp_strt0 _TOREXP_STRA[_torexp_stri0]) } function _subseqoff(r, B) { patsplit(r, B, /\x84[^\x94]*\x94/) return gensub(/\x84[^\x94]*\x94/, "\204", "G", r) } function _subseqon(B, r, F, f, s, e, q, i, A) { q = split(r, A, /\x84/) r = "" f = F[""] for (i = 1; i < q; i++) { s = substr(e = B[i], 2, 1) s = (s in F ? F[s] : F[""]) r = r (@f(A[i])) (@s(substr(e, 3, length(e) - 3))) } return (r (@f(A[i]))) } function _sysinfo(D, h) { h = "wmic /NODE: \"" h "\" OS 2>NUL" if (split(_cmd(h), _SYSINFOA0, /[\x0D\x0A]+/) == 3) { _sysinfol0 = length(h = _SYSINFOA0[2]) + 1 _sysinfoq0 = _sysinfoq1 = split(_SYSINFOA0[1], _SYSINFOA0, / +/, _SYSINFOB0) while (--_sysinfoq0 > 0) { D[_sysinfof0] = gensub(/^ +| +$/, "", "G", substr(h, _sysinfol0 = _sysinfol0 - (_sysinfol1 = length(_sysinfof0 = _SYSINFOA0[_sysinfoq0]) + length(_SYSINFOB0[_sysinfoq0])), _sysinfol1)) } return (_sysinfoq1 - 1) } } function _tOBJ(c, t, P) { switch (c) { case "_lib_CMDLN": return t case "_lib_APPLY": return case "_lib_HELP": return case "_lib_NAMEVER": return _ln("_tOBJ 3.0") case "_lib_BEGIN": return case "_lib_END": return case "_lib_CLEANUP": return _tOBJ_CLEANUP() } } function _tOBJ_CLEANUP(p) { for (p in UIDSDEL) { delete _ptr[p] delete _tPREV[p] delete _tPARENT[p] delete _tNEXT[p] delete _tFCHLD[p] delete _tQCHLD[p] delete _tLCHLD[p] delete _TMP0[p] delete _TMP1[p] delete _tLINK[p] delete _tCLASS[p] } } function _tabtospc(t, ts, xc, a, c, n, A, B) { if (! ts) { ts = _TAB_STEP_DEFAULT } c = split("." t, A, /\t+/, B) A[1] = substr(A[1], 2) t = "" for (n = 1; n <= c; n++) { t = t A[n] _getchrln(" ", (xc = length(B[n]) * ts + int((a = xc + length(A[n])) / ts) * ts) - a) } return t } function _tapi(p, f, p0, p1, p2, p3, c) { c = p do { if (f in _[c]["API"]) { f = _[c]["API"][f] return @f(p, p0, p1, p2, p3) } c = _[c]["CLASS"] } while ("CLASS" in _[c]) } function _tbframe(f, p, p0, p1) { delete _t_ENDF[++_t_ENDF[0]] f = (p ? _tbframe_i0(f, p, p0, p1) : "") --_t_ENDF[0] return f } function _tbframe_i0(f, p, p0, p1, a) { while (p in _tLINK) { p = _tLINK[p] } return ((p in _tLCHLD ? _tmbframe(f, _tLCHLD[p], p0, p1) : @f(p, p0, p1))) } function _tbframex(f, p, p0, p1) { delete _t_ENDF[++_t_ENDF[0]] f = (p ? _tbframex_i0(f, p, p0, p1) : "") --_t_ENDF[0] return f } function _tbframex_i0(f, p, p0, p1) { while (p in _tLINK) { p = _tLINK[p] } return ((p in _tLCHLD ? _tmbframex(f, _tLCHLD[p], p0, p1) : @f(p, p0, p1))) } function _tbpass(f, p, p0, p1) { delete _t_ENDF[++_t_ENDF[0]] f = (p ? _tbpass_i0(f, p, p0, p1) : "") --_t_ENDF[0] return f } function _tbpass_i0(f, p, p0, p1, a) { while (p in _tLINK) { p = _tLINK[p] } return ((p in _tLCHLD ? _tmbpass(f, _tLCHLD[p], p0, p1) : @f(p, p0, p1))) } function _tbpassx(f, p, p0, p1) { delete _t_ENDF[++_t_ENDF[0]] f = (p ? _tbpassx_i0(f, p, p0, p1) : "") --_t_ENDF[0] return f } function _tbpassx_i0(f, p, p0, p1) { while (p in _tLINK) { p = _tLINK[p] } return ((p in _tLCHLD ? _tmbpassx(f, _tLCHLD[p], p0, p1) : @f(p, p0, p1))) } function _tbrochld(p, f, pp) { if (p) { if (p in _tFCHLD) { f = _tFCHLD[p] delete _tFCHLD[p] delete _tLCHLD[p] if (p in _tPARENT) { pp = _tPARENT[p] delete _tPARENT[p] if (p in _tPREV) { _tNEXT[_tPREV[f] = _tPREV[p]] = f delete _tPREV[p] } else { _tFCHLD[pp] = f } for (; f in _tNEXT; f = _tNEXT[f]) { _tPARENT[f] = pp } _tPARENT[f] = pp if (p in _tNEXT) { _tPREV[_tNEXT[f] = _tNEXT[p]] = f delete _tNEXT[p] } else { _tLCHLD[pp] = f } _tQCHLD[pp] = _tQCHLD[pp] + _tQCHLD[p] - 1 delete _tQCHLD[p] return f } else { delete _tQCHLD[p] if (p in _tPREV) { _tNEXT[_tPREV[f] = _tPREV[p]] = f delete _tPREV[p] } for (; f in _tNEXT; f = _tNEXT[f]) { delete _tPARENT[f] } delete _tPARENT[f] if (p in _tNEXT) { _tPREV[_tNEXT[f] = _tNEXT[p]] = f delete _tNEXT[p] } return f } } else { if (p in _tPARENT) { pp = _tPARENT[p] delete _tPARENT[p] if (p in _tPREV) { if (p in _tNEXT) { _tNEXT[_tPREV[f] = _tPREV[p]] = f = _tNEXT[p] delete _tNEXT[p] } else { delete _tNEXT[_tLCHLD[pp] = _tPREV[p]] } delete _tPREV[p] _tQCHLD[pp]-- } else { if (p in _tNEXT) { delete _tPREV[_tFCHLD[pp] = _tNEXT[p]] delete _tNEXT[p] _tQCHLD[pp]-- } else { delete _tFCHLD[pp] delete _tLCHLD[pp] delete _tQCHLD[pp] } } } else { if (p in _tPREV) { if (p in _tNEXT) { _tNEXT[_tPREV[f] = _tPREV[p]] = f = _tNEXT[p] delete _tNEXT[p] } else { delete _tNEXT[_tPREV[p]] } delete _tPREV[p] } else { if (p in _tNEXT) { delete _tPREV[_tNEXT[p]] delete _tNEXT[p] } } } } } return p } function _tbrunframe(f, p, p0, p1) { return _tbframe((f ? f : "_trunframe_i0"), p, p0, p1) } function _tbrunframex(f, p, p0, p1) { return _tbframex((f ? f : "_trunframe_i0"), p, p0, p1) } function _tbrunpass(f, p, p0, p1) { return _tbpass((f ? f : "_trunframe_i0"), p, p0, p1) } function _tbrunpassx(f, p, p0, p1) { return _tbpassx((f ? f : "_trunframe_i0"), p, p0, p1) } function _tdel(p, i) { if (p in _) { _texclude(p) for (i in _ptr[p]) { if (isarray(_ptr[p][i])) { _tdel_i1(_ptr[p][i]) } else { if (i = _ptr[p][i]) { _tdel(i) } } } if (p in _tFCHLD) { i = _tFCHLD[p] do { i = ((i in _tNEXT ? _tNEXT[i] : "")) _tdel_i0(i) } while (i) } delete _[p] _UIDSDEL[p] } } function _tdel_i0(p, i) { for (i in _ptr[p]) { if (isarray(_ptr[p][i])) { _tdel_i1(_ptr[p][i]) } else { if (i = _ptr[p][i]) { _tdel(i) } } } if (p in _tFCHLD) { i = _tFCHLD[p] do { i = ((i in _tNEXT ? _tNEXT[i] : "")) _tdel_i0(i) } while (i) } delete _[p] _UIDSDEL[p] } function _tdel_i1(A, i) { for (i in A) { if (isarray(A[i])) { _tdel_i1(A[i]) } else { if (i = A[i]) { _tdel(i) } } } } function _tdelete(p, v) { if (p) { _wLCHLD(_tDELPTR, p) } return v } function _tdelitem(p) { if (p) { if ("HOST" in _PTR[p] && "ITEMNAME" in _[p]) { return _wLCHLD(_PTR[_PTR[p]["HOST"]]["ITEM"][_[p]["ITEMNAME"]], p) } _tdelete(p) return p } } function _tend(a, b) { if (b == "") { return (_t_ENDF[_t_ENDF[0]] = a) } else { return (_t_ENDF[_t_ENDF[0] + a] = b) } } function _texclude(p, v, pp) { if (p in _) { if (p in _tPARENT) { pp = _tPARENT[p] delete _tPARENT[p] if (p in _tPREV) { if (p in _tNEXT) { _tPREV[_tNEXT[v] = _tNEXT[p]] = v = _tPREV[p] delete _tNEXT[p] } else { delete _tNEXT[_tLCHLD[pp] = _tPREV[p]] } delete _tPREV[p] } else { if (p in _tNEXT) { delete _tPREV[_tFCHLD[pp] = _tNEXT[p]] delete _tNEXT[p] } else { delete _tFCHLD[pp] delete _tLCHLD[pp] delete _tQCHLD[pp] return p } } --_tQCHLD[pp] } else { if (p in _tPREV) { if (p in _tNEXT) { _tPREV[_tNEXT[v] = _tNEXT[p]] = v = _tPREV[p] delete _tNEXT[p] } else { delete _tNEXT[_tPREV[p]] } delete _tPREV[p] } else { if (p in _tNEXT) { delete _tPREV[_tNEXT[p]] delete _tNEXT[p] } } } return p } } function _tframe(fF, p, p0, p1, p2) { delete _t_ENDF[++_t_ENDF[0]] p = (_isptr(p) ? (isarray(fF) ? _tframe_i1(fF, p, p0, p1, p2) : _tframe_i0(fF, p, p0, p1, p2)) : "") --_t_ENDF[0] return p } function _tframe0(f, p, p0, p1, p2, p3, A) { if (_isptr(p)) { if (isarray(f)) { return _tframe0_i0(f, p) } _tframex_p0(A, f, 0) return _th0(_tframe0_i0(A, p), --_TEND[_ARRLEN]) } } function _tframe0_i0(A, p, f) { if (p in _tLINK) { _tframe_link = p if ("`" in A) { f = A["`"] while (p in _tLINK) { @f(p = _tLINK[p]) } } else { while (p in _tLINK) { p = _tLINK[p] } } } else { _tframe_link = "" } if (p in _tFCHLD) { return (_tframe0_i2(A, "^", p) _tframe0_i1(A, _tFCHLD[p])) } return _tframe0_i2(A, ".", p) } function _tframe0_i1(A, p) { if (_TEND[_ARRLEN] in _TEND) { return } if (p in _tNEXT) { return (_tframe0_i0(A, p) _tframe0_i1(A, _tNEXT[p])) } return _tframe0_i0(A, p) } function _tframe0_i2(A, m, p) { _tframe_dlink = p while (p in _tDLINK) { p = _tDLINK[p] } if (m in A) { if (m "~" in A) { if (! (_TYPEWORD in _[p]) || A[m "~"] !~ _[p][_TYPEWORD]) { return } } m = A[m] return @m(p) } } function _tframe1(f, p, p0, p1, p2, p3, A) { if (_isptr(p)) { if (isarray(f)) { return _tframe1_i0(f, p, p0) } _tframex_p0(A, f, 1) return _th0(_tframe1_i0(A, p, p0), --_TEND[_ARRLEN]) } } function _tframe1_i0(A, p, p0) { _tframe_link = p while (p in _tLINK) { p = _tLINK[p] } if (p in _tFCHLD) { return (_tframe1_i2(A, "^", p, p0) _tframe1_i1(A, _tFCHLD[p], p0)) } return _tframe1_i2(A, ".", p, p0) } function _tframe1_i1(A, p, p0) { if (_TEND[_ARRLEN] in _TEND) { return } if (p in _tNEXT) { return (_tframe1_i0(A, p, p0) _tframe1_i1(A, _tNEXT[p], p0)) } return _tframe1_i0(A, p, p0) } function _tframe1_i2(A, m, p, p0) { _tframe_dlink = p while (p in _tDLINK) { p = _tDLINK[p] } if (m in A) { if (m "~" in A) { if (! (_TYPEWORD in _[p]) || A[m "~"] !~ _[p][_TYPEWORD]) { return } } m = A[m] return @m(p, p0) } } function _tframe2(f, p, p0, p1, p2, p3, A) { if (_isptr(p)) { if (isarray(f)) { return _tframe2_i0(f, p, p0, p1) } _tframex_p0(A, f, 2) return _th0(_tframe2_i0(A, p, p0, p1), --_TEND[_ARRLEN]) } } function _tframe2_i0(A, p, p0, p1) { _tframe_link = p while (p in _tLINK) { p = _tLINK[p] } if (p in _tFCHLD) { return (_tframe2_i2(A, "^", p, p0, p1) _tframe2_i1(A, _tFCHLD[p], p0, p1)) } return _tframe2_i2(A, ".", p, p0, p1) } function _tframe2_i1(A, p, p0, p1) { if (_TEND[_ARRLEN] in _TEND) { return } if (p in _tNEXT) { return (_tframe2_i0(A, p, p0, p1) _tframe2_i1(A, _tNEXT[p], p0, p1)) } return _tframe2_i0(A, p, p0, p1) } function _tframe2_i2(A, m, p, p0, p1) { _tframe_dlink = p while (p in _tDLINK) { p = _tDLINK[p] } if (m in A) { if (m "~" in A) { if (! (_TYPEWORD in _[p]) || A[m "~"] !~ _[p][_TYPEWORD]) { return } } m = A[m] return @m(p, p0, p1) } } function _tframe3(f, p, p0, p1, p2, p3, A) { if (_isptr(p)) { if (isarray(f)) { return _tframe3_i0(f, p, p0, p1, p2) } _tframex_p0(A, f, 3) return _th0(_tframe3_i0(A, p, p0, p1, p2), --_TEND[_ARRLEN]) } } function _tframe3_i0(A, p, p0, p1, p2) { _tframe_link = p while (p in _tLINK) { p = _tLINK[p] } if (p in _tFCHLD) { return (_tframe3_i2(A, "^", p, p0, p1, p2) _tframe3_i1(A, _tFCHLD[p], p0, p1, p2)) } return _tframe3_i2(A, ".", p, p0, p1, p2) } function _tframe3_i1(A, p, p0, p1, p2) { if (_TEND[_ARRLEN] in _TEND) { return } if (p in _tNEXT) { return (_tframe3_i0(A, p, p0, p1, p2) _tframe3_i1(A, _tNEXT[p], p0, p1, p2)) } return _tframe3_i0(A, p, p0, p1, p2) } function _tframe3_i2(A, m, p, p0, p1, p2) { _tframe_dlink = p while (p in _tDLINK) { p = _tDLINK[p] } if (m in A) { if (m "~" in A) { if (! (_TYPEWORD in _[p]) || A[m "~"] !~ _[p][_TYPEWORD]) { return } } m = A[m] return @m(p, p0, p1, p2) } } function _tframe4(f, p, p0, p1, p2, p3, A) { if (_isptr(p)) { if (isarray(f)) { return _tframe4_i0(f, p, p0, p1, p2, p3) } _tframex_p0(A, f, 4) return _th0(_tframe4_i0(A, p, p0, p1, p2, p3), --_TEND[_ARRLEN]) } } function _tframe4_i0(A, p, p0, p1, p2, p3) { _tframe_link = p while (p in _tLINK) { p = _tLINK[p] } if (p in _tFCHLD) { return (_tframe4_i2(A, "^", p, p0, p1, p2, p3) _tframe4_i1(A, _tFCHLD[p], p0, p1, p2, p3)) } return _tframe4_i2(A, ".", p, p0, p1, p2, p3) } function _tframe4_i1(A, p, p0, p1, p2, p3) { if (_TEND[_ARRLEN] in _TEND) { return } if (p in _tNEXT) { return (_tframe4_i0(A, p, p0, p1, p2, p3) _tframe4_i1(A, _tNEXT[p], p0, p1, p2, p3)) } return _tframe4_i0(A, p, p0, p1, p2, p3) } function _tframe4_i2(A, m, p, p0, p1, p2, p3) { _tframe_dlink = p while (p in _tDLINK) { p = _tDLINK[p] } if (m in A) { if (m "~" in A) { if (! (_TYPEWORD in _[p]) || A[m "~"] !~ _[p][_TYPEWORD]) { return } } m = A[m] return @m(p, p0, p1, p2, p3) } } function _tframe_i0(f, p, p0, p1, p2, a) { while (p in _tLINK) { p = _tLINK[p] } return ((p in _tFCHLD ? _tmframe_i0(f, _tFCHLD[p], p0, p1, p2) : (p in _tDLINK ? @f(_tDLINK[p], p0, p1, p2) : @f(p, p0, p1, p2)))) } function _tframe_i1(F, p, p0, p1, p2, a) { while (p in _tLINK) { p = _tLINK[p] } return ((p in _tFCHLD ? (("." in F ? _th1(a = F["."], @a(p, p0, p1, p2)) : "")) _tmframe_i1(F, _tFCHLD[p], p0, p1, p2) : (">" in F ? _th1(a = F[">"], (p in _tDLINK ? @a(_tDLINK[p], p0, p1, p2) : @a(p, p0, p1, p2))) : ""))) } function _tframex(f, p, p0, p1) { delete _t_ENDF[++_t_ENDF[0]] f = (p ? _tframex_i0(f, p, p0, p1) : "") --_t_ENDF[0] return f } function _tframex_i0(f, p, p0, p1) { while (p in _tLINK) { p = _tLINK[p] } return ((p in _tFCHLD ? _tmframex(f, _tFCHLD[p], p0, p1) : @f(p, p0, p1))) } function _tframex_p0(A, f, q, i, B, C) { _tframe_qparam = q delete _TEND[++_TEND[_ARRLEN]] if (match(f, /\~(.*)$/, B)) { A["^~"] = A[".~"] = B[1] f = substr(f, 1, RSTART - 1) } A["."] = A["^"] = f return q = split(f, B, /;/) i = 0 while (i < q) { _tframex_p1(A, C[i]) while (++i <= q) { _tframex_p1(A, C[i], B[i]) } } } function _tframex_p1(A, v, i, r, B) { gsub(/[ \t]+/, "", v) while (match(v, /^([^~]*)~\/(([^\/\\]*\\.)*[^\/\\]*)\//, B)) { v = B[1] substr(v, RSTART + RLENGTH) r = B[2] } if (i == "") { if (v != "") { A["."] = v delete A["`"] delete A["^"] } if (r != "") { A[".~"] = A["`~"] = A["^~"] = r } } else { if (match(v, /!/)) { delete A[i] } else { A[i] = v if (r != "") { A[i "~"] = r } } } } function _tgenuid(c) { for (_uidcntr in _UIDARR1) { delete _UIDARR1[_uidcntr] for (c in _UIDARR0) { _UIDS[_uidcntr c] } delete _UIDS[_uidcntr c] return (_uidcntr c) } return _fatal("_tUID: Out of UID range") } function _tgenuid_init(a, b, A) { _ptrlength = 4 a = "\222\223\224\225\226\227\230\231\232" "\240\241\242\243\244\245\246\247" "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277" "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317" "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337" split(a, A, "") for (a in A) { for (b in A) { _UIDARR0[A[a] A[b]] _UIDARR1[A[a] A[b]] } } _uidcntr = A[a] A[b] } function _tgetitem(p, n, a, b) { if (p) { if (isarray(_PTR[p]["ITEM"]) && n in _PTR[p]["ITEM"]) { a = _PTR[p]["ITEM"][n] } else { a = _PTR[p]["ITEM"][n] = _N() } if (! (b = _rFCHLD(a))) { b = _wLCHLD(a, _N()) _PTR[b]["HOST"] = p _[b]["ITEMNAME"] = n } return b } } function _tgetsp(p) { return _tSTACK[p][0] } function _th0(p, p1, p2, p3) { return p } function _th1(p0, p, p2, p3) { return p } function _th10(p0, p1) { return (p1 p0) } function _th2(p0, p1, r, p3) { return p } function _th3(p0, p1, p2, r) { return p } function _tifend(l) { return ((_t_ENDF[0] + l in _t_ENDF ? (_t_ENDF[_t_ENDF[0] + l] ? _t_ENDF[_t_ENDF[0] + l] : 1) : "")) } function _tinit_i0(D, S, i) { for (i in S) { if (isarray(S[i])) { if (! isarray(D[i][""])) { delete D[i] D[i][""] delete D[i][""] } _N_i0(D[i], S[i]) } else { if (isarray(D[i])) { delete D[i] } D[i] = S[i] } } } function _tlist(L, p, f) { _tlisti1 = _tlisti0 = L[_ARRLEN] + 0 if (f == 0 && f == "") { _tlist_i0(L, p) } else { _tlistf0 = (f in _TAPI ? _TAPI[f] : f) _tlist_i1(L, p) } return (_tlisti0 - _tlisti1) } function _tlist_i0(L, p, q, i) { if (isarray(p)) { q = p[_ARRLEN] i = 0 while (i++ < q) { _tlist_i0(L, p[i]) } return } if (p in _) { while (p in _tLINK) { p = _tLINK[p] } L[++_tlisti0] = p if (p in _tFCHLD) { for (p = _tFCHLD[p]; p; p = (p in _tNEXT ? _tNEXT[p] : "")) { _tlist_i0(L, p) } } } } function _tlist_i1(L, p) { if (isarray(p)) { q = p[_ARRLEN] i = 0 while (i++ < q) { _tlist_i1(L, p[i]) } return } if (p in _) { while (p in _tLINK) { p = _tLINK[p] } if (_tlistf0 in _[p]) { L[++_tlisti0] = p } if (p in _tFCHLD) { for (p = _tFCHLD[p]; p; p = (p in _tNEXT ? _tNEXT[p] : "")) { _tlist_i1(L, p) } } } } function _tmbframe(f, p, p0, p1, t) { while (p && ! (_t_ENDF[0] in _t_ENDF)) { t = t _tbframe_i0(f, p, p0, p1, p = (p in _tPREV ? _tPREV[p] : "")) } return t } function _tmbframex(f, p, p0, p1, t) { while (p && ! (_t_ENDF[0] in _t_ENDF)) { t = t _tbframex_i0(f, p, p0, p1) p = (p in _tPREV ? _tPREV[p] : "") } return t } function _tmbpass(f, p, p0, p1) { while (p && ! (_t_ENDF[0] in _t_ENDF)) { p0 = _tbpass_i0(f, p, p0, p1, p = (p in _tPREV ? _tPREV[p] : "")) } return p0 } function _tmbpassx(f, p, p0, p1) { while (p && ! (_t_ENDF[0] in _t_ENDF)) { p0 = _tbpassx_i0(f, p, p0, p1) p = (p in _tPREV ? _tPREV[p] : "") } return p0 } function _tmframe(f, p, p0, p1, p2) { delete _t_ENDF[++_t_ENDF[0]] f = (p ? _tmframe_i0(f, p, p0, p1, p2) : "") --_t_ENDF[0] return f } function _tmframe_i0(f, p, p0, p1, p2, t) { while (p && ! (_t_ENDF[0] in _t_ENDF)) { t = t _tframe_i0(f, p, p0, p1, p2, p = (p in _tNEXT ? _tNEXT[p] : "")) } return t } function _tmframe_i1(F, p, p0, p1, p2, t) { while (p && ! (_t_ENDF[0] in _t_ENDF)) { t = t _tframe_i1(F, p, p0, p1, p2, p = (p in _tNEXT ? _tNEXT[p] : "")) } return t } function _tmframex(f, p, p0, p1, t) { while (p && ! (_t_ENDF[0] in _t_ENDF)) { t = t _tframex_i0(f, p, p0, p1) p = (p in _tNEXT ? _tNEXT[p] : "") } return t } function _tmpass(f, p, p0, p1) { while (p && ! (_t_ENDF[0] in _t_ENDF)) { p0 = _tbpass_i0(f, p, p0, p1, p = (p in _tNEXT ? _tNEXT[p] : "")) } return p0 } function _tmpassx(f, p, p0, p1) { while (p && ! (_t_ENDF[0] in _t_ENDF)) { p0 = _tbpassx_i0(f, p, p0, p1) p = (p in _tNEXT ? _tNEXT[p] : "") } return p0 } function _torexp(r) { return _subseqon(_TOREXPB0, gensub(/(^[ \t]+)|(([ \t]*(\\)+)+[ \t]*)|([ \t]+$)/, "\\4", "G", _subseqoff(r, _TOREXPB0)), _TOREXPFN) } function _torexp_cmdstr(t) { return _strtorexp(gensub(/\^(.)/, "\\1", "G", t)) } function _torexp_fmask(t) { return gensub(/\\\*/, ".*", "G", gensub(/\\\?/, ".?", "G", _strtorexp(t))) } function _torexp_init() { _TOREXPFN[""] = "_strtorexp" _TOREXPFN["~"] = "_torexp_rexp" _TOREXPFN["="] = "_strtorexp" _TOREXPFN[">"] = "_torexp_cmdstr" _TOREXPFN["#"] = "_torexp_fmask" _TOREXPFN["\""] = "_torexp_dqstr" _TOREXPFN["'"] = "_torexp_sqstr" } function _torexp_rexp(t) { return t } function _tpass(f, p, p0, p1) { delete _t_ENDF[++_t_ENDF[0]] f = (p ? _tpass_i0(f, p, p0, p1) : "") --_t_ENDF[0] return f } function _tpass_i0(f, p, p0, p1, a) { while (p in _tLINK) { p = _tLINK[p] } return ((p in _tFCHLD ? _tmpass(f, _tFCHLD[p], p0, p1) : @f(p, p0, p1))) } function _tpassx(f, p, p0, p1) { delete _t_ENDF[++_t_ENDF[0]] f = (p ? _tpassx_i0(f, p, p0, p1) : "") --_t_ENDF[0] return f } function _tpassx_i0(f, p, p0, p1) { while (p in _tLINK) { p = _tLINK[p] } return ((p in _tFCHLD ? _tmpassx(f, _tFCHLD[p], p0, p1) : @f(p, p0, p1))) } function _tpop(p, aA, a) { if ((a = _tSTACK[p][0]) > 0) { _tSTACK[p][0]-- if (isarray(_tSTACK[p][a])) { delete aA _movarr(aA, _tSTACK[p][a]) return } return _tSTACK[p][a] } _fatal("^" p ": Out of tSTACK") } function _tpush(p, aA, a) { if (isarray(aA)) { delete _tSTACK[p][a = ++_tSTACK[p][0]] _tSTACK[p][a][""] delete _tSTACK[p][a][""] _movarr(_tSTACK[p][a], aA) return } delete _tSTACK[p][a = ++_tSTACK[p][0]] return (_tSTACK[p][a] = aA) } function _tr(n, cs, H) { _rconline(n ": " cs) _rconl() if (match(cs, /^((([^\xB4:\[\|\]]*\xB4.)*[^\xB4:\[\|\]]*):)?((([^\xB4\[\|\]]*\xB4.)*[^\xB4\[\|\]]*)\[)?(([^\xB4\|\]]*\xB4.)*[^\xB4\|\]]*)?(\|(\.)?(([^\xB4\]]*\xB4.)*[^\xB4\]]*))?(\](.*))?$/, H)) { _rconl("delptr: " _une(H[2]) "'") _rconl("pfxstr: " _une(H[5]) "'") _rconl("hichr: " _une(H[7]) "'") _rconl("lochr: " _une((H[10] ? H[7] "' and " H[11] "'" : H[11] "'"))) _rconl("sfxstr: " _une(H[14]) "'") } else { _rconl("NOT MATCH!") } _rconl() } function _trace(t, d, A) { if (_ERRLOG_TF) { A["TYPE"] = "TRACE" A["TEXT"] = t _log(A, d) } } function _trunframe(f, p, p0, p1, p2) { return _tframe((f ? f : "_trunframe_i0"), p, p0, p1, p2) } function _trunframe_i0(p, p0, p1, p2, f) { if (p in _tFN) { f = _tFN[p] return @f(p, p0, p1, p2) } } function _trunframex(f, p, p0, p1) { return _tframex((f ? f : "_trunframe_i0"), p, p0, p1) } function _trunpass(f, p, p0, p1) { return _tpass((f ? f : "_trunframe_i0"), p, p0, p1) } function _trunpassx(f, p, p0, p1) { return _tpassx((f ? f : "_trunframe_i0"), p, p0, p1) } function _tsetsp(p, v) { return (_tSTACK[p][0] = v) } function _tstini() { _ini("uidel:pfx'hstr|lstr'sfx") _ini("uidel:pfx'hstr|lstr'") _ini("uidel:'hstr|lstr'sfx") _ini("uidel:'hstr|lstr'") _ini("uidel:pfx'hstr'sfx") _ini("uidel:pfx'hstr'") _ini("uidel:'hstr'sfx") _ini("uidel:'hstr'") _conl() _conl("########################################################################################") _conl() _ini("pfx'hstr|lstr'sfx") _ini("pfx'hstr|lstr'") _ini("'hstr|lstr'sfx") _ini("'hstr|lstr'") _ini("pfx'hstr'sfx") _ini("pfx'hstr'") _ini("'hstr'sfx") _ini("'hstr'") _conl() _conl("########################################################################################") _conl() _ini("uidel:pfx'`cntptr'sfx") _ini("uidel:pfx'`cntptr'") _ini("uidel:'`cntptr'sfx") _ini("uidel:'`cntptr'") _conl() _conl("########################################################################################") _conl() _ini("pfx'`cntptr'sfx") _ini("pfx'`cntptr'") _ini("'`cntptr'sfx") _ini("'`cntptr'") _conl() _conl("########################################################################################") _conl() _ini("uidel:pfx'^chrptr'sfx") _ini("uidel:pfx'^chrptr'") _ini("uidel:'^chrptr'sfx") _ini("uidel:'^chrptr'") _conl() _conl("########################################################################################") _conl() _ini("pfx'^chrptr'sfx") _ini("pfx'^chrptr'") _ini("'^chrptr'sfx") _ini("'^chrptr'") _conl() _conl("########################################################################################") _conl() } function _tstv(p, A, r, f) { if (f == "") { f = "tst_splitstr" } @f(_NOP, A, p) @f(AA0, A, p) @f(AB0, A, p) @f(AC0, A, p) @f("", A, p) @f("a", A, p) @f("\264a", A, p) @f("\264", A, p) @f("a\264\264\264,ba\264\264\264,", A, p) @f("\264,", A, p) @f(",", A, p) @f("\264a,", A, p) @f("ab,", A, p) @f("ab,\264", A, p) @f("\264a\264,,ba", A, p) @f(",a,,b\264,c,,\264a,,\264,,,", A, p) } function _typ(p) { return (_t0 = (isarray(p) ? "#" : (p == 0 ? (p == "" ? 0 : (p in _CLASSPTR ? "`" : (p ? 3 : 4))) : (p in _CLASSPTR ? "`" : (p + 0 == p ? 5 : (p ? 3 : 2)))))) } function _typa(p, A) { return (_t0 = (isarray(p) ? "#" : (p == 0 ? (p == "" ? 0 : (p in A ? "`" : (p ? 3 : 4))) : (p in A ? "`" : (p + 0 == p ? 5 : (p ? 3 : 2)))))) } function _tzend(a, b) { if (b == 0 && b == "") { return (_TEND[_TEND[_ARRLEN]] = a) } else { return (_TEND[_TEND[_ARRLEN] + a] = b) } } function _uidcyc(p, i) { _dumpuidgen(p) for (i = 1; i < 64 * 8 * 6 - 1; i++) { _conl(i ":" _var(_getuid(p))) } _dumpuidgen(p) } function _une(t) { return gensub(/\xB4(.)/, "\\1", "G", t) } function _unformatrexp(t) { _formatstrq0 = split(t, _FORMATSTRA, /(\\[0-9]{1,3})|(\\x[[:xdigit:]]+)|(\\.)/, _FORMATSTRB) _formatstrs0 = "" for (t = 1; t < _formatstrq0; t++) { _formatstrs0 = _formatstrs0 _FORMATSTRA[t] ((_FORMATSTRB[t] in _QESCHR ? _QESCREXP[_FORMATSTRB[t]] : _QESCREXP[toupper(substr(_FORMATSTRB[t], length(_FORMATSTRB[t]) - 1))])) } return (_formatstrs0 _FORMATSTRA[t]) } function _unformatrexp_init(i, a) { _formatstrs0 = "\\^$.[]|()*+?{}-sSwW<>yB`'" delete _FORMATSTRB for (i = 0; i < 256; i++) { _QESCREXP["\\" _CHR[i]] = (index(_formatstrs0, _CHR[i]) ? "\\" _CHR[i] : _CHR[i]) } for (i = 0; i < 256; i++) { a = (index(_formatstrs0, _CHR[i]) ? "\\" : "") _QESCREXP[sprintf("%.2X", i)] = a _CHR[i] _QESCREXP["\\" sprintf("%.3o", i)] = a _CHR[i] if (i < 8) { _QESCREXP["\\" sprintf("%.1o", i)] = a _CHR[i] } if (i < 64) { _QESCREXP["\\" sprintf("%.2o", i)] = a _CHR[i] } if (i < 16) { _QESCREXP["\\x" sprintf("%.1X", i)] = _QESCREXP["\\x" sprintf("%.1x", i)] = a _CHR[i] } } patsplit("a" 7 "b" 8 "f" 12 "n" 10 "r" 13 "t" 9 "v" 11, _FORMATSTRA, /[^0-9]/, _FORMATSTRB) for (i in _FORMATSTRA) { _QESCREXP["\\" _FORMATSTRA[i]] = _CHR[_FORMATSTRB[i] + 0] } } function _unformatstr(t) { _formatstrq0 = split(t, _FORMATSTRA, /(\\[0-9]{1,3})|(\\x[[:xdigit:]]+)|(\\.)/, _FORMATSTRB) _formatstrs0 = "" for (t = 1; t < _formatstrq0; t++) { _formatstrs0 = _formatstrs0 _FORMATSTRA[t] ((_FORMATSTRB[t] in _QESCHR ? _QESCHR[_FORMATSTRB[t]] : _QESCHR[toupper(substr(_FORMATSTRB[t], length(_FORMATSTRB[t]) - 1))])) } return (_formatstrs0 _FORMATSTRA[t]) } function _unformatstr_init(i) { for (i = 0; i < 256; i++) { _QESCHR["\\" _CHR[i]] = _CHR[i] } for (i = 0; i < 256; i++) { _QESCHR[sprintf("%.2X", i)] = _CHR[i] _QESCHR["\\" sprintf("%.3o", i)] = _CHR[i] if (i < 8) { _QESCHR["\\" sprintf("%.1o", i)] = _CHR[i] } if (i < 64) { _QESCHR["\\" sprintf("%.2o", i)] = _CHR[i] } if (i < 16) { _QESCHR["\\x" sprintf("%.1X", i)] = _QESCHR["\\x" sprintf("%.1x", i)] = _CHR[i] } } i = "a" 7 "b" 8 "f" 12 "n" 10 "r" 13 "t" 9 "v" 11 patsplit(i, _FORMATSTRA, /[^0-9]/, _FORMATSTRB) for (i in _FORMATSTRA) { _QESCHR["\\" _FORMATSTRA[i]] = _CHR[_FORMATSTRB[i] + 0] } } function _uninit_del(A, i, p0) { _del(i) } function _unstr(t) { return gensub(/\\(.)/, "\\1", "G", t) } function _untmp(f, a) { if (f = filepath(f)) { if (match(f, /\\$/)) { _deletepfx(_FILEIO_RDTMP, a = toupper(f)) _deletepfx(_FILEIO_RDNETMP, a) } else { delete _FILEIO_RDNETMP[toupper(f)] } return f } return "" } function _val(v, t) { if (isarray(v)) { return (_dumparr(v) _ln(t)) } if (v == 0 && v == "") { return (_ln("- (ERRNO=" ERRNO ")") _ln(t)) } return (_ln(v "'") _ln(t)) } function _val0(v) { if (isarray(v)) { return _dumparr(v) } if (v == 0 && v == "") { return "-" } return ("\"" v "\"") } function _var(v, t) { if (isarray(v)) { return (_dumparr(v) _ln(t)) } if (v == 0 && v == "") { return (_ln("- (ERRNO=" ERRNO ")") _ln(t)) } return (_ln(v "'") _ln(t)) } function _verb(t, d, A) { if (_ERRLOG_VF) { A["TYPE"] = "VERB" A["TEXT"] = t _log(A, d) } } function _wFBRO(p, v, a) { if (p) { if (v) { for (a = p; a in _tPARENT; ) { if ((a = _tPARENT[a]) == v) { return v } } if (p in _tPARENT) { p = _tPARENT[p] if (v in _tNEXT) { if (v in _tPREV) { _tPREV[_tNEXT[a] = _tNEXT[v]] = a = _tPREV[v] delete _tPREV[v] if (v in _tPARENT) { if (p == (a = _tPARENT[v])) { return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[p]] = v) } --_tQCHLD[a] } } else { if (v in _tPARENT) { if (p == (a = _tPARENT[v])) { return v } delete _tPREV[_tFCHLD[a] = _tNEXT[v]] --_tQCHLD[a] } else { delete _tPREV[_tNEXT[v]] } } ++_tQCHLD[p] return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[_tPARENT[v] = p]] = v) } else { if (v in _tPREV) { if (v in _tPARENT) { delete _tNEXT[_tLCHLD[a = _tPARENT[v]] = _tPREV[v]] if (p == a) { delete _tPREV[v] return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[p]] = v) } --_tQCHLD[a] } else { delete _tNEXT[_tPREV[v]] } delete _tPREV[v] } else { if (v in _tPARENT) { if (p == (a = _tPARENT[v])) { return v } delete _tFCHLD[a] delete _tLCHLD[a] delete _tQCHLD[a] } } ++_tQCHLD[p] return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[_tPARENT[v] = p]] = v) } } else { while (p in _tPREV) { p = _tPREV[p] } if (v in _tPREV) { if (v in _tPARENT) { --_tQCHLD[a = _tPARENT[v]] delete _tPARENT[v] if (v in _tNEXT) { _tNEXT[_tPREV[a] = _tPREV[v]] = a = _tNEXT[v] } else { delete _tNEXT[_tLCHLD[a] = _tPREV[v]] } } else { if (v in _tNEXT) { _tNEXT[_tPREV[a] = _tPREV[v]] = a = _tNEXT[v] } else { delete _tNEXT[_tPREV[v]] } } delete _tPREV[v] } else { if (p == v) { return v } if (v in _tPARENT) { if (v in _tNEXT) { delete _tPREV[_tFCHLD[a = _tPARENT[v]] = _tNEXT[v]] --_tQCHLD[a] } else { delete _tLCHLD[a = _tPARENT[v]] delete _tFCHLD[a] delete _tQCHLD[a] } delete _tPARENT[v] } else { if (v in _tNEXT) { delete _tPREV[_tNEXT[v]] } } } return (_tPREV[_tNEXT[v] = p] = v) } } else { if (v == 0) { return v } return v } } else { if (p == 0) { return v } if (v) { return _texclude(v) } return v } } function _wFCHLD(p, v, a) { if (p) { if (v) { if (p == v) { return v } for (a = p; a in _tPARENT; ) { if ((a = _tPARENT[a]) == v) { return v } } if (v in _tNEXT) { if (v in _tPREV) { _tPREV[_tNEXT[a] = _tNEXT[v]] = a = _tPREV[v] delete _tPREV[v] if (v in _tPARENT) { if (p == (a = _tPARENT[v])) { return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[p]] = v) } --_tQCHLD[a] } } else { if (v in _tPARENT) { if (p == (a = _tPARENT[v])) { return v } delete _tPREV[_tFCHLD[a] = _tNEXT[v]] --_tQCHLD[a] } else { delete _tPREV[_tNEXT[v]] } } if (p in _tFCHLD) { ++_tQCHLD[p] return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[_tPARENT[v] = p]] = v) } delete _tNEXT[v] } else { if (v in _tPREV) { if (v in _tPARENT) { delete _tNEXT[_tLCHLD[a = _tPARENT[v]] = _tPREV[v]] if (p == a) { delete _tPREV[v] return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[p]] = v) } --_tQCHLD[a] } else { delete _tNEXT[_tPREV[v]] } delete _tPREV[v] } else { if (v in _tPARENT) { if (p == (a = _tPARENT[v])) { return v } delete _tFCHLD[a] delete _tLCHLD[a] delete _tQCHLD[a] } } if (p in _tFCHLD) { ++_tQCHLD[p] return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[_tPARENT[v] = p]] = v) } } _tQCHLD[p] = 1 return (_tFCHLD[_tPARENT[v] = p] = _tLCHLD[p] = v) } else { if (v == 0) { if (p in _tFCHLD) { v = _tFCHLD[p] delete _tFCHLD[p] delete _tLCHLD[p] delete _tQCHLD[p] do { delete _tPARENT[v] } while (v in _tNEXT && (v = _tNEXT[v])) } } return v } } else { if (p == 0) { return v } return v } } function _wLBRO(p, v, a) { if (p) { if (v) { for (a = p; a in _tPARENT; ) { if ((a = _tPARENT[a]) == v) { return v } } if (p in _tPARENT) { p = _tPARENT[p] if (v in _tPREV) { if (v in _tNEXT) { _tNEXT[_tPREV[a] = _tPREV[v]] = a = _tNEXT[v] delete _tNEXT[v] if (v in _tPARENT) { if (p == (a = _tPARENT[v])) { return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[p]] = v) } --_tQCHLD[a] } } else { if (v in _tPARENT) { if (p == (a = _tPARENT[v])) { return v } delete _tNEXT[_tLCHLD[a] = _tPREV[v]] --_tQCHLD[a] } else { delete _tNEXT[_tPREV[v]] } } ++_tQCHLD[p] return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[_tPARENT[v] = p]] = v) } else { if (v in _tNEXT) { if (v in _tPARENT) { delete _tPREV[_tFCHLD[a = _tPARENT[v]] = _tNEXT[v]] if (p == a) { delete _tNEXT[v] return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[p]] = v) } --_tQCHLD[a] } else { delete _tPREV[_tNEXT[v]] } delete _tNEXT[v] } else { if (v in _tPARENT) { if (p == (a = _tPARENT[v])) { return v } delete _tLCHLD[a] delete _tFCHLD[a] delete _tQCHLD[a] } } ++_tQCHLD[p] return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[_tPARENT[v] = p]] = v) } } else { while (p in _tNEXT) { p = _tNEXT[p] } if (v in _tNEXT) { if (v in _tPARENT) { --_tQCHLD[a = _tPARENT[v]] delete _tPARENT[v] if (v in _tPREV) { _tPREV[_tNEXT[a] = _tNEXT[v]] = a = _tPREV[v] } else { delete _tPREV[_tFCHLD[a] = _tNEXT[v]] } } else { if (v in _tPREV) { _tPREV[_tNEXT[a] = _tNEXT[v]] = a = _tPREV[v] } else { delete _tPREV[_tNEXT[v]] } } delete _tNEXT[v] } else { if (p == v) { return v } if (v in _tPARENT) { if (v in _tPREV) { delete _tNEXT[_tLCHLD[a = _tPARENT[v]] = _tPREV[v]] --_tQCHLD[a] } else { delete _tFCHLD[a = _tPARENT[v]] delete _tLCHLD[a] delete _tQCHLD[a] } delete _tPARENT[v] } else { if (v in _tPREV) { delete _tNEXT[_tPREV[v]] } } } return (_tNEXT[_tPREV[v] = p] = v) } } else { if (v == 0) { return v } return v } } else { if (p == 0) { return v } if (v) { return _texclude(v) } return v } } function _wLCHLD(p, v, a) { if (p) { if (v) { if (p == v) { return v } for (a = p; a in _tPARENT; ) { if ((a = _tPARENT[a]) == v) { return v } } if (v in _tPREV) { if (v in _tNEXT) { _tNEXT[_tPREV[a] = _tPREV[v]] = a = _tNEXT[v] delete _tNEXT[v] if (v in _tPARENT) { if (p == (a = _tPARENT[v])) { return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[p]] = v) } --_tQCHLD[a] } } else { if (v in _tPARENT) { if (p == (a = _tPARENT[v])) { return v } delete _tNEXT[_tLCHLD[a] = _tPREV[v]] --_tQCHLD[a] } else { delete _tNEXT[_tPREV[v]] } } if (p in _tLCHLD) { ++_tQCHLD[p] return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[_tPARENT[v] = p]] = v) } delete _tPREV[v] } else { if (v in _tNEXT) { if (v in _tPARENT) { delete _tPREV[_tFCHLD[a = _tPARENT[v]] = _tNEXT[v]] if (p == a) { delete _tNEXT[v] return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[p]] = v) } --_tQCHLD[a] } else { delete _tPREV[_tNEXT[v]] } delete _tNEXT[v] } else { if (v in _tPARENT) { if (p == (a = _tPARENT[v])) { return v } delete _tLCHLD[a] delete _tFCHLD[a] delete _tQCHLD[a] } } if (p in _tLCHLD) { ++_tQCHLD[p] return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[_tPARENT[v] = p]] = v) } } _tQCHLD[p] = 1 return (_tLCHLD[_tPARENT[v] = p] = _tFCHLD[p] = v) } else { if (v == 0) { if (p in _tFCHLD) { v = _tFCHLD[p] delete _tFCHLD[p] delete _tLCHLD[p] delete _tQCHLD[p] do { delete _tPARENT[v] } while (v in _tNEXT && (v = _tNEXT[v])) } } return v } } else { if (p == 0) { return v } return v } } function _wLINK(p, v) { return (_tLINK[p] = v) } function _wNEXT(p, v, a, b) { if (p) { if (v) { if (p == v) { return v } for (a = p; a in _tPARENT; ) { if ((a = _tPARENT[a]) == v) { return v } } if (v in _tPREV) { if (p == (a = _tPREV[v])) { return v } if (v in _tNEXT) { _tPREV[_tNEXT[a] = _tNEXT[v]] = a if (v in _tPARENT) { --_tQCHLD[_tPARENT[v]] } } else { delete _tNEXT[a] if (v in _tPARENT) { _tLCHLD[b = _tPARENT[v]] = a --_tQCHLD[b] } } } else { if (v in _tNEXT) { if (v in _tPARENT) { delete _tPREV[_tFCHLD[a = _tPARENT[v]] = _tNEXT[v]] --_tQCHLD[a] } else { delete _tPREV[_tNEXT[v]] } } else { if (v in _tPARENT) { delete _tFCHLD[a = _tPARENT[v]] delete _tLCHLD[a] delete _tQCHLD[a] } } } if (p in _tNEXT) { _tPREV[_tNEXT[v] = _tNEXT[p]] = v if (p in _tPARENT) { ++_tQCHLD[_tPARENT[v] = _tPARENT[p]] } else { delete _tPARENT[v] } } else { delete _tNEXT[v] if (p in _tPARENT) { ++_tQCHLD[_tPARENT[_tLCHLD[a] = v] = a = _tPARENT[p]] } else { delete _tPARENT[v] } } return (_tNEXT[_tPREV[v] = p] = v) } else { if (v == 0) { return v } return v } } else { if (p == 0) { return v } if (v) { return _texclude(v) } return v } } function _wPARENT(p, v) { return v } function _wPREV(p, v, a, b) { if (p) { if (v) { if (p == v) { return v } for (a = p; a in _tPARENT; ) { if ((a = _tPARENT[a]) == v) { return v } } if (v in _tNEXT) { if (p == (a = _tNEXT[v])) { return v } if (v in _tPREV) { _tNEXT[_tPREV[a] = _tPREV[v]] = a if (v in _tPARENT) { --_tQCHLD[_tPARENT[v]] } } else { delete _tPREV[a] if (v in _tPARENT) { _tFCHLD[b = _tPARENT[v]] = a --_tQCHLD[b] } } } else { if (v in _tPREV) { if (v in _tPARENT) { delete _tNEXT[_tLCHLD[a = _tPARENT[v]] = _tPREV[v]] --_tQCHLD[a] } else { delete _tNEXT[_tPREV[v]] } } else { if (v in _tPARENT) { delete _tLCHLD[a = _tPARENT[v]] delete _tFCHLD[a] delete _tQCHLD[a] } } } if (p in _tPREV) { _tNEXT[_tPREV[v] = _tPREV[p]] = v if (p in _tPARENT) { ++_tQCHLD[_tPARENT[v] = _tPARENT[p]] } else { delete _tPARENT[v] } } else { delete _tPREV[v] if (p in _tPARENT) { ++_tQCHLD[_tPARENT[_tFCHLD[a] = v] = a = _tPARENT[p]] } else { delete _tPARENT[v] } } return (_tPREV[_tNEXT[v] = p] = v) } else { if (v == 0) { return v } return v } } else { if (p == 0) { return v } if (v) { return _texclude(v) } return v } } function _wQBRO(p, v) { return v } function _wQCHLD(p, v) { if (p) { if (v) { } else { if (v == 0) { if (p in _tFCHLD) { v = _tFCHLD[p] delete _tFCHLD[p] delete _tLCHLD[p] delete _tQCHLD[p] do { delete _tPARENT[v] } while (v in _tNEXT && (v = _tNEXT[v])) } } return v } } else { if (p == 0) { return v } return v } } function _warning(t, d, A) { if (_ERRLOG_WF) { A["TYPE"] = "WARNING" A["TEXT"] = t _log(A, d) } } function _wfilerdnehnd(f, t) { if ((f = _filerdne(f)) == "") { return "" } if (! ((t = _filerd(f)) in _WFILEROOTDIR)) { _cmd("md \"" t "\" 2>NUL") _WFILEROOTDIR[t] } return f } function _wonl(t) { wonl = wonl _ln(t) } function _wonline(t) { wonl = wonl _ln(substr(" _ " t " _____________________________________________________________________________________________________________________________________", 1, 126)) } function _wr_shortcut(f, S) { if (_shrtcutf0 = _filepath(f)) { ERRNO = "" _shrtcuta0 = _shortcut_fpath " /A:C /F:\"" _shrtcutf0 "\" 2>&1" for (f in _SHORTCUTWSTRUC) { if (f in S) { _shrtcuta0 = _shrtcuta0 " " _SHORTCUTWSTRUC[f] "\"" (gensub(/(\\?)$/, "\\1\\1", 1, S[f])) "\"" } } if (_shortcut_nerr(_cmd(_shrtcuta0), _shrtcutf0)) { return } } return ((ERRNO ? ERRNO = "write shortcut: " ERRNO : _NOP)) } function _wrfile(f, d, a, b) { if ((f = _wfilerdnehnd(f)) == "" || _filene(f) == "") { ERRNO = "Filename error" return } a = BINMODE BINMODE = "rw" b = ORS ORS = "" ERRNO = "" print(d) > f if (ERRNO) { return "" } close(f) BINMODE = a ORS = b if (ERRNO) { return "" } return f } function _wrfile1(f, d, a, b) { if ((f = _wfilerdnehnd(f)) == "" || _filene(f) == "") { ERRNO = "Filename error" return } a = BINMODE BINMODE = "rw" b = ORS ORS = "" ERRNO = "" print(d) > f if (ERRNO) { return "" } close(f) BINMODE = a ORS = b if (ERRNO) { return "" } return d } function _yexport(p) { return _tframe("_yexport_i0", p) } function _yexport_i0(p, p0, p1, p2) { if (p in _tLOG) { return ("_ERRLOG: " _Zexparr(_tLOG[p]) "\n") } if (p in _tSTR) { p = _tSTR[p] gsub(/\x1B/, "\033;", p) gsub(/\x0A/, "\033:", p) return (p "\n") } } function cmp_str_idx(i1, v1, i2, v2) { return ((i1 < i2 ? -1 : 1)) } function filedi(f, d) { if ((f = filerdnehndi(f)) == "") { return _FILEIO_D } if (f in _FILEDIRFL) { return _FILEDIR[f] } if (f in _FILEROOT) { if (d = filegetdrvdir(_FILEROOT[f])) { _FILEDIRFL[f] } return (_FILEDIR[f] = d _FILEDIR[f]) } if ((_FILEIO_RD, f) in _FILEDIR) { return _FILEDIR[_FILEIO_RD, f] } return (_FILEDIR[_FILEIO_RD, f] = _FILEIO_D _FILEDIR[f]) } function filegetdrvdir(t, r) { if (t in _FILEDRV) { return _FILEDRV[t] } if (match(r = _cmd("cd " t " 2>NUL"), /[^\x00-\x1F]+/)) { r = gensub(/[ \t]*([\\\$\:])[ \t]*/, "\\1", "G", substr(r, RSTART, RLENGTH)) gsub(/(^[ \t]*)|([ \t]*$)/, "", r) if (match(r, /\:(.*)/)) { return (_FILEDRV[tolower(t)] = _FILEDRV[toupper(t)] = substr(r, RSTART + 1) ((r ~ /\\$/ ? "" : "\\"))) } } return "" } function filegetrootdir(f, dd, d) { if (f in _FILEDIRFL) { if (f in _FILEROOT) { return (_FILEROOT[f] _FILEDIR[f]) } if ((dd = (dd ? dd : _FILEIO_RD), f) in _FILEROOT) { return (_FILEROOT[dd, f] _FILEDIR[f]) } return ((_FILEROOT[dd, f] = fileri(dd)) _FILEDIR[f]) } if (f in _FILEROOT) { if (d = filegetdrvdir(_FILEROOT[f])) { _FILEDIRFL[f] return (_FILEROOT[f] (_FILEDIR[f] = d _FILEDIR[f])) } else { return (_FILEROOT[f] _FILEDIR[f]) } } if ((dd = (dd ? dd : _FILEIO_RD), f) in _FILEROOT) { if ((dd, f) in _FILEDIR) { return (_FILEROOT[dd, f] _FILEDIR[dd, f]) } if ((d = filedi(dd) _FILEDIR[f]) ~ /^\\/) { return (_FILEROOT[dd, f] (_FILEDIR[dd, f] = d)) } return (_FILEROOT[dd, f] d) } if ((dd, f) in _FILEDIR) { return ((_FILEROOT[dd, f] = fileri(dd)) _FILEDIR[dd, f]) } if ((d = filedi(dd) _FILEDIR[f]) ~ /^\\/) { return ((_FILEROOT[dd, f] = fileri(dd)) (_FILEDIR[dd, f] = d)) } return ((_FILEROOT[dd, f] = fileri(dd)) d) } function filerdnehndi(st, a, c, r, d, n, A) { if (st) { if ((c = toupper(st)) in _FILECACHE) { return _FILECACHE[c] } if (match(st, /^[ \t]*\\[ \t]*\\/)) { if (match(substr(st, a = RLENGTH + 1), /^[ \t]*([0-9A-Za-z\-]+)[ \t]*(\\[ \t]*([A-Za-z])[ \t]*\$[ \t]*)?(\\[ \t]*([0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+( +[0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+)*[ \t]*\\)*[ \t]*)?(([0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+( +[0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+)*)[ \t]*)?/, A)) { a = a + RLENGTH d = ((A[3] ? "\\" A[3] "$" : "")) "\\" A[5] gsub(/[ \t]*\\[ \t]*/, "\\", d) if ((st = toupper((r = "\\\\" A[1]) d (n = A[8]))) in _FILECACHE) { return (_FILECACHE[substr(c, 1, a)] = _FILECACHE[st]) } _FILEDIR[c = _FILECACHE[substr(c, 1, a)] = _FILECACHE[st] = ++_file_rootcntr] = d _FILEDIRFL[c] _FILEROOT[c] = r } else { _filepath_err = "UNC" return "" } } else { match(st, /^(([ \t]*\.[ \t]*\\[ \t]*)|(([ \t]*([A-Za-z])[ \t]*(\:)[ \t]*)?([ \t]*(\\)[ \t]*)?))([ \t]*(([ \t]*[0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+( +[0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+)*[ \t]*\\)+)[ \t]*)?([ \t]*([0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+( +[0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+)*)[ \t]*)?/, A) if (! RLENGTH) { return "" } d = A[8] A[10] gsub(/[ \t]*\\[ \t]*/, "\\", d) if ((st = toupper((r = A[5] A[6]) d (n = A[14]))) in _FILECACHE) { return (_FILECACHE[substr(c, 1, RLENGTH)] = _FILECACHE[st]) } _FILEDIR[c = _FILECACHE[substr(c, 1, RLENGTH)] = _FILECACHE[st] = ++_file_rootcntr] = d if (A[8]) { _FILEDIRFL[c] } if (r) { _FILEROOT[c] = r } } if (n) { if (match(n, /\.[^\.]*$/)) { _FILEXT[c] = substr(n, RSTART) _FILENAM[c] = substr(n, 1, RSTART - 1) } else { _FILENAM[c] = n } } return c } return "" } function fileri(f) { if ((f = filerdnehndi(f)) == "") { return _FILEIO_R } if (f in _FILEROOT) { return _FILEROOT[f] } if ((_FILEIO_RD, f) in _FILEROOT) { return _FILEROOT[_FILEIO_RD, f] } return (_FILEROOT[_FILEIO_RD, f] = _FILEIO_R) } function hujf(a, b, c) { _conl("hujf(" a "," b "," c ")") } function ncmp_str_idx(i1, v1, i2, v2) { return ((i1 < i2 ? 1 : -1)) } function test_cfg(p, z, AA0, a) { AA0[1] _fclass = _cfguid(p = _getuid(_classys), _NOP, _NOP, _NOP, _NOP, _classys) _conl() _conline() _conl() _drawuid(p) _fclass = _cfguid(p = _getuid(_classys), AA0, AA0, AA0, AA0, _classys) _conl() _conline() _conl() _drawuid(p) a = _getuid(z = _fclass = _cfguid(p = _getuid(_classys), p, "<", ">", "ab", "cd")) _conl("### " a "########") _conline() _conl() _drawuid(p) a = _getuid(_fclass = _cfguid(p = _getuid(_classys), z, 0, 0, _NOP, z)) _conl("### " a "########") _conline() _conl() _drawuid(p) a = _getuid(_fclass = _cfguid(p = _getuid(_classys), z, "^", "$", z, _classys)) _conl("### " a "########") _conline() _conl() _drawuid(p) _fclass = _cfguid(p = _getuid(_classys), "oblptr", "pfx", "sfx", "abcd") _conl() _conline() _conl() _drawuid(p) _conl("```````````````````" z "'''''''''" ((_isptr(z) ? " ptr" : " not ptr"))) _drawuid(z) } function test_splitstr(A) { AA0[-1] = "huj" AA0["A"] = "pizda" AA0[1] = "zhopa" delete AB0[AB0[""] = ""] AC0[-1] = "HUJ" AC0["A"] = "PIZDA" AC0[1] = "ZHOPA" _SPLITSTRB0["1"] wonl = "" _tstv(0, A, 0, "_tstv") _conl(wonl) _wrfile("wonl.out", wonl) } function test_uid(p, i) { _fclass = _cfguid(p = _getuid(_classys), p, "pfx", "sfx", "abc") _conl("_fclass uid: " _getuid(_fclass)) _drawuid(_fclass) _conl("_classys uid: " _getuid(_classys)) _drawuid(_classys) for (i = 1; i < 81; i++) { _conl(i ": " _getuid(_fclass)) } _drawuid(_fclass) } function tst_splitstr(t, A, R, r) { delete A A["not cleared"] _wonl() _wonline("_splitstr(" ((isarray(t) ? "ARR" ((length(t) > 0 ? "#" ((t[1] != "zhopa" ? "U" : "l")) : "")) : _val0(t))) ",A" ((isarray(R) ? ", ARR" ((length(R) > 0 ? "#" ((R[1] != "zhopa" ? "U" : "l")) : "")) : ", " _val0(R))) "):") _wonl(_val0(r = _splitstr(t, A, R))) _wonl("arrary A:") _wonl(_dumparr(A)) return r } function tts(p, uidel, psfx, cnt, chr, p5, p6, p7, im) { im = " " im = ".. .." _conl("ret: " _qparam(im, p, uidel, psfx, cnt, chr, p5, p6, p7) "'") _conl("mask: `" _qparamask "'") } function zorr(A, i, r) { if (i in A) { _conl("`" i "' in A") } else { _conl("`" i "' not in A") } r = A[i] == "" && A[i] == 0 _conl("A[" i "] status is " r) return a = a + -a _conl("``````````````" a "''''''''''''''''") } function zzer() { }