#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/param.h>
#include <sys/sysctl.h>
#include <sys/utsname.h>
#include "defs.h"
#include "md.h"
#include "msg_defs.h"
#include "menu_defs.h"
void
md_init(void)
{
}
void
md_init_set_status(int flags)
{
struct utsname instsys;
(void)flags;
uname(&instsys);
if (strstr(instsys.version, "(ATARITT"))
set_kernel_set(SET_KERNEL_1);
else if (strstr(instsys.version, "(FALCON"))
set_kernel_set(SET_KERNEL_2);
else if (strstr(instsys.version, "(SMALL030"))
set_kernel_set(SET_KERNEL_3);
else if (strstr(instsys.version, "(HADES"))
set_kernel_set(SET_KERNEL_4);
else if (strstr(instsys.version, "(MILAN-ISAIDE"))
set_kernel_set(SET_KERNEL_5);
else if (strstr(instsys.version, "(MILAN-PCIIDE"))
set_kernel_set(SET_KERNEL_6);
}
bool
md_get_info(struct install_partition_desc *install)
{
set_default_sizemult(pm->diskdev, MEG, pm->sectorsize);
return true;
}
int
md_make_bsd_partitions(struct install_partition_desc *install)
{
msg_fmt_display(MSG_infoahdilabel, "%s", pm->diskdev);
if (ask_noyes(NULL)) {
run_program(RUN_DISPLAY, "ahdilabel /dev/r%sc", pm->diskdev);
}
return make_bsd_partitions(install);
}
bool
md_check_partitions(struct install_partition_desc *install)
{
return true;
}
bool
md_pre_disklabel(struct install_partition_desc *install,
struct disk_partitions *parts)
{
return true;
}
bool
md_post_disklabel(struct install_partition_desc *install,
struct disk_partitions *parts)
{
return true;
}
int
md_post_newfs(struct install_partition_desc *install)
{
static const int mib[2] = {CTL_HW, HW_MODEL};
size_t len;
char *cpu_model;
int milan;
char bootpath[MAXPATHLEN];
int rv;
milan = 0;
sysctl(mib, 2, NULL, &len, NULL, 0);
cpu_model = malloc(len);
sysctl(mib, 2, cpu_model, &len, NULL, 0);
if (strstr(cpu_model, "Milan") != NULL)
milan = 1;
free(cpu_model);
msg_fmt_display(MSG_dobootblks, "%s", pm->diskdev);
snprintf(bootpath, sizeof(bootpath), "/usr/mdec/%s/boot.atari",
milan ? "milan" : "std");
rv = cp_to_target(bootpath, "/");
if (rv != 0)
return rv;
rv = run_program(RUN_DISPLAY, "/usr/mdec/installboot -v%s /dev/r%sc",
milan ? "m" : "", pm->diskdev);
return rv;
}
int
md_post_extract(struct install_partition_desc *install, bool upgrade)
{
return 0;
}
void
md_cleanup_install(struct install_partition_desc *install)
{
#ifndef DEBUG
enable_rc_conf();
#endif
}
int
md_pre_update(struct install_partition_desc *install)
{
return 1;
}
int
md_update(struct install_partition_desc *install)
{
md_post_newfs(install);
return 1;
}
int
md_pre_mount(struct install_partition_desc *install, size_t ndx)
{
return 0;
}
bool
md_parts_use_wholedisk(struct disk_partitions *parts)
{
return parts_use_wholedisk(parts, 0, NULL);
}
#ifdef HAVE_GPT
bool
md_gpt_post_write(struct disk_partitions *parts, part_id root_id,
bool root_is_new, part_id efi_id, bool efi_is_new)
{
return true;
}
#endif