diff --git a/sourcepawn/compiler/sc1.c b/sourcepawn/compiler/sc1.c index 69fe95ba..fff4be76 100644 --- a/sourcepawn/compiler/sc1.c +++ b/sourcepawn/compiler/sc1.c @@ -143,6 +143,7 @@ static void addwhile(int *ptr); static void delwhile(void); static int *readwhile(void); static void inst_datetime_defines(void); +static void inst_binary_name(char *binfname); enum { TEST_PLAIN, /* no parentheses */ @@ -332,6 +333,7 @@ int pc_compile(int argc, char *argv[]) #if !defined NO_DEFINE delete_substtable(); inst_datetime_defines(); + inst_binary_name(binfname); #endif resetglobals(); pstructs_free(); @@ -561,6 +563,35 @@ int pc_addconstant(char *name,cell value,int tag) return 1; } +static void inst_binary_name(char *binfname) +{ + size_t i, len; + char *binptr; + + binptr = NULL; + len = strlen(binfname); + for (i = len - 1; i >= 0 && i < len; i--) + { + if (binfname[i] == '/' +#if defined WIN32 || defined _WIN32 + || binfname[i] == '\\' +#endif + ) + { + binptr = &binfname[i + 1]; + break; + } + } + + if (binptr == NULL) + { + binptr = binfname; + } + + insert_subst("__BINARY_PATH__", binfname, 15); + insert_subst("__BINARY_NAME__", binptr, 15); +} + static void inst_datetime_defines(void) { char date[64];