Esempio n. 1
0
/* Extended dump command */
int
xdump(void)
{
    char *p;
    char buf[1024];
    struct xdstr xd;
    struct natstr *natp;
    int type;
    int meta = 0;

    p = getstarg(player->argp[1], "Table name, or meta? ", buf);
    if (p && strcmp(p, "meta") == 0) {
	meta = 1;
	p = getstarg(player->argp[2], "Table name? ", buf);
    }
    if (!p || !*p)
	return RET_SYN;

    xdinit(&xd, player->cnum, 0, 0, pr);
    natp = getnatp(player->cnum);
    type = isdigit(p[0]) ? atoi(p) : ef_byname(p);
    if (type < 0 || type >= EF_MAX)
	return RET_SYN;
    if (meta)
	return xdmeta(&xd, type);
    if ((EF_IS_GAME_STATE(type) || EF_IS_VIEW(type))
	&& !(natp->nat_stat == STAT_ACTIVE || player->god)) {
	pr("Access to table %s denied\n", ef_nameof(type));
	return RET_FAIL;
    }
    return xditem(&xd, type, player->argp[2]);
}
Esempio n. 2
0
File: main.c Progetto: MarginC/kame
int
pain(void *aio)
{
	long int io = 0;
	caddr_t kp;
	int ksize;
	struct stat sb;

	extern u_int16_t timelimit;

	xdinit(aio);

	if (consinit(NULL))		/* Initialize fresh console */
		return(1);

#ifdef PPCBOOTER
	printf("NetBSD/AmigaPPC " NETBSD_VERS " Primary Bootstrap %s\n", bootprog_rev);
#else
	printf("NetBSD/Amiga " NETBSD_VERS " Primary Bootstrap %s\n", bootprog_rev);
#endif
	io = open("/boot.amiga", 0);	/* Try /boot.amiga first */
	if (io < 0) {
		io = open("/boot", 0);	/* Fallback to /boot */
		if (io < 0) {
			io = open("/boot.ami", 0);	/* 8.3 name? */
			if (io < 0) {
				goto err;
			}
		}
	}

	/* get size of file? */
	if (fstat(io, &sb))
		goto err;
	/* allocate memory for file */
	ksize = sb.st_size;
	if (ksize == 0) {
		printf("Bad size, using 32K\n");	/* XXX debug? */
		ksize = 32 * 1024;
	}
	kp = alloc(ksize);
	if (kp == 0) {
		errno = ENOMEM;
		goto err;
	}
	/* read file into memory */
	if (read(io, kp, ksize) != ksize) {
		errno = ENOEXEC;
		goto freeall;
	}
	/* validate boot: DOS\0 and checksum? */
	if (strcmp(kp, "DOS") != 0 &&
	    (*(u_int32_t *)kp) != 0x424f4f54) {
		errno = ENOEXEC;
		goto freeall;
	}
	/* call boot+12(aio, sysbase); */
	close(io);
	startit(kp, aio, ConsoleBase);
	errno = -1;

freeall:
	free(kp, ksize);
err:
	printf("Error %ld\n", (long)errno);
	close(io);

	timelimit = 10;
	(void)getchar();
	consclose();
	return 1;
}