* Added support for GIT hashes. (credits: Ind, Trojal)
Signed-off-by: Euphy <euphy@rathena.org>
This commit is contained in:
parent
3beb7833f9
commit
f919ac05af
@ -245,17 +245,49 @@ const char* get_svn_revision(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// fallback
|
// fallback
|
||||||
snprintf(svn_version_buffer, sizeof(svn_version_buffer), "Unknown");
|
svn_version_buffer[0] = UNKNOWN_VERSION;
|
||||||
return svn_version_buffer;
|
return svn_version_buffer;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// GIT path
|
||||||
|
#define GIT_ORIGIN "refs/remotes/origin/master"
|
||||||
|
|
||||||
|
// Grabs the hash from the last time the user updated their working copy (last pull)
|
||||||
|
const char *get_git_hash (void) {
|
||||||
|
static char GitHash[41] = ""; //Sha(40) + 1
|
||||||
|
FILE *fp;
|
||||||
|
|
||||||
|
if( GitHash[0] != '\0' )
|
||||||
|
return GitHash;
|
||||||
|
|
||||||
|
if( (fp = fopen(".git/"GIT_ORIGIN, "r")) != NULL ) {
|
||||||
|
char line[64];
|
||||||
|
char *rev = malloc(sizeof(char) * 50);
|
||||||
|
|
||||||
|
if( fgets(line, sizeof(line), fp) && sscanf(line, "%s", rev) )
|
||||||
|
snprintf(GitHash, sizeof(GitHash), "%s", rev);
|
||||||
|
|
||||||
|
free(rev);
|
||||||
|
fclose(fp);
|
||||||
|
} else {
|
||||||
|
GitHash[0] = UNKNOWN_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !(*GitHash) ) {
|
||||||
|
GitHash[0] = UNKNOWN_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GitHash;
|
||||||
|
}
|
||||||
|
|
||||||
/*======================================
|
/*======================================
|
||||||
* CORE : Display title
|
* CORE : Display title
|
||||||
* ASCII By CalciumKid 1/12/2011
|
* ASCII By CalciumKid 1/12/2011
|
||||||
*--------------------------------------*/
|
*--------------------------------------*/
|
||||||
static void display_title(void) {
|
static void display_title(void) {
|
||||||
//ClearScreen(); // clear screen and go up/left (0, 0 position in text)
|
const char* svn = get_svn_revision();
|
||||||
|
const char* git = get_git_hash();
|
||||||
|
|
||||||
ShowMessage("\n");
|
ShowMessage("\n");
|
||||||
ShowMessage(""CL_PASS" "CL_BOLD" "CL_PASS""CL_CLL""CL_NORMAL"\n");
|
ShowMessage(""CL_PASS" "CL_BOLD" "CL_PASS""CL_CLL""CL_NORMAL"\n");
|
||||||
@ -269,7 +301,10 @@ static void display_title(void) {
|
|||||||
ShowMessage(""CL_PASS" "CL_GREEN" http://rathena.org/board/ "CL_PASS""CL_CLL""CL_NORMAL"\n");
|
ShowMessage(""CL_PASS" "CL_GREEN" http://rathena.org/board/ "CL_PASS""CL_CLL""CL_NORMAL"\n");
|
||||||
ShowMessage(""CL_PASS" "CL_BOLD" "CL_PASS""CL_CLL""CL_NORMAL"\n");
|
ShowMessage(""CL_PASS" "CL_BOLD" "CL_PASS""CL_CLL""CL_NORMAL"\n");
|
||||||
|
|
||||||
ShowInfo("SVN Revision: '"CL_WHITE"%s"CL_RESET"'.\n", get_svn_revision());
|
if( svn[0] != UNKNOWN_VERSION )
|
||||||
|
ShowInfo("SVN Revision: '"CL_WHITE"%s"CL_RESET"'\n", svn);
|
||||||
|
else if( git[0] != UNKNOWN_VERSION )
|
||||||
|
ShowInfo("Git Hash: '"CL_WHITE"%s"CL_RESET"'\n", git);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Warning if executed as superuser (root)
|
// Warning if executed as superuser (root)
|
||||||
|
@ -16,6 +16,8 @@ extern char **arg_v;
|
|||||||
extern int buildbotflag;
|
extern int buildbotflag;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define UNKNOWN_VERSION '\x02'
|
||||||
|
|
||||||
/// @see E_CORE_ST
|
/// @see E_CORE_ST
|
||||||
extern int runflag;
|
extern int runflag;
|
||||||
extern char *SERVER_NAME;
|
extern char *SERVER_NAME;
|
||||||
@ -31,7 +33,8 @@ enum {
|
|||||||
extern char SERVER_TYPE;
|
extern char SERVER_TYPE;
|
||||||
|
|
||||||
extern int parse_console(const char* buf);
|
extern int parse_console(const char* buf);
|
||||||
extern const char *get_svn_revision(void);
|
const char *get_svn_revision(void);
|
||||||
|
const char *get_git_hash(void);
|
||||||
extern int do_init(int,char**);
|
extern int do_init(int,char**);
|
||||||
extern void set_server_type(void);
|
extern void set_server_type(void);
|
||||||
extern void do_abort(void);
|
extern void do_abort(void);
|
||||||
|
12
src/map/pc.c
12
src/map/pc.c
@ -1067,9 +1067,17 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
|
|||||||
|
|
||||||
if( !changing_mapservers ) {
|
if( !changing_mapservers ) {
|
||||||
|
|
||||||
if (battle_config.display_version == 1){
|
if (battle_config.display_version == 1) {
|
||||||
|
const char* svn = get_svn_revision();
|
||||||
|
const char* git = get_git_hash();
|
||||||
char buf[256];
|
char buf[256];
|
||||||
sprintf(buf, "SVN version: %s", get_svn_revision());
|
|
||||||
|
if( svn[0] != UNKNOWN_VERSION )
|
||||||
|
sprintf(buf,"SVN Revision: %s", svn);
|
||||||
|
else if( git[0] != UNKNOWN_VERSION )
|
||||||
|
sprintf(buf,"Git Hash: %s", git);
|
||||||
|
else
|
||||||
|
sprintf(buf,"Unknown Version");
|
||||||
clif_displaymessage(sd->fd, buf);
|
clif_displaymessage(sd->fd, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17105,12 +17105,12 @@ BUILDIN_FUNC(is_function) {
|
|||||||
* get_revision() -> retrieves the current svn revision (if available)
|
* get_revision() -> retrieves the current svn revision (if available)
|
||||||
**/
|
**/
|
||||||
BUILDIN_FUNC(get_revision) {
|
BUILDIN_FUNC(get_revision) {
|
||||||
const char * revision;
|
const char *svn = get_svn_revision();
|
||||||
|
|
||||||
if ( (revision = get_svn_revision()) != 0 )
|
if ( svn[0] != UNKNOWN_VERSION )
|
||||||
script_pushint(st,atoi(revision));
|
script_pushint(st,atoi(svn));
|
||||||
else
|
else
|
||||||
script_pushint(st,-1);//unknown
|
script_pushint(st,-1); //unknown
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user