Close included files after reading
[mudpy.git] / mudpy / misc.py
index 5270acd..f111b9e 100644 (file)
@@ -655,6 +655,8 @@ class User:
                 old_user.connection = self.connection
                 old_user.last_address = old_user.address
                 old_user.address = self.address
+                old_user.telopts = self.telopts
+                old_user.adjust_echoing()
 
                 # take this one out of the list and delete
                 self.remove()
@@ -1369,14 +1371,14 @@ def replace_macros(user, text, is_input=False):
         elif macro.startswith("inc:"):
             incfile = mudpy.data.find_file(macro[4:], universe=universe)
             if os.path.exists(incfile):
-                incfd = codecs.open(incfile, "r", "utf-8")
                 replacement = ""
-                for line in incfd:
-                    if line.endswith("\n") and not line.endswith("\r\n"):
-                        line = line.replace("\n", "\r\n")
-                    replacement += line
-                # lose the trailing eol
-                replacement = replacement[:-2]
+                with codecs.open(incfile, "r", "utf-8") as incfd:
+                    for line in incfd:
+                        if line.endswith("\n") and not line.endswith("\r\n"):
+                            line = line.replace("\n", "\r\n")
+                        replacement += line
+                    # lose the trailing eol
+                    replacement = replacement[:-2]
             else:
                 replacement = ""
                 log("Couldn't read included " + incfile + " file.", 7)