CHISE_Attribute_Table*
CHISE_Attribute_Table_open (const unsigned char *db_dir,
- const char *encoding, const char *feature,
+ const char *category,
+ const char *key_type, const char *name,
DBTYPE real_subtype,
u_int32_t accessmask, int modemask);
unsigned char *name))
{
unsigned char *dname
- = alloca (strlen (ds->location) + sizeof ("/system-char-id") + 1);
+ = alloca (strlen (ds->location) + sizeof ("/character/feature") + 1);
DIR *dir;
struct dirent *de;
strcpy (dname, ds->location);
- strcat (dname, "/system-char-id");
+ strcat (dname, "/character/feature");
if ( (dir = opendir (dname)) == NULL)
return -1;
CHISE_DS *ds = feature->ds;
feature->db
- = CHISE_Attribute_Table_open (ds->location,
- "system-char-id", feature->name,
+ = CHISE_Attribute_Table_open (ds->location, "character",
+ "feature", feature->name,
ds->subtype, access, ds->modemask);
if (feature->db == NULL)
return -1;
CHISE_DS *ds = ccs->ds;
ccs->db
- = CHISE_Attribute_Table_open (ds->location,
- ccs->name, "system-char-id",
+ = CHISE_Attribute_Table_open (ds->location, "character",
+ "by_feature", ccs->name,
ds->subtype, access, ds->modemask);
if (ccs->db == NULL)
return -1;
CHISE_Attribute_Table*
CHISE_Attribute_Table_open (const unsigned char *db_dir,
- const char *encoding, const char *feature,
+ const char *category,
+ const char *key_type, const char *name,
DBTYPE real_subtype,
u_int32_t accessmask, int modemask)
{
DB* dbase;
int status;
- int len, flen, i;
+ int len, name_len, i;
int size;
char *db_file_name, *sp;
struct stat statbuf;
mkdir (db_dir, modemask);
len = strlen (db_dir);
- flen = strlen (feature);
- size = len + strlen (encoding) + flen * 3 + 4;
+ name_len = strlen (name);
+ size = len + strlen (category) + strlen (key_type) + name_len * 3 + 5;
db_file_name = alloca (size);
strcpy (db_file_name, db_dir);
if (db_file_name[len - 1] != '/')
db_file_name[len++] = '/';
db_file_name[len] = '\0';
}
- strcat (db_file_name, encoding);
+ strcat (db_file_name, category);
if ( (accessmask & DB_CREATE) && stat (db_file_name, &statbuf) )
mkdir (db_file_name, modemask);
+ strcat (db_file_name, "/");
+ strcat (db_file_name, key_type);
+ if ( (accessmask & DB_CREATE) && stat (db_file_name, &statbuf) )
+ mkdir (db_file_name, modemask);
strcat (db_file_name, "/");
- /* strcat (db_file_name, feature); */
+
+ /* strcat (db_file_name, name); */
sp = &db_file_name[strlen (db_file_name)];
- for (i = 0; i < flen; i++)
+ for (i = 0; i < name_len; i++)
{
- int c = feature[i];
+ int c = name[i];
if ( (c == '/') || (c == '%') )
{