Ejemplo n.º 1
0
/**
  Add quotes if the path has spaces in it.

  @param[in]  path  The Windows path to examine.

  @returns string containing excaped quotes if spaces found in path
*/
static char *add_quotes(const char *path)
{
  char windows_cmd_friendly[FN_REFLEN];

  if (has_spaces(path))
    snprintf(windows_cmd_friendly, sizeof(windows_cmd_friendly),
             "\"%s\"", path);
  else
    snprintf(windows_cmd_friendly, sizeof(windows_cmd_friendly),
             "%s", path);
  return my_strdup(windows_cmd_friendly, MYF(MY_FAE));
}
Ejemplo n.º 2
0
static int get_default_values()
{
  char tool_path[FN_REFLEN];
  char defaults_cmd[FN_REFLEN];
  char defaults_file[FN_REFLEN];
  char line[FN_REFLEN];
  int error= 0;
  int ret= 0;
  FILE *file= 0;

  memset(tool_path, 0, FN_REFLEN);
  if ((error= find_tool("my_print_defaults" FN_EXEEXT, tool_path)))
    goto exit;
  else
  {
    if ((error= make_tempfile(defaults_file, "txt")))
      goto exit;

#ifdef __WIN__
    {
      char *format_str= 0;
  
      if (has_spaces(tool_path) || has_spaces(defaults_file))
        format_str = "\"%s mysqld > %s\"";
      else
        format_str = "%s mysqld > %s";
  
      snprintf(defaults_cmd, sizeof(defaults_cmd), format_str,
               add_quotes(tool_path), add_quotes(defaults_file));
      if (opt_verbose)
      {
        printf("# my_print_defaults found: %s\n", tool_path);
      }
    }
#else
    snprintf(defaults_cmd, sizeof(defaults_cmd),
             "%s mysqld > %s", tool_path, defaults_file);
#endif

    /* Execute the command */
    if (opt_verbose)
    {
      printf("# Command: %s\n", defaults_cmd);
    }
    error= run_command(defaults_cmd, "r");
    if (error)
    {
      fprintf(stderr, "ERROR: my_print_defaults failed. Error code: %d.\n",
              ret);
      goto exit;
    }
    /* Now open the file and read the defaults we want. */
    file= fopen(defaults_file, "r");
    while (fgets(line, FN_REFLEN, file) != NULL)
    {
      char *value= 0;

      if ((opt_datadir == 0) && ((value= get_value(line, "--datadir"))))
      {
        opt_datadir= my_strdup(value, MYF(MY_FAE));
      }
      if ((opt_basedir == 0) && ((value= get_value(line, "--basedir"))))
      {
        opt_basedir= my_strdup(value, MYF(MY_FAE));
      }
      if ((opt_plugin_dir == 0) && ((value= get_value(line, "--plugin_dir"))))
      {
        opt_plugin_dir= my_strdup(value, MYF(MY_FAE));
      }
      if ((opt_plugin_ini == 0) && ((value= get_value(line, "--plugin_ini"))))
      {
        opt_plugin_ini= my_strdup(value, MYF(MY_FAE));
      }
    }
  }
exit:
  if (file)
  {
    fclose(file);
    /* Remove file */
    my_delete(defaults_file, MYF(0));
  }
  return error;
}
Ejemplo n.º 3
0
/*
 * verify that the robot cfg is valid
 */
static int
verify_rc_robot_cfg(
    rc_robot_cfg_t *rb,	/* robot to check */
    sqm_lst_t *libs)		/* list of library_t to check against */
{

    Trace(TR_DEBUG, "verifying rc_robot_cfg");

    if (libs == NULL) {
        samerrno = SE_UNABLE_TO_CHECK_ROBOT_WITH_MCF;

        /* Unable to check robot against mcf */
        snprintf(samerrmsg, MAX_MSG_LEN,
                 GetCustMsg(SE_UNABLE_TO_CHECK_ROBOT_WITH_MCF));

        Trace(TR_DEBUG, "verifying rc_robot_cfg failed: %s",
              samerrmsg);
        return (-1);
    }

    if (rb->rc_params.hwm != int_reset &&
            rb->rc_params.change_flag & RC_hwm) {
        if (rb->rc_params.hwm < 0 || rb->rc_params.hwm > 100) {

            samerrno = SE_VALUE_OUT_OF_RANGE;
            /* %s %d is out range %d %d */
            snprintf(samerrmsg, MAX_MSG_LEN,
                     GetCustMsg(SE_VALUE_OUT_OF_RANGE), "hwm",
                     rb->rc_params.hwm, 0, 100);

            Trace(TR_DEBUG, "verifying rc_robot_cfg failed: %s",
                  samerrmsg);
            return (-1);
        }
    }

    if (rb->rc_params.mingain != int_reset &&
            rb->rc_params.change_flag & RC_mingain) {

        if (rb->rc_params.mingain < 0 || rb->rc_params.mingain > 100) {
            samerrno = SE_VALUE_OUT_OF_RANGE;

            /* %s %d is out range %d %d */
            snprintf(samerrmsg, MAX_MSG_LEN,
                     GetCustMsg(SE_VALUE_OUT_OF_RANGE), "mingain",
                     rb->rc_params.mingain, 0, 100);

            Trace(TR_DEBUG, "verifying rc_robot_cfg failed: %s",
                  samerrmsg);
            return (-1);
        }
    }

    if (rb->rc_params.data_quantity != fsize_reset &&
            rb->rc_params.change_flag & RC_data_quantity) {
        if (rb->rc_params.data_quantity > FSIZE_MAX) {
            samerrno = SE_VALUE_OUT_OF_RANGE;

            /* "%s %d is out range %d %d" */
            snprintf(samerrmsg, MAX_MSG_LEN,
                     GetCustMsg(SE_VALUE_OUT_OF_RANGE), "mingain",
                     rb->rc_params.mingain, 0, FSIZE_MAX);

            Trace(TR_DEBUG, "verifying rc_robot_cfg failed: %s",
                  samerrmsg);
            return (-1);
        }
    }


    if (*rb->rc_params.email_addr != char_array_reset &&
            rb->rc_params.change_flag & RC_email_addr) {
        if (has_spaces(rb->rc_params.email_addr, "email_addr") != 0) {
            Trace(TR_DEBUG, "verifying rc_robot_cfg failed: %s",
                  samerrmsg);
            return (-1);
        }
    }

    if (rb->rc_params.vsncount != int_reset &&
            rb->rc_params.change_flag & RC_vsncount) {

        if (rb->rc_params.vsncount < 0) {
            samerrno = SE_INVALID_VALUE;

            /* %s %d is invalid */
            snprintf(samerrmsg, MAX_MSG_LEN,
                     GetCustMsg(SE_INVALID_VALUE),
                     "vsncount", rb->rc_params.vsncount, 0);

            Trace(TR_DEBUG, "verifying rc_robot_cfg failed: %s",
                  samerrmsg);
            return (-1);
        }
    }

    Trace(TR_DEBUG, "verified rc_robot_cfg");
    return (0);
}