Add support for overridable VM name
- A global variable added as vm_name - This variable can be filled with the `--vmname "Name"` or `-V "Name"` parameter. - If there are no such a parameter definied this variable will filled up with the directory name. - The Discord module displays this global variable, as VM name. - Various 86Box managers can use this feature to display fancy VM names, instead of GUID folder names. - This variable can be easily used later for adding cool things, like the VM name in title bar, etc.
This commit is contained in:
21
src/86box.c
21
src/86box.c
@@ -110,6 +110,7 @@ uint64_t unique_id = 0;
|
|||||||
uint64_t source_hwnd = 0;
|
uint64_t source_hwnd = 0;
|
||||||
#endif
|
#endif
|
||||||
char log_path[1024] = { '\0'}; /* (O) full path of logfile */
|
char log_path[1024] = { '\0'}; /* (O) full path of logfile */
|
||||||
|
char vm_name[1024] = { '\0'}; /* (O) display name of the VM */
|
||||||
|
|
||||||
/* Configuration values. */
|
/* Configuration values. */
|
||||||
int window_w; /* (C) window size and */
|
int window_w; /* (C) window size and */
|
||||||
@@ -417,6 +418,7 @@ usage:
|
|||||||
printf("-F or --fullscreen - start in fullscreen mode\n");
|
printf("-F or --fullscreen - start in fullscreen mode\n");
|
||||||
printf("-L or --logfile path - set 'path' to be the logfile\n");
|
printf("-L or --logfile path - set 'path' to be the logfile\n");
|
||||||
printf("-P or --vmpath path - set 'path' to be root for vm\n");
|
printf("-P or --vmpath path - set 'path' to be root for vm\n");
|
||||||
|
printf("-V or --vmname name - overrides the name of the running VM.\n");
|
||||||
printf("-S or --settings - show only the settings dialog\n");
|
printf("-S or --settings - show only the settings dialog\n");
|
||||||
printf("-N or --noconfirm - do not ask for confirmation on quit\n");
|
printf("-N or --noconfirm - do not ask for confirmation on quit\n");
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
@@ -446,6 +448,11 @@ usage:
|
|||||||
if ((c+1) == argc) goto usage;
|
if ((c+1) == argc) goto usage;
|
||||||
|
|
||||||
strcpy(path, argv[++c]);
|
strcpy(path, argv[++c]);
|
||||||
|
} else if (!strcasecmp(argv[c], "--vmname") ||
|
||||||
|
!strcasecmp(argv[c], "-V")) {
|
||||||
|
if ((c+1) == argc) goto usage;
|
||||||
|
|
||||||
|
strcpy(vm_name, argv[++c]);
|
||||||
} else if (!strcasecmp(argv[c], "--settings") ||
|
} else if (!strcasecmp(argv[c], "--settings") ||
|
||||||
!strcasecmp(argv[c], "-S")) {
|
!strcasecmp(argv[c], "-S")) {
|
||||||
settings_only = 1;
|
settings_only = 1;
|
||||||
@@ -551,6 +558,20 @@ usage:
|
|||||||
/* At this point, we can safely create the full path name. */
|
/* At this point, we can safely create the full path name. */
|
||||||
plat_append_filename(cfg_path, usr_path, p);
|
plat_append_filename(cfg_path, usr_path, p);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the current directory's name
|
||||||
|
*
|
||||||
|
* At this point usr_path is perfectly initialized.
|
||||||
|
* If no --vmname parameter specified we'll use the
|
||||||
|
* working directory name as the VM's name.
|
||||||
|
*/
|
||||||
|
if (strlen(vm_name) == 0)
|
||||||
|
{
|
||||||
|
plat_get_dirname(vm_name, usr_path);
|
||||||
|
p = plat_get_filename(vm_name);
|
||||||
|
strcpy(vm_name, p);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is where we start outputting to the log file,
|
* This is where we start outputting to the log file,
|
||||||
* if there is one. Create a little info header first.
|
* if there is one. Create a little info header first.
|
||||||
|
@@ -73,6 +73,7 @@ extern uint64_t unique_id;
|
|||||||
extern uint64_t source_hwnd;
|
extern uint64_t source_hwnd;
|
||||||
#endif
|
#endif
|
||||||
extern char log_path[1024]; /* (O) full path of logfile */
|
extern char log_path[1024]; /* (O) full path of logfile */
|
||||||
|
extern char vm_name[1024]; /* (O) display name of the VM */
|
||||||
|
|
||||||
|
|
||||||
extern int window_w, window_h, /* (C) window size and */
|
extern int window_w, window_h, /* (C) window size and */
|
||||||
|
@@ -68,7 +68,7 @@ void
|
|||||||
discord_update_activity(int paused)
|
discord_update_activity(int paused)
|
||||||
{
|
{
|
||||||
struct DiscordActivity activity;
|
struct DiscordActivity activity;
|
||||||
char config_name[1024], cpufamily[1024];
|
char cpufamily[1024];
|
||||||
char *paren;
|
char *paren;
|
||||||
|
|
||||||
if(discord_activities == NULL)
|
if(discord_activities == NULL)
|
||||||
@@ -78,16 +78,14 @@ discord_update_activity(int paused)
|
|||||||
|
|
||||||
memset(&activity, 0x00, sizeof(activity));
|
memset(&activity, 0x00, sizeof(activity));
|
||||||
|
|
||||||
plat_get_dirname(config_name, usr_path);
|
|
||||||
|
|
||||||
strncpy(cpufamily, cpu_f->name, sizeof(cpufamily) - 1);
|
strncpy(cpufamily, cpu_f->name, sizeof(cpufamily) - 1);
|
||||||
paren = strchr(cpufamily, '(');
|
paren = strchr(cpufamily, '(');
|
||||||
if (paren)
|
if (paren)
|
||||||
*(paren - 1) = '\0';
|
*(paren - 1) = '\0';
|
||||||
|
|
||||||
if (strlen(plat_get_filename(config_name)) < 100)
|
if (strlen(vm_name) < 100)
|
||||||
{
|
{
|
||||||
sprintf_s(activity.details, sizeof(activity.details), "Running \"%s\"", plat_get_filename(config_name));
|
sprintf_s(activity.details, sizeof(activity.details), "Running \"%s\"", vm_name);
|
||||||
sprintf_s(activity.state, sizeof(activity.state), "%s (%s/%s)", strchr(machine_getname(), ']') + 2, cpufamily, cpu_s->name);
|
sprintf_s(activity.state, sizeof(activity.state), "%s (%s/%s)", strchr(machine_getname(), ']') + 2, cpufamily, cpu_s->name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user