void execute(const char *cmdline, enum kernel_type type)
{
- com32sys_t ireg;
- const char *p, * const *pp;
- char *q = __com32.cs_bounce;
- const char *kernel, *args;
+ com32sys_t ireg;
+ const char *p, *const *pp;
+ char *q = __com32.cs_bounce;
+ const char *kernel, *args;
- memset(&ireg, 0, sizeof ireg);
+ memset(&ireg, 0, sizeof ireg);
- kernel = q;
- p = cmdline;
- while ( *p && !my_isspace(*p) ) {
- *q++ = *p++;
- }
- *q++ = '\0';
+ kernel = q;
+ p = cmdline;
+ while (*p && !my_isspace(*p)) {
+ *q++ = *p++;
+ }
+ *q++ = '\0';
- args = q;
- while ( *p && my_isspace(*p) )
- p++;
+ args = q;
+ while (*p && my_isspace(*p))
+ p++;
- strcpy(q, p);
+ strcpy(q, p);
- if (kernel[0] == '.' && type == KT_NONE) {
- /* It might be a type specifier */
- enum kernel_type type = KT_NONE;
- for (pp = kernel_types; *pp; pp++, type++) {
- if (!strcmp(kernel+1, *pp)) {
- execute(p, type); /* Strip the type specifier and retry */
- }
+ if (kernel[0] == '.' && type == KT_NONE) {
+ /* It might be a type specifier */
+ enum kernel_type type = KT_NONE;
+ for (pp = kernel_types; *pp; pp++, type++) {
+ if (!strcmp(kernel + 1, *pp)) {
+ execute(p, type); /* Strip the type specifier and retry */
+ }
+ }
}
- }
- if (type == KT_LOCALBOOT) {
- ireg.eax.w[0] = 0x0014; /* Local boot */
- ireg.edx.w[0] = strtoul(kernel, NULL, 0);
- } else {
- if (type < KT_KERNEL)
- type = KT_KERNEL;
+ if (type == KT_LOCALBOOT) {
+ ireg.eax.w[0] = 0x0014; /* Local boot */
+ ireg.edx.w[0] = strtoul(kernel, NULL, 0);
+ } else {
+ if (type < KT_KERNEL)
+ type = KT_KERNEL;
- ireg.eax.w[0] = 0x0016; /* Run kernel image */
- ireg.esi.w[0] = OFFS(kernel);
- ireg.ds = SEG(kernel);
- ireg.ebx.w[0] = OFFS(args);
- ireg.es = SEG(args);
- ireg.edx.l = type-KT_KERNEL;
- /* ireg.ecx.l = 0; */ /* We do ipappend "manually" */
- }
+ ireg.eax.w[0] = 0x0016; /* Run kernel image */
+ ireg.esi.w[0] = OFFS(kernel);
+ ireg.ds = SEG(kernel);
+ ireg.ebx.w[0] = OFFS(args);
+ ireg.es = SEG(args);
+ ireg.edx.l = type - KT_KERNEL;
+ /* ireg.ecx.l = 0; *//* We do ipappend "manually" */
+ }
- __intcall(0x22, &ireg, NULL);
+ __intcall(0x22, &ireg, NULL);
- /* If this returns, something went bad; return to menu */
+ /* If this returns, something went bad; return to menu */
}