+
+ /** Get a pointer to the module which has hooked the given InspSocket class.
+ * @parameter port Port number
+ * @return Returns a pointer to the hooking module, or NULL
+ */
+ Module* GetIOHook(InspSocket* is);
+
+ /** Hook a module to an InspSocket class, so that it can receive notifications
+ * of low-level socket activity.
+ * @param iomod The module to hook to the socket
+ * @param is The InspSocket to attach to
+ * @return True if the hook was successful.
+ */
+ bool AddIOHook(Module* iomod, InspSocket* is);
+
+ /** Delete a module hook from an InspSocket.
+ * @param is The InspSocket to detatch from.
+ * @return True if the unhook was successful
+ */
+ bool DelIOHook(InspSocket* is);
+
+ /** Returns the fully qualified path to the inspircd directory
+ * @return The full program directory
+ */
+ std::string GetFullProgDir();
+
+ /** Returns true if a directory is valid (within the modules directory).
+ * @param dirandfile The directory and filename to check
+ * @return True if the directory is valid
+ */
+ static bool DirValid(const char* dirandfile);
+
+ /** Clean a filename, stripping the directories (and drives) from string.
+ * @param name Directory to tidy
+ * @return The cleaned filename
+ */
+ static char* CleanFilename(char* name);
+
+ /** Check if a file exists.
+ * @param file The full path to a file
+ * @return True if the file exists and is readable.
+ */
+ static bool FileExists(const char* file);
+