* Sebastian Hammer, Adam Dickmeiss
*
* $Log: extract.c,v $
- * Revision 1.9 1995-09-27 12:22:28 adam
+ * Revision 1.11 1995-09-28 12:10:31 adam
+ * Bug fixes. Field prefix used in queries.
+ *
+ * Revision 1.10 1995/09/28 09:19:41 adam
+ * xfree/xmalloc used everywhere.
+ * Extract/retrieve method seems to work for text records.
+ *
+ * Revision 1.9 1995/09/27 12:22:28 adam
* More work on extract in record control.
* Field name is not in isam keys but in prefix in dictionary words.
*
static void wordInit (RecWord *p)
{
p->attrSet = 1;
- p->attrUse = 1;
+ p->attrUse = 1016;
p->which = Word_String;
}
struct it_key key;
char x;
size_t i;
- char wordPrefix[8];
if (key_offset + 1000 > key_buf_size)
{
xfree (key_buf);
key_buf = new_key_buf;
}
- sprintf (wordPrefix, "%c%04d", p->attrSet + '0', p->attrUse);
- strcpy (key_buf + key_offset, wordPrefix);
- key_offset += strlen (wordPrefix);
+ key_offset += index_word_prefix (key_buf + key_offset,
+ p->attrSet, p->attrUse);
switch (p->which)
{
case Word_String:
key_offset++;
key.sysno = key_sysno;
- key.seqno = p->seqno;
+ key.seqno = p->seqno;
memcpy (key_buf + key_offset, &key, sizeof(key));
key_offset += sizeof(key);
}
sprintf (ext_res, "fileExtension.%s", ext);
if (!(file_type = res_get (common_resource, ext_res)))
return;
-
+ if (!(rt = recType_byName (file_type)))
+ return;
file_info = dict_lookup (file_idx, kname);
if (!file_info)
{
sysno = sysno_next++;
dict_insert (file_idx, kname, sizeof(sysno), &sysno);
lseek (sys_idx_fd, sysno * SYS_IDX_ENTRY_LEN, SEEK_SET);
+ write (sys_idx_fd, file_type, strlen (file_type)+1);
write (sys_idx_fd, kname, strlen(kname)+1);
}
else
logf (LOG_WARN|LOG_ERRNO, "open %s", fname);
return;
}
- if (!(rt = recType_byName (file_type)))
- return;
extractCtrl.inf = inf;
extractCtrl.subType = "";
extractCtrl.init = wordInit;