char const * strgeti(char const *s) { char *str = strnew(strlen(s)); char *p = str; const char *ret; for (; *s != '\0'; s++) *p++ = (isupper(*s)) ? tolower(*s) : *s; *p = '\0'; ret = strget(str); strfree(str); return ret; }
// --------------------------------------------------------------------------- // On ne stocke pas les champs et ils ne sont pas éditables // ----------- int bv310GridAIASCIIBaseAccessor::load_fields(){ field fp; fp.state=0; fp.state|=_kFieldEditLock_; fp.state|=_kFieldDeleteLock_; fp.state|=_kFieldMasked_; // Identifiant fp.offset=1; fp.fid=-1; fp.kind=_int; fp.size=sizeof(int); fp.len=15; fp.decs=0; strget(kMsgID,fp.name); fp.cnstrkind=0; strcpy(fp.defval,""); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); fp.offset++; fp.fid=-2; fp.kind=_char; fp.size=32; fp.len=30; fp.decs=0; strget(kMsgCreator,fp.name); fp.cnstrkind=0; strcpy(fp.defval,""); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); fp.offset++; fp.fid=-3; fp.kind=_date; fp.size=sizeof(double); fp.len=30; fp.decs=0; strget(kMsgDTOC,fp.name); fp.cnstrkind=0; strcpy(fp.defval,""); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); fp.offset++; fp.fid=-4; fp.kind=_char; fp.size=32; fp.len=30; fp.decs=0; strget(kMsgModifier,fp.name); fp.cnstrkind=0; strcpy(fp.defval,""); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); fp.offset++; fp.fid=-5; fp.kind=_date; fp.size=sizeof(double); fp.len=30; fp.decs=0; strget(kMsgDTOM,fp.name); fp.cnstrkind=0; strcpy(fp.defval,""); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); fp.offset++; fp.fid=-6; fp.kind=_int; fp.size=sizeof(int); fp.len=15; fp.decs=0; strget(kMsgState,fp.name); fp.cnstrkind=0; strcpy(fp.defval,"0"); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); fp.offset++; fp.fid=-7; fp.kind=_ivxrect; fp.size=sizeof(ivx_rect); fp.len=15; fp.decs=0; strget(kMsgBounds,fp.name); fp.cnstrkind=0; strcpy(fp.defval,""); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); fp.state=0; fp.state|=_kFieldEditLock_; fp.state|=_kFieldDeleteLock_; fp.offset++; fp.fid=-8; fp.kind=_ivxs2; fp.size=sizeof(DB_usz); fp.len=15; fp.decs=0; strget(kMsgGeom,fp.name); fp.cnstrkind=0; strcpy(fp.defval,""); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); fp.offset++; fp.fid=1; fp.kind=_char; fp.size=64; fp.len=50; fp.decs=0; strget(kMsgName,fp.name); fp.cnstrkind=0; strcpy(fp.defval,""); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); fp.offset++; fp.fid=2; fp.kind=_int; fp.size=sizeof(int); fp.len=15; fp.decs=0; strget(kMsgSubType,fp.name); fp.cnstrkind=0; strcpy(fp.defval,"1"); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); fp.offset++; fp.fid=3; fp.kind=_int; fp.size=sizeof(int); fp.len=15; fp.decs=0; strget(kMsgColor,fp.name); fp.cnstrkind=0; strcpy(fp.defval,"1"); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); fp.offset++; fp.fid=8; fp.kind=_int; fp.size=sizeof(int); fp.len=2; fp.decs=0; strget(kMsgFlag,fp.name); fp.cnstrkind=0; strcpy(fp.defval,"0"); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); fp.offset++; fp.fid=9; fp.kind=_double; fp.size=sizeof(double); fp.len=30; fp.decs=6; strcpy(fp.name,"VALUE"); fp.cnstrkind=0; strcpy(fp.defval,"0"); fp.index=fp.offset; fp.tbl_id=0; _elts.add(&fp); return(noErr); }
static int cifs_idmap(const key_serial_t key, const char *key_descr) { int rc = 1; char *sidstr = NULL; struct cifs_sid sid; struct cifs_uxid cuxid; /* * Use winbind to convert received string to a SID and lookup * name and map that SID to an uid. If either of these * function calls return with an error, return an error the * upcall caller. Otherwise instanticate a key using that uid. * * The same applies to SID and gid mapping. */ sidstr = strget(key_descr, "os:"); if (sidstr) { rc = str_to_sid(plugin_handle, sidstr, &sid); if (rc) { syslog(LOG_DEBUG, "Unable to convert owner string %s " "to SID: %s", key_descr, plugin_errmsg); goto cifs_idmap_ret; } rc = sids_to_ids(plugin_handle, &sid, 1, &cuxid); if (rc || (cuxid.type != CIFS_UXID_TYPE_UID && cuxid.type != CIFS_UXID_TYPE_BOTH)) { syslog(LOG_DEBUG, "Unable to convert %s to " "UID: %s", key_descr, plugin_errmsg); rc = rc ? rc : -EINVAL; goto cifs_idmap_ret; } rc = keyctl_instantiate(key, &cuxid.id.uid, sizeof(uid_t), 0); if (rc) syslog(LOG_ERR, "%s: key inst: %s", __func__, strerror(errno)); goto cifs_idmap_ret; } sidstr = strget(key_descr, "gs:"); if (sidstr) { rc = str_to_sid(plugin_handle, sidstr, &sid); if (rc) { syslog(LOG_DEBUG, "Unable to convert group string %s " "to SID: %s", key_descr, plugin_errmsg); goto cifs_idmap_ret; } rc = sids_to_ids(plugin_handle, &sid, 1, &cuxid); if (rc || (cuxid.type != CIFS_UXID_TYPE_GID && cuxid.type != CIFS_UXID_TYPE_BOTH)) { syslog(LOG_DEBUG, "Unable to convert %s to " "GID: %s", key_descr, plugin_errmsg); rc = rc ? rc : -EINVAL; goto cifs_idmap_ret; } rc = keyctl_instantiate(key, &cuxid.id.gid, sizeof(gid_t), 0); if (rc) syslog(LOG_ERR, "%s: key inst: %s", __func__, strerror(errno)); goto cifs_idmap_ret; } sidstr = strget(key_descr, "oi:"); if (sidstr) { rc = str_to_uint(sidstr, (unsigned int *)&cuxid.id.uid); if (rc) { syslog(LOG_ERR, "Unable to convert %s to uid: %s", sidstr, strerror(rc)); goto cifs_idmap_ret; } cuxid.type = CIFS_UXID_TYPE_UID; syslog(LOG_DEBUG, "SID: %s, uid: %u", sidstr, cuxid.id.uid); rc = ids_to_sids(plugin_handle, &cuxid, 1, &sid); if (rc || sid.revision == 0) { syslog(LOG_DEBUG, "uid %u to SID error: %s", cuxid.id.uid, plugin_errmsg); goto cifs_idmap_ret; } rc = keyctl_instantiate(key, &sid, sizeof(struct cifs_sid), 0); if (rc) syslog(LOG_ERR, "%s: key inst: %s", __func__, strerror(errno)); goto cifs_idmap_ret; } sidstr = strget(key_descr, "gi:"); if (sidstr) { rc = str_to_uint(sidstr, (unsigned int *)&cuxid.id.gid); if (rc) { syslog(LOG_ERR, "Unable to convert %s to gid: %s", sidstr, strerror(rc)); goto cifs_idmap_ret; } cuxid.type = CIFS_UXID_TYPE_GID; syslog(LOG_DEBUG, "SID: %s, gid: %u", sidstr, cuxid.id.gid); rc = ids_to_sids(plugin_handle, &cuxid, 1, &sid); if (rc || sid.revision == 0) { syslog(LOG_DEBUG, "gid %u to SID error: %s", cuxid.id.gid, plugin_errmsg); goto cifs_idmap_ret; } rc = keyctl_instantiate(key, &sid, sizeof(struct cifs_sid), 0); if (rc) syslog(LOG_ERR, "%s: key inst: %s", __func__, strerror(errno)); goto cifs_idmap_ret; } syslog(LOG_DEBUG, "Invalid key: %s", key_descr); cifs_idmap_ret: return rc; }