static PyObject * get_extension (certificate_x509 *self, PyObject *args, PyObject *keywords) { const char *oid = NULL; const char *name = NULL; static char *keywordlist[] = { "oid", "name", NULL }; if (!PyArg_ParseTupleAndKeywords (args, keywords, "|ss", keywordlist, &oid, &name)) { return NULL; } char *value = NULL; size_t length; ASN1_OBJECT *obj = NULL; if (name != NULL) { obj = get_object_by_name (name); } else { obj = get_object_by_oid (oid); } if (obj == NULL) { Py_INCREF (Py_None); return Py_None; } length = get_extension_by_object (self->x509, obj, &value); ASN1_OBJECT_free (obj); if (value != NULL) { PyObject *extension = PyString_FromStringAndSize (value, length); free (value); return extension; } else { Py_INCREF (Py_None); return Py_None; } }
bool load_player(actor_t *p, FILE *f) { struct player_save_struct s; int i; char str[6]; fread(str, sizeof(char), 6, f); if(strcmp(str, "PLAYER")) { fprintf(stderr, "DEBUG: %s:%d - str != PLAYER in load_player!\n", __FILE__, __LINE__); fprintf(stderr, "read %s instead of PLAYER?!\n", str); return false; } printf("loadplayerstart\n"); fread(&s, sizeof(struct player_save_struct), 1, f); p->x = s.x; p->y = s.y; p->oldx = s.oldx; p->oldy = s.oldy; p->px = s.px; p->py = s.py; p->viewradius = s.viewradius; strcpy(p->name, s.name); p->hp = s.hp; p->maxhp = s.maxhp; p->xp = s.xp; p->ac = s.ac; p->attr = s.attr; p->attrmod = s.attrmod; p->level = s.level; p->race = s.race; p->cla = s.cla; p->flags = s.flags; p->speed = s.speed; p->worldview = s.worldview; p->wvfactor = s.wvfactor; p->kills = s.kills; for(i = 0; i < MAX_SKILLS; i++) p->skill[i] = s.skill[i]; p->inventory = load_inventory(f); if(!p->inventory) { fprintf(stderr, "DEBUG: %s:%d - load_inventory for player failed!\n", __FILE__, __LINE__); return false; } if(s.weapon) { p->weapon = get_object_by_oid(p->inventory, s.weapon); if(!p->weapon) { fprintf(stderr, "DEBUG: %s:%d - get object by oid failed!\n", __FILE__, __LINE__); return false; } } else { p->weapon = NULL; } for(i = 0; i < WEAR_SLOTS; i++) { if(s.w[i]) { p->w[i] = get_object_by_oid(p->inventory, s.w[i]); if(!p->w[i]) { printf("get_object_by_oid failed!\n"); return false; } } else { p->w[i] = NULL; } } //for(i = 0; i < MAX_TEMP_EFFECTS; i++) //p->temp[i] = s.temp[i]; printf("loadplayerend\n"); return true; }
bool load_monster(monster_t *m, level_t *l, FILE *f) { char str[7]; bool flag; monster_t mdef; int oid; fread(str, sizeof(char), 7, f); if(strncmp(str, "MONSTER", 7)) { fprintf(stderr, "NO THIS IS NOT A MONSTER"); fprintf(stderr, "load_monster! STR=%s", str); return false; } if(!m) m = gtmalloc(sizeof(monster_t)); fread(&m->id, sizeof(short), 1, f); fread(&m->mid, sizeof(int), 1, f); fread(&m->y, sizeof(short), 1, f); fread(&m->x, sizeof(short), 1, f); fread(&m->hp, sizeof(int), 1, f); fread(&m->ac, sizeof(short), 1, f); fread(&m->goalx, sizeof(short), 1, f); fread(&m->goaly, sizeof(short), 1, f); fread(&m->attrmod, sizeof(sattr_t), 1, f); fread(&flag, sizeof(bool), 1, f); if(flag) m->attacker = player; else m->attacker = NULL; fread(&flag, sizeof(bool), 1, f); if(flag) m->inventory = load_inventory(f); mdef = get_monsterdef(m->id); m->oldx = mdef.oldx; m->oldy = mdef.oldy; m->viewradius = mdef.viewradius; strcpy(m->name, mdef.name); m->maxhp = mdef.maxhp; m->xp = mdef.xp; m->attr = mdef.attr; m->level = mdef.level; m->race = mdef.race; m->cla = mdef.cla; //m->w = mdef.w; // implement this when monsters can wield and wear stuff! m->flags = mdef.flags; m->c = mdef.c; m->speed = mdef.speed; m->ai = mdef.ai; l->c[m->y][m->x].monster = m; m->prev = l->monsters; m->head = l->monsters; m->next = l->monsters->next; l->monsters->next = m; if(m->next) m->next->prev = m; fread(&oid, sizeof(int), 1, f); if(oid) m->weapon = get_object_by_oid(m->inventory, oid); else m->weapon = NULL; // add loading attacker, wear_t, etc. return true; }