From 430a860927c4ff849e96e19ae045d2ef48de8c20 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Thu, 10 Apr 2008 00:10:45 +0000 Subject: [PATCH] added amb1558 - __BINARY_PATH__ and __BINARY_FILE__ --HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%402015 --- sourcepawn/compiler/sc1.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) 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];