diff --git a/dlls/sockets/amxxmodule.cpp b/dlls/sockets/amxxmodule.cpp
index 7355cded..9d92f6f5 100755
--- a/dlls/sockets/amxxmodule.cpp
+++ b/dlls/sockets/amxxmodule.cpp
@@ -2504,6 +2504,8 @@ PFN_REQ_FNPTR g_fn_RequestFunction;
PFN_AMX_PUSH g_fn_AmxPush;
PFN_SET_TEAM_INFO g_fn_SetTeamInfo;
PFN_PLAYER_PROP_ADDR g_fn_PlayerPropAddr;
+PFN_REG_AUTH_FUNC g_fn_RegAuthFunc;
+PFN_UNREG_AUTH_FUNC g_fn_UnregAuthFunc;
// *** Exports ***
C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo)
@@ -2615,6 +2617,8 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
REQFUNC("amx_Push", g_fn_AmxPush, PFN_AMX_PUSH);
REQFUNC("SetPlayerTeamInfo", g_fn_SetTeamInfo, PFN_SET_TEAM_INFO);
REQFUNC("PlayerPropAddr", g_fn_PlayerPropAddr, PFN_PLAYER_PROP_ADDR);
+ REQFUNC("RegAuthFunc", g_fn_RegAuthFunc, PFN_REG_AUTH_FUNC);
+ REQFUNC("UnregAuthFunc", g_fn_UnregAuthFunc, PFN_UNREG_AUTH_FUNC);
#ifdef MEMORY_TEST
// Memory
@@ -2653,11 +2657,10 @@ C_DLLEXPORT int AMXX_PluginsLoaded()
// Advanced MF functions
void MF_Log(const char *fmt, ...)
{
- // :TODO: Overflow possible here
char msg[3072];
va_list arglst;
va_start(arglst, fmt);
- vsprintf(msg, fmt, arglst);
+ vsnprintf(msg, sizeof(msg) - 1, fmt, arglst);
va_end(arglst);
g_fn_Log("[%s] %s", MODULE_LOGTAG, msg);
@@ -2665,11 +2668,10 @@ void MF_Log(const char *fmt, ...)
void MF_LogError(AMX *amx, int err, const char *fmt, ...)
{
- // :TODO: Overflow possible here
char msg[3072];
va_list arglst;
va_start(arglst, fmt);
- vsprintf(msg, fmt, arglst);
+ vsnprintf(msg, sizeof(msg) - 1, fmt, arglst);
va_end(arglst);
g_fn_LogErrorFunc(amx, err, "[%s] %s", MODULE_LOGTAG, msg);
@@ -2739,6 +2741,8 @@ void ValidateMacros_DontCallThis_Smiley()
MF_RegisterFunction(NULL, "");
MF_SetPlayerTeamInfo(0, 0, "");
MF_PlayerPropAddr(0, 0);
+ MF_RegAuthFunc(NULL);
+ MF_UnregAuthFunc(NULL);
}
#endif
diff --git a/dlls/sockets/amxxmodule.h b/dlls/sockets/amxxmodule.h
index 3d20f50e..71077bdd 100755
--- a/dlls/sockets/amxxmodule.h
+++ b/dlls/sockets/amxxmodule.h
@@ -153,9 +153,137 @@ typedef int (AMXAPI *AMX_DEBUG)(struct tagAMX *amx);
#endif
#if defined _MSC_VER
- #pragma warning(disable:4103) /* disable warning message 4103 that complains
- * about pragma pack in a header file */
- #pragma warning(disable:4100) /* "'%$S' : unreferenced formal parameter" */
+ #pragma warning(disable:4103) /* disable warning message 4103 that complains
+ * about pragma pack in a header file */
+ #pragma warning(disable:4100) /* "'%$S' : unreferenced formal parameter" */
+
+ #if _MSC_VER >= 1400
+ #if !defined NO_MSVC8_AUTO_COMPAT
+
+ /* Disable deprecation warnings concerning unsafe CRT functions */
+ #if !defined _CRT_SECURE_NO_DEPRECATE
+ #define _CRT_SECURE_NO_DEPRECATE
+ #endif
+
+ /* Replace the POSIX function with ISO C++ conformant ones as they are now deprecated */
+ #define access _access
+ #define cabs _cabs
+ #define cgets _cgets
+ #define chdir _chdir
+ #define chmod _chmod
+ #define chsize _chsize
+ #define close _close
+ #define cprintf _cprintf
+ #define cputs _cputts
+ #define creat _creat
+ #define cscanf _cscanf
+ #define cwait _cwait
+ #define dup _dup
+ #define dup2 _dup2
+ #define ecvt _ecvt
+ #define eof _eof
+ #define execl _execl
+ #define execle _execle
+ #define execlp _execlp
+ #define execlpe _execlpe
+ #define execv _execv
+ #define execve _execv
+ #define execvp _execvp
+ #define execvpe _execvpe
+ #define fcloseall _fcloseall
+ #define fcvt _fcvt
+ #define fdopen _fdopen
+ #define fgetchar _fgetchar
+ #define filelength _filelength
+ #define fileno _fileno
+ #define flushall _flushall
+ #define fputchar _fputchar
+ #define gcvt _gcvt
+ #define getch _getch
+ #define getche _getche
+ #define getcwd _getcwd
+ #define getpid _getpid
+ #define getw _getw
+ #define hypot _hypot
+ #define inp _inp
+ #define inpw _inpw
+ #define isascii __isascii
+ #define isatty _isatty
+ #define iscsym __iscsym
+ #define iscsymf __iscsymf
+ #define itoa _itoa
+ #define j0 _j0
+ #define j1 _j1
+ #define jn _jn
+ #define kbhit _kbhit
+ #define lfind _lfind
+ #define locking _locking
+ #define lsearch _lsearch
+ #define lseek _lseek
+ #define ltoa _ltoa
+ #define memccpy _memccpy
+ #define memicmp _memicmp
+ #define mkdir _mkdir
+ #define mktemp _mktemp
+ #define open _open
+ #define outp _outp
+ #define outpw _outpw
+ #define putch _putch
+ #define putenv _putenv
+ #define putw _putw
+ #define read _read
+ #define rmdir _rmdir
+ #define rmtmp _rmtmp
+ #define setmode _setmode
+ #define sopen _sopen
+ #define spawnl _spawnl
+ #define spawnle _spawnle
+ #define spawnlp _spawnlp
+ #define spawnlpe _spawnlpe
+ #define spawnv _spawnv
+ #define spawnve _spawnve
+ #define spawnvp _spawnvp
+ #define spawnvpe _spawnvpe
+ #define strcmpi _strcmpi
+ #define strdup _strdup
+ #define stricmp _stricmp
+ #define strlwr _strlwr
+ #define strnicmp _strnicmp
+ #define strnset _strnset
+ #define strrev _strrev
+ #define strset _strset
+ #define strupr _strupr
+ #define swab _swab
+ #define tell _tell
+ #define tempnam _tempnam
+ #define toascii __toascii
+ #define tzset _tzset
+ #define ultoa _ultoa
+ #define umask _umask
+ #define ungetch _ungetch
+ #define unlink _unlink
+ #define wcsdup _wcsdup
+ #define wcsicmp _wcsicmp
+ #define wcsicoll _wcsicoll
+ #define wcslwr _wcslwr
+ #define wcsnicmp _wcsnicmp
+ #define wcsnset _wcsnset
+ #define wcsrev _wcsrev
+ #define wcsset _wcsset
+ #define wcsupr _wcsupr
+ #define write _write
+ #define y0 _y0
+ #define y1 _y1
+ #define yn _yn
+
+ /* Disable deprecation warnings because MSVC8 seemingly thinks the ISO C++ conformant
+ * functions above are deprecated. */
+ #pragma warning (disable:4996)
+
+ #endif
+ #else
+ #define vsnprintf _vsnprintf
+ #endif
#endif
@@ -1950,6 +2078,8 @@ enum PlayerProp
Player_NewmenuPage, //int
};
+typedef void (*AUTHORIZEFUNC)(int player, const char *authstring);
+
typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/);
typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...);
typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...);
@@ -2027,6 +2157,8 @@ typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/);
typedef void (*PFN_REGISTERFUNCTION) (void * /*pfn*/, const char * /*desc*/);
typedef int (*PFN_AMX_PUSH) (AMX * /*amx*/, cell /*value*/);
typedef int (*PFN_SET_TEAM_INFO) (int /*player */, int /*teamid */, const char * /*name */);
+typedef void (*PFN_REG_AUTH_FUNC) (AUTHORIZEFUNC);
+typedef void (*PFN_UNREG_AUTH_FUNC) (AUTHORIZEFUNC);
extern PFN_ADD_NATIVES g_fn_AddNatives;
extern PFN_BUILD_PATHNAME g_fn_BuildPathname;
@@ -2092,6 +2224,8 @@ extern PFN_REQ_FNPTR g_fn_RequestFunction;
extern PFN_AMX_PUSH g_fn_AmxPush;
extern PFN_SET_TEAM_INFO g_fn_SetTeamInfo;
extern PFN_PLAYER_PROP_ADDR g_fn_PlayerPropAddr;
+extern PFN_REG_AUTH_FUNC g_fn_RegAuthFunc;
+extern PFN_UNREG_AUTH_FUNC g_fn_UnregAuthFunc;
#ifdef MAY_NEVER_BE_DEFINED
// Function prototypes for intellisense and similar systems
@@ -2154,6 +2288,8 @@ int MF_AmxPush (AMX *amx, cell *params) { }
int MF_AmxExec (AMX *amx, cell *retval, int idx) { }
int MF_SetPlayerTeamInfo (int id, int teamid, const char *teamname) { }
void * MF_PlayerPropAddr (int id, int prop) { }
+void MF_RegAuthFunc (AUTHORIZEFUNC fn) { }
+void MF_UnregAuthFunc (AUTHORIZEFUNC fn) { }
#endif // MAY_NEVER_BE_DEFINED
#define MF_AddNatives g_fn_AddNatives
@@ -2217,10 +2353,12 @@ void MF_LogError(AMX *amx, int err, const char *fmt, ...);
#define MF_GetPlayerEdict g_fn_GetPlayerEdict
#define MF_Format g_fn_Format
#define MF_RegisterFunction g_fn_RegisterFunction
-#define MF_RequestFunction g_fn_RequestFunction;
+#define MF_RequestFunction g_fn_RequestFunction
#define MF_AmxPush g_fn_AmxPush
#define MF_SetPlayerTeamInfo g_fn_SetTeamInfo
#define MF_PlayerPropAddr g_fn_PlayerPropAddr
+#define MF_RegAuthFunc g_fn_RegAuthFunc
+#define MF_UnregAuthFunc g_fn_UnregAuthFunc
#ifdef MEMORY_TEST
/*** Memory ***/
diff --git a/dlls/sockets/moduleconfig.h b/dlls/sockets/moduleconfig.h
index 154c220f..720eaa64 100755
--- a/dlls/sockets/moduleconfig.h
+++ b/dlls/sockets/moduleconfig.h
@@ -21,6 +21,19 @@
// metamod plugin?
// #define USE_METAMOD
+// use memory manager/tester?
+// note that if you use this, you cannot construct/allocate
+// anything before the module attached (OnAmxxAttach).
+// be careful of default constructors using new/malloc!
+// #define MEMORY_TEST
+
+// Unless you use STL or exceptions, keep this commented.
+// It allows you to compile without libstdc++.so as a dependency
+// #define NO_ALLOC_OVERRIDES
+
+// Uncomment this if you are using MSVC8 or greater and want to fix some of the compatibility issues yourself
+// #define NO_MSVC8_AUTO_COMPAT
+
// - AMXX Init functions
// Also consider using FN_META_*
// AMXX query
@@ -460,4 +473,3 @@
#endif // USE_METAMOD
#endif // __MODULECONFIG_H__
-
diff --git a/dlls/sockets/msvc8/sockets.vcproj b/dlls/sockets/msvc8/sockets.vcproj
new file mode 100644
index 00000000..cf38aaf5
--- /dev/null
+++ b/dlls/sockets/msvc8/sockets.vcproj
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dlls/sockets/sockets.cpp b/dlls/sockets/sockets.cpp
index 80d7cbe7..4a64e22d 100755
--- a/dlls/sockets/sockets.cpp
+++ b/dlls/sockets/sockets.cpp
@@ -194,7 +194,7 @@ static cell AMX_NATIVE_CALL socket_send2(AMX *amx, cell *params) /* 3 param */
// We get the string from amx
int len = params[3];
int socket = params[1];
- if (len > g_buflen)
+ if ((size_t)len > g_buflen)
{
delete [] g_buffer;
g_buffer = new char[len+1];
@@ -205,7 +205,7 @@ static cell AMX_NATIVE_CALL socket_send2(AMX *amx, cell *params) /* 3 param */
char *pBuffer = g_buffer;
while (len--)
- *pBuffer++ = *pData++;
+ *pBuffer++ = (char)*pData++;
// And send it to the socket
return send(socket, g_buffer, params[3], 0);
diff --git a/dlls/sockets/sockets.vcproj b/dlls/sockets/sockets.vcproj
index 76ecf098..1866f364 100755
--- a/dlls/sockets/sockets.vcproj
+++ b/dlls/sockets/sockets.vcproj
@@ -125,9 +125,6 @@
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-
-