Commit 259da9d1 authored by unknown's avatar unknown
Browse files

Merge rburnett@bk-internal.mysql.com:/home/bk/mysql-5.0

into  linux.site:/home/reggie/bk/mysql-5.0-new


server-tools/instance-manager/IMService.cpp:
  Auto merged
parents 2bd3255e f766a1dc
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ int HandleServiceOptions(Options options)
    else
    {
      log_info("Service failed to install");
      ret_val= -1;
      ret_val= 1;
    }
  }
  else if (options.remove_service)
@@ -62,10 +62,10 @@ int HandleServiceOptions(Options options)
    else
    {
      log_info("Service failed to remove");
      ret_val= -1;
      ret_val= 1;
    }
  }
  else
    return (int)winService.Init();
    ret_val= !winService.Init();
  return ret_val;
}
+7 −8
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ int HandleServiceOptions(Options options);

int main(int argc, char *argv[])
{
  int return_value= 1;
  init_environment(argv[0]);
  Options options;
  struct passwd *user_info;
@@ -90,11 +91,8 @@ int main(int argc, char *argv[])
  if ((user_info= check_user(options.user)))
  {
      if (set_user(options.user, user_info))
      {
        options.cleanup();
        goto err;
  }
  }

  if (options.run_as_service)
  {
@@ -105,17 +103,18 @@ int main(int argc, char *argv[])
  }
#else
#ifdef NDEBUG
  return HandleServiceOptions(options);
  return_value= HandleServiceOptions(options);
  goto err;   /* this is not always an error but we reuse the label */
#endif
#endif

  manager(options);
  options.cleanup();
  my_end(0);
  return 0;
  return_value= 0;

err:
  options.cleanup();
  my_end(0);
  return 1;
  return return_value;
}

/******************* Auxilary functions implementation **********************/
+31 −52
Original line number Diff line number Diff line
@@ -30,18 +30,20 @@
#define QUOTE2(x) #x
#define QUOTE(x) QUOTE2(x)

const char *default_password_file_name= QUOTE(DEFAULT_PASSWORD_FILE_NAME);
const char *default_log_file_name= QUOTE(DEFAULT_LOG_FILE_NAME);
#ifdef __WIN__
char windows_config_file[FN_REFLEN];

char Options::install_as_service;
char Options::remove_service;
char windows_config_file[FN_REFLEN];
char default_password_file_name[FN_REFLEN];
char default_log_file_name[FN_REFLEN];
const char *Options::config_file= windows_config_file;
#else
char Options::run_as_service;
const char *Options::user= 0;                   /* No default value */
#endif
const char *default_password_file_name= QUOTE(DEFAULT_PASSWORD_FILE_NAME);
const char *default_log_file_name= QUOTE(DEFAULT_LOG_FILE_NAME);
const char *Options::config_file= QUOTE(DEFAULT_CONFIG_FILE);
#endif
const char *Options::log_file_name= default_log_file_name;
const char *Options::pid_file_name= QUOTE(DEFAULT_PID_FILE_NAME);
const char *Options::socket_file_name= QUOTE(DEFAULT_SOCKET_FILE_NAME);
@@ -51,7 +53,7 @@ const char *Options::bind_address= 0; /* No default value */
uint Options::monitoring_interval= DEFAULT_MONITORING_INTERVAL;
uint Options::port_number= DEFAULT_PORT;
/* just to declare */
char **Options::saved_argv;
char **Options::saved_argv= NULL;

/*
  List of options, accepted by the instance manager.
@@ -262,30 +264,8 @@ int Options::load(int argc, char **argv)
  }

#ifdef __WIN__
  setup_windows_defaults(*argv);

  /*
    On Windows, there are two possibilities.  Either we are given
    a defaults file on the command line or we use the my.ini file
    that is in our app dir
  */
  if (Options::config_file == NULL)
  {
    char *filename;
    static const char default_win_config_file_name[]= "\\my.ini";

    if (!GetModuleFileName(NULL, windows_config_file,
                           sizeof(windows_config_file)))
  if (setup_windows_defaults())
    goto err;

    filename= strrchr(windows_config_file, "\\");
    /*
      Don't check for the overflow as strlen("\\my.ini") is less
      then strlen("mysqlmanager") (the binary name)
    */
    strcpy(filename, default_win_config_file_name);
    Options::config_file= windows_config_file;
  }
#endif

  /* config-file options are prepended to command-line ones */
@@ -305,33 +285,32 @@ int Options::load(int argc, char **argv)
void Options::cleanup()
{
  /* free_defaults returns nothing */
  if (Options::saved_argv != NULL)
    free_defaults(Options::saved_argv);
#ifdef __WIN__
  free((char*)default_password_file_name);
#endif
}

#ifdef __WIN__

char* change_extension(const char *src, const char *newext)
int Options::setup_windows_defaults()
{
  char *dot= (char*)strrchr(src, '.');
  if (!dot) return (char*)src;

  int newlen= dot-src+strlen(newext)+1;
  char *temp= (char*)malloc(newlen);
  bzero(temp, newlen);
  strncpy(temp, src, dot-src+1);
  strcat(temp, newext);
  return temp;
}
  if (!GetModuleFileName(NULL, default_password_file_name,
                         sizeof(default_password_file_name)))
    return 1;
  char *filename= strstr(default_password_file_name, ".exe");
  strcpy(filename, ".passwd");
 
void Options::setup_windows_defaults(const char *progname)
{
  Options::password_file_name= default_password_file_name=
    change_extension(progname, "passwd");
  Options::log_file_name= default_log_file_name=
    change_extension(progname, "log");
  if (!GetModuleFileName(NULL, default_log_file_name,
                         sizeof(default_log_file_name)))
    return 1;
  filename= strstr(default_log_file_name, ".exe");
  strcpy(filename, ".log");

  if (!GetModuleFileName(NULL, windows_config_file,
                         sizeof(windows_config_file)))
    return 1;
  char *slash= strrchr(windows_config_file, '\\');
  strcpy(slash, "\\my.ini");
  return 0;
}

#endif
+1 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ struct Options
  int load(int argc, char **argv);
  void cleanup();
#ifdef __WIN__
  void setup_windows_defaults(const char *progname);
  int setup_windows_defaults(const char *progname);
#endif
};