Not adding to 0.3-branch yet in case it needs some tweaks.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2170 c06c8d41-db1a-0410-9941-cceddc491573
ZIFFVCQ72K35WGIUMZYN3KOXIUXF2CNXWKG6ZWEZ6LT3NSF3XOQAC HXCUOTXRRUHNEBWC54HLSOKI5PGFQTAQU67ODHQ5HKG5FHIPOHFQC ZHH4MGCGXMAKIZ4GVA6Q4MS3IWJTGNMWLPSAG2MWLQS2G3WU5YCAC FYD4A5TIETIV2ZLFYWGHXANU6WQFKMVREHM7OZY2TAXSBMMCDLJAC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC RC6L3CIBLJEH4GWRFD7UQNGI6PZT74FRUVOYHSAN2XCC74NZUASQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC 7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC KR655YT3I3U5DMN5NS3FPUGMDNT4BI56K3SFF2FNJ77C45NFKL5AC Y56C5OMUQ5XF2G6DKDV4R5MED44UOIUPTBBQVWQBUHYIXYA5MOZAC I7QLYOTE6DLQZM7YWUWYLKHRJRB2A3STQ42ALSRGQICEWKD2QTEQC J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC NXVPOFYKJFWQWKVPQUMWH2Y2KJEZX44BUOBFJ4JD4KFGPEGYHG4QC 65CM2EZCAFFBWLAYZ7ALBV3BQKNZCYOHYIFY46KU7BZL3LHV36JAC RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC R5Q2OJMXNVK5RPXIKLTHHAOP67XOBB44AZKKZ2TOI3USPL6HACXAC WQU4ORZR2C52JNRTH5DN4XKNLEC4Q4SUZ7MLO6MBU6SSL2YXLSOAC std::vector<std::string> database_find_keys(DBM *database,const std::string ®ex,bool ignore_case){text_pattern tpat(regex, ignore_case);std::vector<std::string> matches;datum dbKey = dbm_firstkey(database);while (dbKey.dptr != NULL){std::string key((const char *)dbKey.dptr, dbKey.dsize);if (tpat.matches(key))matches.push_back(key);dbKey = dbm_nextkey(database);}return (matches);}
if (regex == ""){mpr("Description must contain at least one non-space.");return;}// Try to get an exact match first.std::string key = regex;std::string desc = getLongDescription(key);if (desc == ""){std::vector<std::string> matches = getLongDescriptionByRegex(regex);if (matches.size() == 0){mprf("Nothing matches '%s'", buf);return;}else if (matches.size() > 1){std::string prefix = "No exact match for '" +regex + "', possible matches are: ";// Use mpr_comma_separated_list() because the list// might be *LONG*.mpr_comma_separated_list(prefix, matches, " and ", ", ",MSGCH_PLAIN);return;}else{// Only one match, use that.key = matches[0];desc = getLongDescription(key);}}key = uppercase_first(key);key += "$$";clrscr();print_description(key + desc);}