Example #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]);
}
Example #2
0
/*
 * Verify game configuration is sane.
 * Return 0 on success, -1 on failure.
 */
int
ef_verify_config(void)
{
    int retval = 0;
    int i;

    for (i = 0; i < EF_MAX; i++) {
	if (!EF_IS_GAME_STATE(i) && !EF_IS_VIEW(i))
	    retval |= verify_table(i);
    }

    /* Special checks */
    retval |= verify_ship_chr();
    retval |= verify_plane_chr();
    retval |= verify_products();
    return retval;
}
Example #3
0
/*
 * Verify game state is sane.
 * Correct minor problems, but write corrections to backing files only
 * if @may_put is non-zero.
 * Return -1 if uncorrected problems remain, else 0.
 */
int
ef_verify_state(int may_put)
{
    int retval = 0;
    int i;

    for (i = 0; i < EF_MAX; i++) {
	if (EF_IS_GAME_STATE(i) || EF_IS_VIEW(i))
	    retval |= verify_table(i);
    }

    /* Special checks */
    retval |= verify_sectors(may_put);
    retval |= verify_planes(may_put);
    retval |= verify_lands(may_put);
    retval |= verify_nukes(may_put);
    return retval;
}
Example #4
0
static void
verify_fail(int type, int row, struct castr *ca, int idx, char *fmt, ...)
{
    int base = empfile[type].base < 0 ? type : empfile[type].base;
    va_list ap;

    fprintf(stderr, "%s %s uid %d",
	    EF_IS_GAME_STATE(base) ? "File" : "Config",
	    ef_nameof(type), row);
    if (ca) {
	fprintf(stderr, " field %s", ca->ca_name);
	if (CA_IS_ARRAY(ca))
	    fprintf(stderr, "(%d)", idx);
    }
    fprintf(stderr, ": ");
    va_start(ap, fmt);
    vfprintf(stderr, fmt, ap);
    va_end(ap);
    putc('\n', stderr);
}