/** 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)); }
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; }
/* * 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); }