Example #1
0
int
fetch_propvals(dbref obj, const char *dir)
{
    PropPtr p, pptr;
    int cnt = 0;
    char buf[BUFFER_LEN];
    char name[BUFFER_LEN];

    p = first_prop_nofetch(obj, dir, &pptr, name, sizeof(name));
    while (p) {
        cnt = (cnt || propfetch(obj, p));
        if (PropDir(p) || (PropFlags(p) & PROP_DIRUNLOADED)) {
            strcpyn(buf, sizeof(buf), dir);
            strcatn(buf, sizeof(buf), name);
            strcatn(buf, sizeof(buf), "/");
            if (PropFlags(p) & PROP_DIRUNLOADED) {
                SetPFlags(p, (PropFlags(p) & ~PROP_DIRUNLOADED));
                getproperties(input_file, obj, buf);
            }
            fetch_propvals(obj, buf);
        }
        p = next_prop(pptr, p, name, sizeof(name));
    }
    return cnt;
}
Example #2
0
int
size_properties(dbref player, int load)
{
#ifdef DISKBASE
    if (load) {
        fetchprops(player);
        fetch_propvals(player, "/");
    }
#endif
    return size_proplist(DBFETCH(player)->properties);
}
Example #3
0
void
putprops_copy(FILE * f, dbref obj)
{
    char buf[BUFFER_LEN * 3];
    char *ptr;
    FILE *g;

    if (DBFETCH(obj)->propsmode != PROPS_UNLOADED) {
        if (fetch_propvals(obj, "/")) {
            fseek(f, 0L, 2);
        }
        putproperties(f, obj);
        return;
    }
    if (db_conversion_flag) {
        if (fetchprops_priority(obj, 1, NULL) || fetch_propvals(obj, "/")) {
            fseek(f, 0L, 2);
        }
        putproperties(f, obj);
        return;
    }
    g = input_file;
    putstring(f, "*Props*");
    if (DBFETCH(obj)->propsfpos) {
        fseek(g, DBFETCH(obj)->propsfpos, 0);
        ptr = fgets(buf, sizeof(buf), g);
        if (!ptr)
            abort();
        for (;;) {
            ptr = fgets(buf, sizeof(buf), g);
            if (!ptr)
                abort();
            if (!string_compare(ptr, "*End*\n"))
                break;
            fputs(buf, f);
        }
    }
    putstring(f, "*End*");
}