Update to opcode_handlers.py [ci skip]

This commit is contained in:
Uleat 2018-07-18 21:06:21 -04:00
parent 0cd4c0ac65
commit 22f586f110

View File

@ -14,6 +14,7 @@ values, server handler and whether opcodes are translated on tx/rx, etc...
import sys import sys
import os import os
import fnmatch
from time import time, ctime from time import time, ctime
@ -23,8 +24,10 @@ VERBOSE = False # messaging: {False - minimal, True - robust}
base_path = os.getcwd()[:-14] # '/utils/scripts' base_path = os.getcwd()[:-14] # '/utils/scripts'
base_path = base_path.replace('\\', '/') base_path = base_path.replace('\\', '/')
client_list = ['6.2', 'Titanium', 'SoF', 'SoD', 'UF', 'RoF', 'RoF2'] client_list = ['Titanium', 'SoF', 'SoD', 'UF', 'RoF', 'RoF2']
server_list = ['Login', 'World', 'Zone', 'UCS'] server_list = ['Login', 'World', 'Zone', 'UCS', 'Common'] # 'Common' is not a server..but, may contain shared functions
server_dir = {'Login': 'loginserver', 'World': 'world', 'Zone': 'zone', 'UCS': 'ucs', 'Common': 'common'}
file_exts = ['cpp', 'h']
client_opcodes = {} # x[key='Client'][key='OP_CodeName'](value='0x####') client_opcodes = {} # x[key='Client'][key='OP_CodeName'](value='0x####')
server_opcodes = {} # x[key='OP_CodeName'](value=<integer>) - opcodes apply to all servers server_opcodes = {} # x[key='OP_CodeName'](value=<integer>) - opcodes apply to all servers
@ -87,12 +90,6 @@ def main():
if fault: if fault:
faults.append('loadclienttranslators()') faults.append('loadclienttranslators()')
if not fault:
fault = not loadserverhandlers()
if fault:
faults.append('loadserverhandlers()')
if not fault: if not fault:
fault = not discoverserverhandlers() fault = not discoverserverhandlers()
@ -280,10 +277,21 @@ def loadclientopcodes():
value = int(data_line[(val_begin + 2):val_end].lower(), 16) value = int(data_line[(val_begin + 2):val_end].lower(), 16)
if value == 0: if value == 0:
if VERBOSE:
uprint('\nUNDEFINED OPCODE FOUND: ../utils/patches{0}({1}:{2}) [{3}][{4}] = {5}\n'.format(
short_name,
line_no,
key_begin,
client,
data_line[key_begin:key_end],
'0x{0}'.format(hex(value)[2:].zfill(4))
))
continue continue
client_opcodes[client][data_line[key_begin:key_end]] = '0x{0}'.format(hex(value)[2:].zfill(4)) client_opcodes[client][data_line[key_begin:key_end]] = '0x{0}'.format(hex(value)[2:].zfill(4))
if VERBOSE:
dprint('../utils/patches{0}({1}:{2}) [{3}][{4}] = {5}\n'.format( dprint('../utils/patches{0}({1}:{2}) [{3}][{4}] = {5}\n'.format(
short_name, short_name,
line_no, line_no,
@ -377,6 +385,7 @@ def loadserveropcodes():
server_opcodes[data_line[val_begin:val_end]] = value server_opcodes[data_line[val_begin:val_end]] = value
value += 1 value += 1
if VERBOSE:
dprint('../common/emu_oplist.h({0}:{1}) \'Servers\' [{2}] = {3}\n'.format( dprint('../common/emu_oplist.h({0}:{1}) \'Servers\' [{2}] = {3}\n'.format(
line_no, line_no,
val_begin, val_begin,
@ -409,6 +418,7 @@ def loadserveropcodes():
server_opcodes[data_line[val_begin:val_end]] = value server_opcodes[data_line[val_begin:val_end]] = value
value += 1 value += 1
if VERBOSE:
dprint('../common/mail_oplist.h({0}:{1}) \'Servers\' [{2}] = {3}\n'.format( dprint('../common/mail_oplist.h({0}:{1}) \'Servers\' [{2}] = {3}\n'.format(
line_no, line_no,
val_begin, val_begin,
@ -454,9 +464,6 @@ def loadclienttranslators():
for client in client_list: for client in client_list:
try: try:
if client == '6.2':
short_name = '/client62_ops.h'
else:
short_name = '/{0}_ops.h'.format(client).lower() short_name = '/{0}_ops.h'.format(client).lower()
file_name = '{0}/common/patches{1}'.format( file_name = '{0}/common/patches{1}'.format(
@ -484,6 +491,7 @@ def loadclienttranslators():
if data_line[:1] == 'E': if data_line[:1] == 'E':
client_encodes[client].append(data_line[val_begin:val_end]) client_encodes[client].append(data_line[val_begin:val_end])
if VERBOSE:
dprint('..{0}({1}:{2}) \'ENCODE\' [{3}] = {4}\n'.format( dprint('..{0}({1}:{2}) \'ENCODE\' [{3}] = {4}\n'.format(
short_name, short_name,
line_no, line_no,
@ -494,6 +502,7 @@ def loadclienttranslators():
elif data_line[:1] == 'D': elif data_line[:1] == 'D':
client_decodes[client].append(data_line[val_begin:val_end]) client_decodes[client].append(data_line[val_begin:val_end])
if VERBOSE:
dprint('..{0}({1}:{2}) \'DECODE\' [{3}] = {4}\n'.format( dprint('..{0}({1}:{2}) \'DECODE\' [{3}] = {4}\n'.format(
short_name, short_name,
line_no, line_no,
@ -542,180 +551,10 @@ def loadclienttranslators():
return True return True
def loadserverhandlers():
""" Load pre-designated SERVER OPCODE HANDLERS """
# TODO: handle remarked out definitions in file (i.e., // and /**/)
dprint('entering \'loadserverhandlers()\'\n')
bad_servers = []
for server in server_list:
try:
if server == 'Login':
vprint('No pre-designated server opcode handlers for \'Login\'')
dprint('->pass: \'Login\' server\n')
continue
elif server == 'World':
vprint('No pre-designated server opcode handlers for \'World\'')
dprint('->pass: \'World\' server\n')
continue
elif server == 'Zone':
file_name = '{0}/zone/client_packet.cpp'.format(base_path)
vprint(file_name)
with open(file_name, 'r') as data_file:
dprint('->open: \'{0}\' in \'r\' mode\n'.format(file_name))
server_handlers[server] = {}
handler_assigns = {}
step_1 = False
step_2 = False
line_no = 0
hint = 'Near beginning of file'
for data_line in data_file:
line_no += 1
read_begin = 0
if step_1 is False:
if data_line[:19] == 'void MapOpcodes() {':
step_1 = True
continue
if step_2 is False:
if data_line[0:1] == '}':
step_2 = True
continue
val_begin = data_line.find('OP_', read_begin)
val_end = data_line.find(']', val_begin)
if val_begin < 0 or val_end < 0:
continue
if not data_line[val_begin:val_end] in server_opcodes:
dprint('\nILLEGAL OPCODE FOUND: ../zone/client_packet.cpp({0}:{1}) \'{2}\'\n'.format(
line_no,
val_begin,
data_line[val_begin:val_end]
))
continue
key_begin = data_line.find('Client::', val_end)
key_end = data_line.find(';', key_begin)
if key_begin < 0 or key_end < 0:
continue
if not data_line[key_begin:key_end] in handler_assigns:
handler_assigns[data_line[key_begin:key_end]] = data_line[val_begin:val_end]
continue
if data_line[:1].isalpha():
hint_begin = 0
hint_end = data_line.find('(')
if not hint_end < 0:
hint_begin = hint_end - 1
while not hint_begin < 0:
if data_line[(hint_begin - 1):hint_begin].isspace():
if not data_line[hint_begin:(hint_begin + 1)].isalpha():
hint_begin += 1
hint = '[RX] Near {0}'.format(data_line[hint_begin:hint_end])
break
hint_begin -= 1
else:
continue
if hint[10:] in handler_assigns:
if not handler_assigns[hint[10:]] in server_handlers[server]:
server_handlers[server][handler_assigns[hint[10:]]] = []
server_handlers[server][handler_assigns[hint[10:]]].append(
'../zone/client_packet.cpp({0}:{1}) \'{2}\''.format(
line_no,
hint_begin,
hint
)
)
dprint('../zone/client_packet.cpp({0}:{1}) [{2}][{3}] = \'{4}\'\n'.format(
line_no,
hint_begin,
server,
handler_assigns[hint[10:]],
hint
))
del handler_assigns[hint[10:]]
if len(handler_assigns) > 0:
for unhandled in handler_assigns:
dprint('\nUNMATCHED DESIGNATED HANDLER FOUND: ../zone/client_packet.cpp \'{0}\'\n'.format(
unhandled
))
data_file.close()
dprint('->close: \'{0}\'\n'.format(file_name))
elif server == 'UCS':
vprint('No pre-designated server opcode handlers for \'UCS\'')
dprint('->pass: \'UCS\' server\n')
continue
else:
vprint('No pre-designated server opcode handlers for \'{0}\''.format(server))
dprint('->pass: \'{0}\' server\n'.format(server))
continue
except:
print('(Exception Error: {0}) loadserverhandlers() [{1}]'.format(
sys.exc_info()[0],
server
))
dprint('<-except: \'{0} [{1}]\'\n'.format(
sys.exc_info()[0],
server
))
bad_servers.append(server)
for bad_server in bad_servers:
if bad_server in server_handlers:
vprint('Deleting stale entries for \'{0}\' server...'.format(bad_server))
del server_handlers[bad_server]
dprint('->delete: \'{0}\' server designated handler entries\n'.format(bad_server))
dprint('leaving \'loadserverhandlers()\'\n\n')
return True
def discoverserverhandlers(): def discoverserverhandlers():
""" """
Load undefined SERVER OPCODE HANDLERS using 'discovery' method Load undefined SERVER OPCODE HANDLERS using 'discovery' method
When adding new servers and/or search locations, use the following format:
if 'Server' in locations:
locations['Server'].append('/<local_path>/<file_name>.<ext>')
Lists are instantiated for all SERVERS in SERVER LIST. The lists are then appended Lists are instantiated for all SERVERS in SERVER LIST. The lists are then appended
with location data based on the presence of the SERVER in the parent dictionary. with location data based on the presence of the SERVER in the parent dictionary.
@ -733,59 +572,19 @@ def discoverserverhandlers():
if not server in locations: if not server in locations:
locations[server] = [] locations[server] = []
if 'Login' in locations: for server in locations:
locations['Login'].append('/loginserver/client.cpp') file_path = '{0}/{1}/'.format(base_path, server_dir[server])
locations['Login'].append('/loginserver/server_manager.cpp')
locations['Login'].append('/loginserver/world_server.cpp')
if 'World' in locations: file_list = os.listdir(file_path)
locations['World'].append('/world/client.cpp')
if 'Zone' in locations: for extension in file_exts:
locations['Zone'].append('/zone/aa.cpp') dprint('->file discovery: \'{0}*.{1}\'\n'.format(file_path, extension))
locations['Zone'].append('/zone/attack.cpp')
locations['Zone'].append('/zone/bot.cpp')
locations['Zone'].append('/zone/bot_command.cpp')
locations['Zone'].append('/zone/client.cpp')
locations['Zone'].append('/zone/client_packet.cpp')
locations['Zone'].append('/zone/client_process.cpp')
locations['Zone'].append('/zone/command.cpp')
locations['Zone'].append('/zone/corpse.cpp')
locations['Zone'].append('/zone/doors.cpp')
locations['Zone'].append('/zone/effects.cpp')
locations['Zone'].append('/zone/entity.cpp')
locations['Zone'].append('/zone/exp.cpp')
locations['Zone'].append('/zone/groups.cpp')
locations['Zone'].append('/zone/guild.cpp')
locations['Zone'].append('/zone/guild_mgr.cpp')
locations['Zone'].append('/zone/horse.cpp')
locations['Zone'].append('/zone/inventory.cpp')
locations['Zone'].append('/zone/loottables.cpp')
locations['Zone'].append('/zone/merc.cpp')
locations['Zone'].append('/zone/mob.cpp')
locations['Zone'].append('/zone/mob_ai.cpp')
locations['Zone'].append('/zone/object.cpp')
locations['Zone'].append('/zone/pathing.cpp')
locations['Zone'].append('/zone/petitions.cpp')
locations['Zone'].append('/zone/questmgr.cpp')
locations['Zone'].append('/zone/raids.cpp')
locations['Zone'].append('/zone/special_attacks.cpp')
locations['Zone'].append('/zone/spells.cpp')
locations['Zone'].append('/zone/spell_effects.cpp')
locations['Zone'].append('/zone/tasks.cpp')
locations['Zone'].append('/zone/titles.cpp')
locations['Zone'].append('/zone/tradeskills.cpp')
locations['Zone'].append('/zone/trading.cpp')
locations['Zone'].append('/zone/trap.cpp')
locations['Zone'].append('/zone/tribute.cpp')
locations['Zone'].append('/zone/worldserver.cpp')
locations['Zone'].append('/zone/zone.cpp')
locations['Zone'].append('/zone/zonedb.cpp')
locations['Zone'].append('/zone/zoning.cpp')
if 'UCS' in locations: for file_name in fnmatch.filter(file_list, '*.{0}'.format(extension)):
locations['UCS'].append('/ucs/clientlist.cpp') if file_name in ['emu_oplist.h', 'mail_oplist.h', 'opcode_dispatch.h', 'opcode_map.cpp', 'op_codes.h']:
locations['UCS'].append('/ucs/database.cpp') continue
locations[server].append('/{0}/{1}'.format(server_dir[server], file_name))
for server in server_list: for server in server_list:
if not server in server_handlers: if not server in server_handlers:
@ -831,7 +630,385 @@ def discoverserverhandlers():
if op_begin < 0: if op_begin < 0:
continue continue
if data_line[(op_begin - 20):op_begin] == 'EQApplicationPacket(': # exclusions
if data_line[(op_begin - 6):op_begin] == 'Server':
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nUNHANDLED SERVER TALK OPCODE REFERENCE FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 1):op_begin].isalnum():
continue
elif data_line[read_begin:op_begin].find('//', 0) >= 0:
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nREMARKED OPCODE REFERENCE FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[read_begin:op_begin].find('Log(Logs::', 0) >= 0:
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nLOGGING OPCODE REFERENCE FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[read_begin:op_begin].find('Message', 0) >= 0:
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nCLIENT MESSAGE OPCODE REFERENCE FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[read_begin:op_begin].find('std::cout', 0) >= 0:
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nCONSOLE MESSAGE OPCODE REFERENCE FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[read_begin:op_begin].find('MakeAnyLenString', 0) >= 0:
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nSTRING FORMAT OPCODE REFERENCE FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[read_begin:op_begin].find('printf', 0) >= 0:
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nSTRING FORMAT OPCODE REFERENCE FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[read_begin:op_begin].find('VERIFY_PACKET_LENGTH', 0) >= 0:
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nPACKET LENGTH OPCODE REFERENCE FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[read_begin:op_begin].find('ConnectingOpcodes', 0) >= 0:
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nOPCODE HANDLER ASSIGNMENT REFERENCE FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[read_begin:op_begin].find('ConnectedOpcodes', 0) >= 0:
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nOPCODE HANDLER ASSIGNMENT REFERENCE FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[read_begin:op_begin].find('command_add', 0) >= 0:
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nCOMMAND HANDLER ASSIGNMENT OPCODE REFERENCE FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[read_begin:op_begin].find('luabind::value', 0) >= 0:
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nLUA API OPCODE ASSIGNMENT REFERENCE FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 3):op_begin] == '!= ':
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nILL-DEFINED OPCODE CONDITIONAL FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 2):op_begin] == '!=':
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nILL-DEFINED OPCODE CONDITIONAL FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 3):op_begin] == '>= ':
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nILL-DEFINED OPCODE CONDITIONAL FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 2):op_begin] == '>=':
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nILL-DEFINED OPCODE CONDITIONAL FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 3):op_begin] == '<= ':
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nILL-DEFINED OPCODE CONDITIONAL FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 2):op_begin] == '<=':
if VERBOSE:
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nILL-DEFINED OPCODE CONDITIONAL FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
# inclusions
elif data_line[(op_begin - 20):op_begin] == 'EQApplicationPacket(':
key_begin = op_begin
key_end = key_begin + 3
direction = '[TX]'
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
elif data_line[(op_begin - 1):op_begin] == '(' and data_line[read_begin:op_begin].find('EQApplicationPacket', 0) >= 0:
key_begin = op_begin
key_end = key_begin + 3
direction = '[TX]'
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
elif data_line[(op_begin - 2):op_begin] == ' (' and data_line[read_begin:op_begin].find('EQApplicationPacket', 0) >= 0:
key_begin = op_begin key_begin = op_begin
key_end = key_begin + 3 key_end = key_begin + 3
direction = '[TX]' direction = '[TX]'
@ -843,6 +1020,13 @@ def discoverserverhandlers():
key_end = key_begin + 3 key_end = key_begin + 3
direction = '[TX]' direction = '[TX]'
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
elif data_line[(op_begin - 11):op_begin] == '.SetOpcode(':
key_begin = op_begin
key_end = key_begin + 3
direction = '[TX]'
while data_line[key_end:(key_end + 1)].isalnum(): while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1 key_end += 1
elif data_line[(op_begin - 5):op_begin] == 'case ': elif data_line[(op_begin - 5):op_begin] == 'case ':
@ -850,6 +1034,20 @@ def discoverserverhandlers():
key_end = key_begin + 3 key_end = key_begin + 3
direction = '[RX]' direction = '[RX]'
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
elif data_line[(op_begin - 7):op_begin] == 'Handle_':
key_begin = op_begin
key_end = key_begin + 3
direction = '[RX]'
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
elif data_line[(op_begin - 15):op_begin] == 'Handle_Connect_':
key_begin = op_begin
key_end = key_begin + 3
direction = '[RX]'
while data_line[key_end:(key_end + 1)].isalnum(): while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1 key_end += 1
elif data_line[(op_begin - 3):op_begin] == '== ': elif data_line[(op_begin - 3):op_begin] == '== ':
@ -866,120 +1064,6 @@ def discoverserverhandlers():
while data_line[key_end:(key_end + 1)].isalnum(): while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1 key_end += 1
elif data_line[(op_begin - 3):op_begin] == '!= ':
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nILL-DEFINED OPCODE CONDITIONAL FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 2):op_begin] == '!=':
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nILL-DEFINED OPCODE CONDITIONAL FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 3):op_begin] == '>= ':
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nILL-DEFINED OPCODE CONDITIONAL FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 2):op_begin] == '>=':
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nILL-DEFINED OPCODE CONDITIONAL FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 3):op_begin] == '<= ':
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nILL-DEFINED OPCODE CONDITIONAL FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 2):op_begin] == '<=':
key_begin = op_begin
key_end = key_begin + 3
while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1
dprint(
'\nILL-DEFINED OPCODE CONDITIONAL FOUND: ..{0}({1}:{2}) \'{3}\'\n'
'->line: \'{4}\'\n'.format(
location,
line_no,
key_begin,
data_line[key_begin:key_end],
data_line[:-1]
)
)
continue
elif data_line[(op_begin - 2):op_begin] == '= ': elif data_line[(op_begin - 2):op_begin] == '= ':
key_begin = op_begin key_begin = op_begin
key_end = key_begin + 3 key_end = key_begin + 3
@ -994,6 +1078,7 @@ def discoverserverhandlers():
while data_line[key_end:(key_end + 1)].isalnum(): while data_line[key_end:(key_end + 1)].isalnum():
key_end += 1 key_end += 1
# fall-through
else: else:
key_begin = op_begin key_begin = op_begin
key_end = key_begin + 3 key_end = key_begin + 3
@ -1042,6 +1127,7 @@ def discoverserverhandlers():
) )
) )
if VERBOSE:
dprint('..{0}({1}:{2}) [{3}][{4}] = \'{5} {6}\'\n'.format( dprint('..{0}({1}:{2}) [{3}][{4}] = \'{5} {6}\'\n'.format(
location, location,
line_no, line_no,