int Xmemory(void) { if (cmd.argc >= 2) { int i; /* parse the memory specs */ for (i = 1; i < cmd.argc; i++) { char *p; long long addr, size; p = cmd.argv[i]; size = strtoll(p + 1, &p, 0); if (*p && *p == '@') addr = strtoll(p + 1, NULL, 0); else addr = 0; if (addr == 0 && (*p != '@' || size == 0)) { printf("bad language\n"); return 0; } else { switch (cmd.argv[i][0]) { case '-': mem_delete(addr, addr + size); break; case '+': mem_add(addr, addr + size); break; default : printf("bad OP\n"); return 0; } } } } dump_biosmem(NULL); return 0; }
int Xmemory(void) { if (cmd.argc >= 2) { int i; /* parse the memory specs */ for (i = 1; i < cmd.argc; i++) { char *p; long long addr, size; p = cmd.argv[i]; size = strtoll(p + 1, &p, 0); /* Size the size */ switch(*p) { case 'G': size *= 1024; case 'M': size *= 1024; case 'K': size *= 1024; p++; } /* Handle (possibly non-existant) address part */ switch(*p) { case '@': addr = strtoll(p + 1, NULL, 0); break; /* Adjust address if we don't need it */ default: if (cmd.argv[i][0] == '=') addr = -1; else addr = 0; } if (addr == 0 || size == 0) { printf ("bad language\n"); return 0; } else { switch (cmd.argv[i][0]) { case '-': mem_delete(addr, addr + size); break; case '+': mem_add(addr, addr + size); break; case '=': mem_limit(size); break; default : printf ("bad OP\n"); return 0; } } } } dump_biosmem(NULL); return 0; }