* Sebastian Hammer, Adam Dickmeiss
*
* $Log: mfile.c,v $
- * Revision 1.31 1999-02-18 12:49:33 adam
+ * Revision 1.33 1999-05-12 13:08:06 adam
+ * First version of ISAMS.
+ *
+ * Revision 1.32 1999/04/28 14:53:07 adam
+ * Fixed stupid bug regarding split-files.
+ *
+ * Revision 1.31 1999/02/18 12:49:33 adam
* Changed file naming scheme for register files as well as record
* store/index files.
*
assert (ma);
for (mnew = ma->mfiles; mnew; mnew = mnew->next)
if (!strcmp(name, mnew->name))
+ {
if (mnew->open)
abort();
else
break;
+ }
if (!mnew)
{
mnew = xmalloc(sizeof(*mnew));
/*
* Read one block from a metafile. Interface mirrors bfile.
*/
-int mf_read(MFile mf, int no, int offset, int num, void *buf)
+int mf_read(MFile mf, int no, int offset, int nbytes, void *buf)
{
int rd, toread;
if ((rd = file_position(mf, no, offset)) < 0)
+ {
if (rd == -2)
return 0;
else
exit(1);
- toread = num ? num : mf->blocksize;
+ }
+ toread = nbytes ? nbytes : mf->blocksize;
if ((rd = read(mf->files[mf->cur_file].fd, buf, toread)) < 0)
{
logf (LOG_FATAL|LOG_ERRNO, "mf_read: Read failed (%s)",
/*
* Write.
*/
-int mf_write(MFile mf, int no, int offset, int num, const void *buf)
+int mf_write(MFile mf, int no, int offset, int nbytes, const void *buf)
{
int ps, nblocks, towrite;
mf_dir *dp;
mf->files[mf->cur_file].blocks =
mf->files[mf->cur_file].bytes = 0;
mf->files[mf->cur_file].fd = -1;
- sprintf(tmp, "%s/%s.mf.%d", dp->name, mf->name,
+ sprintf(tmp, "%s/%s-%d.mf", dp->name, mf->name,
mf->files[mf->cur_file].number);
mf->files[mf->cur_file].path = xstrdup(tmp);
mf->no_files++;
nblocks * mf->blocksize;
}
}
- towrite = num ? num : mf->blocksize;
+ towrite = nbytes ? nbytes : mf->blocksize;
if (write(mf->files[mf->cur_file].fd, buf, towrite) < towrite)
{
logf (LOG_FATAL|LOG_ERRNO, "Write failed for file %s part %d",