static void create_mysql_upgrade_info_file(void) { FILE *out; char upgrade_info_file[FN_REFLEN]= {0}; if (get_upgrade_info_file_name(upgrade_info_file)) return; /* Could not get filename => skip */ if (!(out= my_fopen(upgrade_info_file, O_TRUNC | O_WRONLY, MYF(0)))) { fprintf(stderr, "Could not create the upgrade info file '%s' in " "the MySQL Servers datadir, errno: %d\n", upgrade_info_file, errno); return; } /* Write new version to file */ fputs(MYSQL_SERVER_VERSION, out); my_fclose(out, MYF(0)); /* Check if the upgrad_info_file was properly created/updated It's not a fatal error -> just print a message if it fails */ if (!upgrade_already_done()) fprintf(stderr, "Could not write to the upgrade info file '%s' in " "the MySQL Servers datadir, errno: %d\n", upgrade_info_file, errno); return; }
static int upgrade_already_done(void) { FILE *in; char upgrade_info_file[FN_REFLEN]= {0}; char buf[sizeof(MYSQL_SERVER_VERSION)+1]; char *res; if (get_upgrade_info_file_name(upgrade_info_file)) return 0; /* Could not get filename => not sure */ if (!(in= my_fopen(upgrade_info_file, O_RDONLY, MYF(0)))) return 0; /* Could not open file => not sure */ /* Read from file, don't care if it fails since it will be detected by the strncmp */ memset(buf, 0, sizeof(buf)); res= fgets(buf, sizeof(buf), in); my_fclose(in, MYF(0)); if (!res) return 0; /* Could not read from file => not sure */ return (strncmp(res, MYSQL_SERVER_VERSION, sizeof(MYSQL_SERVER_VERSION)-1)==0); }
static int upgrade_already_done(void) { FILE *in; char upgrade_info_file[FN_REFLEN]= {0}; char buf[sizeof(MYSQL_SERVER_VERSION)+1]; if (get_upgrade_info_file_name(upgrade_info_file)) return 0; /* Could not get filename => not sure */ if (!(in= my_fopen(upgrade_info_file, O_RDONLY, MYF(0)))) return 0; /* Could not open file => not sure */ bzero(buf, sizeof(buf)); if (!fgets(buf, sizeof(buf), in)) { /* Ignore, will be detected by strncmp() below */ } my_fclose(in, MYF(0)); return (strncmp(buf, MYSQL_SERVER_VERSION, sizeof(MYSQL_SERVER_VERSION)-1)==0); }